Springboot Actuator是一个用于监控和管理Springboot应用程序的框架,它提供了许多端点(endpoint)来监控应用程序的健康状况、性能、配置和日志等信息,并且可以通过HTTP、JMX和SSH等多种方式访问这些端点。
如果使用的IDE是IntelliJ IDEA,运行Springboot应用后在面板上进入Actuator启用一下,然后重启即可
或者在pom中手动引入Actuator
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
我在之前user-service项目中引入Actuator
集成完之后,访问http://localhost:8081/actuator(应用地址+/actuator)可以看到actuator对外公开的端点,不出意外的化,应该只有2到3个,我只有self, health和health-path
通常情况下,我们需要获取更多的端点和信息,因此要在项目的配置文件(properties,yaml,yml)中开启
# Actuator配置
management.endpoints.web.exposure.include=*
我这里方便起见,开放了全部端点。
实际情景下,应该有选择性的开放端点,可以include部分端点,也可以先include全部端点,再exclude掉不需要开放的端点。
直接访问http://localhost:8081/actuator/health,只能获得如下信息:
{
"status": "UP"
}
获取更详细的信息,我们需要做如下设置:
management.endpoint.health.show-details=always
然后就能获取详情的健康信息:
{
"status": "UP",
"components": {
"db": {
"status": "UP",
"details": {
"database": "MySQL",
"validationQuery": "isValid()"
}
},
"diskSpace": {
"status": "UP",
"details": {
"total": 304217063424,
"free": 62942789632,
"threshold": 10485760,
"exists": true
}
},
"ping": {
"status": "UP"
}
}
}
在配置文件中配置info信息:
info:
app:
name: ${spring.application.name}
author: evanpatchouli
frame: springboot
java:
source: @java.version@
target: @java.version@
直接访问http://localhost:8081/actuator/info,是看不到info的,需要做如下配置:
management.info.env.enabled=true
这样就能获取到自定义的info:
{
"app": {
"name": "user-service",
"author": "evanpatchouli",
"frame": "springboot",
"java": {
"source": "17.0.6",
"target": "17.0.6"
}
}
}
如果需要通过actuator终止应用,需要做如下配置:
management.info.env.enabled=true
然后POST访问http://localhost:8081/actuator/shutdown即可
在实际情景下,如需开启shutdown,必须要做一定的鉴权防护,以防止被恶意攻击者关停服务。
本文只对Actuator做基本的介绍,更多的设置和应用请参考官方手册以及其它文章的讲解。