Spring Boot Actuator应用监控组件
Endpoints组件简介
Spring Boot Actuator Endpoints 可以让开发者监控或者动态地改变应用。Spring Boot Actuator 内置了一系列的端点,也可以自定义端点。默认情况下,Spring Boot Actuator 暴露了 health 和 info 两个端点。例如,访问 health 端点可以进行应用健康状态查询,如果应用健康,则返回 UP,如果不健康,则返回 DOWN。通常情况下使用 HTTP 的方式访问端点信息,默认的访问路径是 /actuator。如果访问 health 端点,则使用 /actuator/health 即可。如表1 所示为 Spring Boot 提供的一些端点。
Endpoint ID | 说 明 |
---|---|
auditevents | 展示应用暴露的审计事件 |
beans | 展示应用完整的Spring Beans列表 |
caches | 暴露可用的caches |
conditions | 展示需要配置类的条件信息 |
configprops | 配置属性集合 |
env | 环境属性 |
flyway | 数据库迁移路径信息 |
health | 应用的健康状态 |
httptrace | 最近100个HTTP请求的响应信息 |
info | 应用的基本信息 |
integrationgraph | 应用集成信息 |
loggers | 应用的logger信息 |
metrics | metrics统计信息 |
mappings | @RequestMapping路径 |
scheduledtasks | 定时任务信息 |
sessions | session信息 |
shutdown | 关闭应用 |
startup | 启动信息 |
threaddump | 线程信息 |
如果程序是 Web 应用,还可以使用下面的端点,如表 2 所示。
Endpoint ID | 说 明 |
---|---|
heapdump | 展示堆栈信息 |
jolokia | 暴露JMX Beans信息 |
logfile | 日志信息 |
prometheus | Prometheus 抓取的metrics指标 |
默认情况下,除了 shutdown 端点之外,其他端点都是启用的。如果想要启用 shutdown 端点,可以通过配置 management.endpoint.<id>.enabled 属性来实现。具体配置如下:
management:
endpoint:
shutdown:
enabled: true
management:
endpoints:
enabled-by-default: false
endpoint:
info:
enabled: true
management:
endpoints:
web:
exposure:
include: "*"
exclude: "env,beans"
management:
endpoints:
web:
base-path: "/"
path-mapping:
health: "healthcheck"
management:
server:
port: 8081
management:
endpoint:
health:
show-details: always
自定义端点
除了 Spring Boot Actuator 提供的通用端点之外,开发中还可以自定义端点。Spring Boot 提供了 @Endpoint 注解,带有 @Endpoint 注解的 Bean 即为自定义端点。@Jmx-Endpoint 和 @WebEndpoint 注解可分别通过 JMX 或者 HTTP 方式进行访问。自定义端点提供了方法注解 @ReadOperation、@WriteOperation 和 @Delete-Operation,分别对应 HTTP 访问方法的 GET、POST 和 DELETE。下面自定义一个简单的端点,代码如下:
//自定义端点 @WebEndpoint(id="userEndpoint") @Component public class UserEndpoint { @ReadOperation public String readUserEndpoint(){ return "test read userEndpoint!"; } @WriteOperation public String writeUserEndpoint(){ return "test write userEndpoint!"; } @DeleteOperation public String deleteUserEndpoint(){ return "test delete userEndpoint!"; } }定义好端点 Bean 之后,需要暴露这个端点,配置信息如下:
management:
endpoints:
web:
exposure:
include: userEndpoint
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。