Spring-Boot-Actuator如何实现系统监控与诊断?
摘要:1、Actuator 分布式导致部署服务的增多,运维人员压力倍增,传统的运维方法已经不适应相应的变化,需要对应的监控措施来确保衡量服务的运行情况。actuator为Spring Boot提供监控。 启动Spring-Boot-Actuato
1、Actuator
分布式导致部署服务的增多,运维人员压力倍增,传统的运维方法已经不适应相应的变化,需要对应的监控措施来确保衡量服务的运行情况。actuator为Spring Boot提供监控。
启动Spring-Boot-Actuator
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
开启对应端点访问
注:初始状态下,只开放了health和info,如需要访问需要开启其他端点。
#开启所有结点
management.endpoints.web.exposure.include=*
#指定开启的结点,多个结点间,号隔开
#management.endpoints.web.exposure.include=info,conditions
#设置端点访问路径前缀,默认是actuator
#访问具体端点方法:http://localhost:8080/{management.endpoints.web.base-path}/{端点名}
#management.endpoints.web.base-path=/actuator
注:部分端点SpringBoot1.0和2.0版本命名方法不一样,具体差异可在网上查阅。
本文以SpringBoot-2.3.4.RELEASE为例。
1.1 原生端点
应用配置类
获取应用中加载的应用配置、环境变量等配置信息。
度量指标类
获取程序运行过程中的各种度量指标,例如内存信息,线程池等,请求统计等度量信息。
操作控制类
提供对应应用的关闭等功能。
1.1.1 应用配置类
autoconfig/conditions
autocofing/condifiton表示同一个含义,只不过一个是1.0中的路径,一个是2.中的路径。
autoconfig/conditions包含应用加载时匹配的自动化配置相关信息,主要包含三部分:
1.positiveMatches,包含了那些自动化配置生效了,是满足什么条件生效。
2.positiveMatches,那些自动化配置没有生效,是未满足那些条件。
3.unconditionalClasses,加载了那些无条件自动配置类。
通过访问``http://localhost:8080/actuator/autoconfig`获取对应配置信息(1.0版本访问路径)。
如果是2.0版本的需要将autoconfig修改为conditions。
beans
beans包含了应用中所有加载的bean信息,主要包含:
1. single,bean的作用域。
2. alias,bean的别名。
3. resource,bean的class文件位置。
4. dependencies,bena的依赖。
5. type,bean的具体java类型。
configprops
configprops可以获取配置文件相关配置信息。
例如配置了
management.endpoints.web.exposure.include=configprops
对应配置中include为configprops
配置了
management.endpoints.web.exposure.include=*
对应配置信息中include为*
env
env可以获取一些环境信息,例如java相关参数,server.port端口等信息。
mappings
mappings可以返回所有地址映射信息。
上图中有actuator相关的端点的路径映射信息,也有自行添加的控制器中的hello/wrold映射路径信息和具体类信息。
info
info端点会返回一些自定义信息。一般没有自定义信息的情况下会返回{}。
自定义配置的信息需要以info开头,才能被该端点返回,返回信息会去掉info前缀。
例如在配置文件中配置了自定义信息:
info.msg=my msg
test.ss=123
请求info对应返回信息。
{"msg":"my msg"}
1.1.2 度量指标类
引用配置类端点提供的信息大多是加载时就固定的信息。但度量指标类是记录应用运行过程中的信息是动态的。度量指标提供了许多运行中信息,便于对其分析。
