微服务监控技术
SpringBoot Actuator的具体使用
在被监控的微服务导入依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
|
配置application.yml文件
1 2 3 4 5 6 7 8 9 10
| management: endpoints: web: exposure: include: '*' base-path: /boot
endpoint: health: show-details: always
|
启动微服务后访问
启动后访问`http://微服务ip:端口号/boot/,返回正确数据表示测试通过
端点分类
| 地址 |
描述 |
| /beans |
显示所有的Spring bean列表 |
| /caches |
显示所有的缓存相关信息 |
| /scheduledtasks |
显示所有的定时任务相关信息 |
| /loggers |
显示所有的日志相关信息 |
| /configprops |
显示所有的配置信息 |
| /env |
显示所有的环境变量信息 |
| /mappings |
显示所有控制器相关信息 |
| /info |
显示自定义用户信息配置 |
| /metrics |
显示应用指标相关信息 |
| /health |
显示健康检查状态信息,up表示成功 down表示失败 |
| /threaddump |
显示程序线程的信息 |
整合图形化SpringBoot Admin:SBA
上面我们讲了Spring Boot Actuator , 可以通过http协议获取系统状态信息 , 但是返回的是JSON格式数据, 看起来不太方面, 而且还需要记忆路径, 比较麻烦 , Spring Boot Admin 给我们提供了更加友好的可视化界 面来查看这些信息 ! Spring Boot Admin 是一个开源社区项目,用于管理和监控 SpringBoot 应用程序。
应用程序作为Spring Boot Admin Client 向 Spring Boot Admin Server 注册 , Client 会定时向 Server 发送数据, Server 使用友好界面展 示数据。

搭建 Admin 服务器端
-
创建模块 springboot-admin-server,导入依赖:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>3.0.4</version> </dependency> </dependencies>
|
2.在主启动类上加@EnableAdminServer 注解
1 2 3 4 5 6 7 8
| @SpringBootApplication @EnableAdminServer public class AdminApplication {
public static void main(String[] args) { SpringApplication.run(AdminApplication.class,args); } }
|
搭建Admin客户端
在各个微服务(Admin客户端)整合AdminServer
第一步:导入Admin客户端依赖信息
1 2 3 4 5
| <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>3.0.4</version> </dependency>
|
第二步:向 admin-server 注册的地址为 http://localhost:8080,最后暴露自己的 actuator 的所有端口信息
1 2 3 4 5
| spring: boot: admin: client: url: http://localhost:8080
|
第三步:启动服务器端和客户端进行测试:
动态日志监控及级别调整
在微服务的src/main/resources目录下创建logback-spring.xml文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <?xml version="1.0" encoding="UTF-8"?> <configuration>
<contextName>logback</contextName>
<property name="log.path" value="D://logs//spzx-cloud-user//logs" />
<property name="CONSOLE_LOG_PATTERN" value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/>
<property name="FILE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" />
<property name="ENCODING" value="UTF-8" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${log.path}//log.log</file> <append>true</append> <encoder> <pattern>%date{yyyy-MM-dd HH:mm:ss} %msg%n</pattern> <charset>${ENCODING}</charset> </encoder> </appender>
<root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root>
</configuration>
|
第二步:在微服务的application.yml文件中配置:
1 2 3 4
| management: endpoint: logfile: external-file: D://logs/spzx-cloud-user/info.log
|
第三步:再次访问Admin服务器端:即可看到实时监控日志、并可以调节日志的级别。