actuator是一些用于管理,监控项目的工具,产生的内容由于是JSON串,在实际中基本用不到。
引用原著定义:
Additional features to help you monitor and manage your application when you push it to production
它的知识点分为四部分。
第一部分,搭建环境,即引入actuator的jar包。
第二部分,使用 & 配置actuator。
第三部分,原理,查看actuator是如何实现的。
第四部分,实现自定义actuator,略。
1、搭建环境
第一步,引入spring-boot-starter-actuator依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
第二步,启用actuator,默认是禁止的。
# 开启所有 management.endpoint.enabled-by-default=true。 # 开启某个 management.endpoint.<id>.enabled=true
第三步,验证,启动项目,访问actuator/{id},例如actuator/beans
2、配置
2.1 安全
略。原著中使用spring-security设置请求url需要的角色。
2.2 缓存
配置management.endpoint.<id>.cache.time-to-live,它的值为请求的缓存时间。
示例:management.endpoint.beans.cache.time-to-live=10s
2.3 跨域
跨域的配置与CrosFilter的属性基本是相同的。命名空间为management.endpoints.web.cors,具体配置项如下:
- allow-origins, allow-origins-patterns:允许的域名或相关的正则表达式。
- allow-methods:允许的请求方式,GET,POST等等。
- allow-credentials:是否需要证书。
- allow-headers,exposed-headers:自定义请求头部和响应头部中携带的信息。
- max-age:在pre-flight模式下,在跨域请求时,会预先请求一次,它用于设置预先请求的失效时间。默认为1800s。
2.4 参数 & url
参数:从请求url地址中的query parameter或者是请求消息体中的json。复杂对象无法转换。否则需要添加@EndpointConverter。
请求url:management.endpoints.web.base-path,默认值为/actuator。
2.5 服务器
命名空间为management.server。配置项如下:
port:端口号。配置为-1, 禁用actuator功能。
address:IP地址,默认为localhost。
ssl.XX:配置ssl相关的功能。
3、原理
其他都是类似的,这里只介绍了Health。
3.1. 信息类
3.1.1 health
通过HealthContributorRegistry收集各类health信息,每种类型实现XXHealthIndicator接口,它的health()方法返回类型为Health对象。
spring内置了很多HealthIndicator,参考官网
配置项:命名空间为management.endpoint.health。
show-components:是否显示组件名称,never从不,when-authorized需要认证,always总是。默认值never
show-details:是否显示细节,never, when-authorized, always。默认值never。
enabled:启动/禁用
probes.enabled:是否启用探针。
roles:所需要的角色名称,为spring security中存在的角色。
status.order:返回的类型,up(正常),DOWN(无法启动),fatal(严重错误),UNKNOW(未知),out-of-service(无服务)。
status.http-mapping:发生上诉情况时,返回的状态码,例如status.http-mapping.fatal=503。
示例如下:
3.1.2 info
与health类似,区别在于收集的是InfoContributor。spring内置了三种实现类。
Environment:需要在配置文件中存在info.xx,例如info.key=value。注:需要加载application.properties,在application.yaml存在时不生效。
Git:classpath路径下存在git.properties时,生效。
Build:classpath路径下存在META-INF/build-info.properties时,生效。
自定义:实现InfoContributor接口,并注入实现类。
3.1.3 beans
显示spring中所有注入的beans。
3.1.4 conditions
显示所有的@conditionXX注解。
3.1.5 configprops
显示所有@ConfigurationProperties中的配置项。
3.1.6 env
显示系统所有的配置项。
3.2 功能类
Metrics, audit, http tracing, processing monitoring不常用,略。
3.2.1 日志
获取所有日志级别信息,/actuator/logger。可以POST请求,发送到某个具体的类下,参数为{“configuredLevel”:”INFO || DEBUG等”}
3.3 性能
3.3.1 heapdump
生成heapdump文件。
3.3.2 threaddump
返回线程快照。示例如下: