springboot整合actuator-2
书库链接: http://know.mobile.himygirl.cn/topic/spring/springboot-actuator/springboot-actuator2.html
一 配置项
# 默认只公开了/health和/info端点,星号暴露所有端点
management.endpoints.web.exposure.include="*"
# 显式启用/shutdown端点
management.endpoint.shutdown.enabled=true
# 要公开所有(已启用)网络端点除env端点之外
management.endpoints.web.exposure.exclude=env
# 设置管理服务的上下文路径,默认值为 ""
management.server.servlet.context-path
# 设置管理服务的端口
management.server.port
# 设置管理端点的基本路径,默认/actuator
management.endpoints.web.base-path
1 springboot1.x与springboot2.x的区别
springboot1.x
针对endpoints的端点启用配置如下,不同于exposure.include
和exposure.exclude
management:
metrics:
tags:
application: ${spring.application.name}
endpoints:
prometheus:
sensitive: false
metrics:
sensitive: false
env:
sensitive: false
trace:
sensitive: false
如果想和springboot1.x
版本的路径一样直接访问 http://localhost:8080/health
, 只需要配置 management.endpoints.web.base-path=/
配置很多,具体可以参考 spring-boot-actuator-autoconfigure.jar 中的 spring-configuration-metadata.json 文件
如果设置成以下配置,访问端点的路径就变成了: http://localhost:8088/management/monitor
management:
server:
servlet:
context-path: "/management"
port: 8088
endpoints:
web:
exposure:
include: "*"
base-path: "/monitor"
endpoint:
shutdown:
enabled: true
2 更改info 端口暴露的信息
info:
app:
name: "@DeanKano"
encoding: '@project.build.sourceEncoding@'
java:
source: '@1.8.0@'
target: '@1.8.0@'
/actuator
在management.endpoints.web.base-path
的根目录中有一个映射,它提供了到所有暴露端点的链接
二 endpoints端点详解
根据端点的作用来说,原生端点分为三大类:
- 应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与应用密切相关的配置类信息
- 度量指标类:获取应用程序运行过程中用于监控的度量指标,比如:内存信息、线程池信息、HTTP请求统计等。
- 操作控制类:提供了对应用的关闭等操作类功能
1 应用配置类
1.1 /beans:该端点用来获取应用上下文中创建的所有Bean
如上示例中:
- 外层的key是Bean的名称
- scope:Bean的作用域
- type:Bean的Java类型
- reource:class文件的具体路径
- dependencies:依赖的Bean名称
1.2 /configprops:该端点用来获取应用中配置的属性信息
- prefix属性代表了属性的配置前缀
- properties代表了各个属性的名称和值
1.3 /env:该端点与/configprops不同,它用来获取应用所有可用的环境属性报告
包括:环境变量、JVM属性、应用的配置配置、命令行中的参数。其中也包括了应用还没有没有使用的配置。
所以它可以帮助我们方便地看到当前应用可以加载的配置信息,并配合@ConfigurationProperties
注解将它们
引入到我们的应用程序中来进行使用
1.4 /mappings:该端点用来返回所有Spring MVC的控制器映射关系报告
1.5 /info:该端点用来返回一些应用自定义的信息。默认情况下,该端点只会返回一个空的json内容
{
"app": {
"name": "@DeanKano",
"encoding": "0.0.1-SNAPSHOT",
"java": {
"source": "@1.8.0@",
"target": "@1.8.0@"
}
}
}
2 操作控制类
控制类端点拥有更强大的控制能力,如果要使用它们的话,需要通过属性来配置开启。
在原生端点中,只提供了一个用来关闭应用的端点:/shutdown
在配置management.endpoint.shutdown.enabled=true
后,只需访问/shutdown
端点就能实现远程关闭应用操作。
我们需要对其加入一定的保护机制,比如:定制Actuator的端点路径、整合Spring Security进行安全校验等
3 度量指标类
上面我们所介绍的应用配置类端点所提供的信息可以说是一个静态报告
。
而度量指标类端点提供的报告内容则是动态变化的
,这些端点提供了应用程序在运行过程中的一些快照信息,
比如:内存使用情况、HTTP请求统计、外部资源指标等。
3.1 /metrics:该端点用来返回当前应用的各类重要度量指标
内存信息、线程信息、垃圾回收信息等,可以通过actuator/metrics/{name} 来获取详细信息;
例如:/actuator/metrics/jvm.buffer.memory.used
{
"name": "jvm.buffer.memory.used",
"description": "An estimate of the memory that the Java virtual machine is using for this buffer pool",
"baseUnit": "bytes",
"measurements": [
{
"statistic": "VALUE",
"value": 65536
}
],
"availableTags": [
{
"tag": "application",
"values": [
"rangers-sample"
]
},
{
"tag": "id",
"values": [
"direct",
"mapped"
]
}
]
}
[!info] 可以整合其他监控类插件,拓展该功能,例如:prometheus
3.2 /health:它用来获取应用的各类健康指标信息
在spring-boot-starter-actuator
模块中自带实现了一些常用资源的健康指标检测器。这些检测器都通过HealthIndicator
接口实现,并且会根据依赖关系的引入实现自动化装配,
比如用于检测磁盘的DiskSpaceHealthIndicator
、检测DataSource连接是否可用的DataSourceHealthIndicator
等
3.3 /httptrace: 该端点用来返回基本的HTTP跟踪信息
默认情况下,跟踪信息的存储采用org.springframework.boot.actuate.trace.InMemoryTraceRepository
实现的内存方式,始终保留最近的100条请求记录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nLwBYQ2-1618920892835)(/asset/img/spring/actuator-httptrace.png)]