文章目录
- 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
),允许你访问应用程序的运行时信息,如健康检查、环境属性、日志、指标、线程转储等。
Spring Boot Actuator的官方网站是:
https://docs.spring.io/spring-boot/docs/2.4.5/reference/htmlsingle/#production-ready
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: