文章目录
- 1、Spring Boot Actuator
- 2、启用Spring Boot Actuator
-
- 2.1项目中添加Spring Boot Actuator依赖
- 2.2 启动项目,查看监控信息
- 3、Spring Boot Actuator提供的端点(Endpoints)
-
- 3.1 端点列表
- 3.2 启用终端节点
- 3.3 暴露端点
- 3.4 常用端点详解
1、Spring Boot Actuator
Spring Boot Actuator 是一个用于监控和管理你 Spring Boot 应用的框架。可以选择使用 HTTP 终端节点或 JMX 来管理和监控您的应用程序。Spring Boot Actuator提供了许多内置的端点(Endpoints),允许你访问应用程序的运行时信息,如健康检查、环境属性、日志、指标、线程转储等。
2、启用Spring Boot Actuator
2.1项目中添加Spring Boot Actuator依赖
项目的pom.xml文件中添加Spring Boot Actuator相关依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.2 启动项目,查看监控信息
启动项目,在浏览器中输入:http://localhost:8000/actuator,显示:

这里显示的三个接口是Spring Boot Actuator默认提供的三个暴露的可以让我们使用的端点(Endpoints)。比如,访问http://localhost:8000/actuator/health,显示:

3、Spring Boot Actuator提供的端点(Endpoints)
Spring Boot Actuator提供了很多端点,只需要我们进行配置便可使用。
3.1 端点列表
Spring Boot Actuator提供的端点(Endpoints)包括:

如果您的应用程序是 Web 应用程序(Spring MVC、Spring WebFlux 或 Jersey),则可以使用以下附加端点:
| 终端节点 | 描述 |
|---|---|
| heapdump | 返回堆转储文件。hprof |
| jolokia | 通过 HTTP 公开 JMX bean(当 Jolokia 位于 Classpath 上时,不可用于 WebFlux)。 需要依赖 。jolokia-core |
| logfile | 返回日志文件的内容(如果已设置 或 属性)。 支持使用 HTTP 标头检索日志文件的部分内容。logging.file.namelogging.file.pathRange |
| prometheus | 以 Prometheus 服务器可抓取的格式公开指标。 需要依赖 。micrometer-registry-prometheus |
3.2 启用终端节点
默认情况下,除shutdown之外的所有端点都处于启用状态。 要配置端点的启用,可以在application.yml文件中进行设置。 比如要启用shutdown端点:
management:
endpoint:
shutdown:
enabled: true
如果只想启用某个端点,比如:info,而其它端点都不启用,可以通过下面的方式实现:
management:
endpoints:
enabled-by-default: false
endpoint:
info:
enabled: true
3.3 暴露端点
由于 Endpoints 可能包含敏感信息,因此应仔细考虑项目中是否暴露端点。
下面的表中展示了内置端点默认是否暴露 :
| 端点 | JMX | Web |
|---|---|---|
| auditevents | Yes | No |
| beans | Yes | No |
| caches | Yes | No |
| conditions | Yes | No |
| configprops | Yes | No |
| env | Yes | No |
| flyway | Yes | No |
| health | Yes | Yes |
| heapdump | N/A | No |
| httptrace | Yes | No |
| info | Yes | Yes |
| integrationgraph | Yes | No |
| jolokia | N/A | No |
| logfile | N/A | No |
| loggers | Yes | No |
| liquibase | Yes | No |
| metrics | Yes | No |
| mappings | Yes | No |
| prometheus | N/A | No |
| scheduledtasks | Yes | No |
| sessions | Yes | No |
| shutdown | Yes | No |
| startup | Yes | No |
| threaddump | Yes | No |
如果想要更改某个端点是否暴露,可以使用特定的include 和 exclude 属性进行设置::
| 属性 | 默认值 |
|---|---|
| management.endpoints.jmx.exposure.exclude | |
| management.endpoints.jmx.exposure.include | * |
| management.endpoints.web.exposure.exclude | |
| management.endpoints.web.exposure.include | info, health |
例如,想要停止通过JMX 公开所有端点,而只公开health和info端点,进行如下设置:
management:
endpoints:
jmx:
exposure:
include: "health,info"
*可用于选择所有端点。 比如,想要通过 HTTP 公开除env 和 beans 之外的所有内容,进行如下设置:
management:
endpoints:
web:
exposure:
include: 









