SpringBoot-Actuator

1. 简介

spring-boot-actuator可以监控和管理基于Spring Boot的应用程序
https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/actuator.html

2. demo

在springboot项目中添加依赖

1
2
3
4
<dependency>  
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

浏览器访问:
http://127.0.0.1:8080/actuator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"_links": {
"self": {
"href": "http://127.0.0.1:8080/actuator",
"templated": false
},
"health": {
"href": "http://127.0.0.1:8080/actuator/health",
"templated": false
},
"health-path": {
"href": "http://127.0.0.1:8080/actuator/health/{*path}",
"templated": true
}
}
}

management.endpoints.web.exposure.include=*查看全部

3. 端点

Actuator 提供了一系列的端点(Endpoints),可以用于查看应用的内部状态、执行操作、收集应用的度量指标等。
例如:
/actuator:列出所有可用的端点
/actuator/health:显示应用的健康状态。通常会返回 “UP”(表示应用运行正常)或 “DOWN”(表示应用有问题)。

下表展示所有的端点,和默认是否公开

ID 描述 JMX HTTP
auditevents 公开当前应用程序的审计事件信息。需要一个AuditEventRepositorybean。
Yes No
beans 显示应用程序中所有 Spring bean 的完整列表。
Yes No
caches 公开可用的缓存。 Yes No
conditions 显示对配置和自动配置类进行评估的条件以及它们匹配或不匹配的原因。 Yes No
configprops 显示所有的整理列表@ConfigurationProperties。 Yes No
env 公开 Spring 的属性ConfigurableEnvironment。 Yes No
flyway 显示已应用的任何 Flyway 数据库迁移。需要一个或多个Flywaybean。 Yes No
health 显示应用程序健康信息。 Yes Yes
httptrace 显示 HTTP 跟踪信息(默认情况下,显示最后 100 个 HTTP 请求-响应交换)。需要一个HttpTraceRepositorybean。 Yes No
info 显示任意应用程序信息。 Yes No
integrationgraph 显示 Spring Integration 图。需要依赖spring-integration-core。 Yes No
loggers 显示和修改应用程序中日志的配置。 Yes No
liquibase 显示已应用的任何 Liquibase 数据库迁移。需要一个或多个Liquibasebean。 Yes No
metrics 显示当前应用程序的“指标”信息。 Yes No
mappings 显示所有路径的整理列表@RequestMapping。 Yes No
quartz 显示有关 Quartz Scheduler 作业的信息。 Yes No
scheduledtasks 显示应用程序中的计划任务。 Yes No
sessions 允许从 Spring Session 支持的会话存储中检索和删除用户会话。需要使用 Spring Session 的基于 servlet 的 Web 应用程序。 Yes No
shutdown 让应用程序正常关闭。仅在使用 jar 打包时有效。默认情况下禁用。 Yes No
startup 显示收集的启动步骤数据ApplicationStartup。需要 来SpringApplication配置BufferingApplicationStartup。 Yes No
threaddump 执行线程转储。 Yes No
heapdump 返回堆转储文件。在 HotSpot JVM 上,HPROF将返回 -format 文件。在 OpenJ9 JVM 上,PHD将返回 -format 文件。 N/A No
jolokia 当 Jolokia 位于类路径上时,通过 HTTP 公开 JMX bean(不适用于 WebFlux)。需要依赖jolokia-core。 N/A No
logfile 返回日志文件的内容(如果已设置logging.file.name或logging.file.path属性)。支持使用 HTTPRange标头检索日志文件的部分内容。 N/A No
prometheus 以 Prometheus 服务器可以抓取的格式公开指标。需要依赖micrometer-registry-prometheus。 N/A No

启停端点
management.endpoint.<id>.enabled=true/false
默认情况下,除shutdown之外的所有端点都已启用。

设置默认是否启用
设置默认全部为禁用:management.endpoints.enabled-by-default=false

公开端点
由于 Endpoint 可能包含敏感信息,应该仔细考虑何时公开端点。
更改公开的端点,默认如下:
management.endpoints.jmx.exposure.exclude=
management.endpoints.jmx.exposure.include=*
management.endpoints.web.exposure.exclude=
management.endpoints.web.exposure.include=health

可修改为management.endpoints.web.exposure.exclude=env,beans