springboot2中使用actuator进行监控
spring-boot-actuator模块提供了一个监控和管理生产环境的模块,可以使用http、jmx、ssh、telnet等来管理和监控应用。审计(Auditing)、 健康(health)、数据采集(metrics gathering)会自动加入到应用里面。
传送门:springboot1.x-actuator
springboot1.x 的时候一直在使用spring的actuator监控。现在升级到springboot2.x,发现之前的配置都不管用了。于是翻了一下spring官网,发现springboot2做了一些改动。
- 本文springboot版本:
2.0.2.RELEASE
,springcloud版本:Finchley.RC1
添加依赖
1 |
|
当你不做任何配置的时候actuator就已经生效了。默认端口和你的服务端口相同。默认接口前缀/actuator
。
项目启动成功后访问http://localhost:8080/actuator/actuator/health
ID | 描述 | 默认使用 |
---|---|---|
auditevents | 公开当前应用程序的审核事件信息。 | 是 |
beans | 显示应用程序中所有Spring bean的完整列表。 | 是 |
conditions | 显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。 | 是 |
configprops | 显示所有@ConfigurationProperties的整理列表 | 是 |
env | 显示Spring的ConfigurableEnvironment属性。 | 是 |
flyway | 显示已应用的任何Flyway数据库迁移。 | 是 |
health | 展示应用的健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情)。 | 是 |
httptrace | 显示HTTP跟踪信息(默认情况下,最后100个HTTP请求 - 响应交换)。 | 是 |
info | 显示应用信息。 | 是 |
loggers | 显示和修改应用程序中loggers的配置。 | 是 |
liquibase | 显示已应用的任何Liquibase数据库迁移。 | 是 |
metrics | 显示当前应用程序的“指标”信息。 | 是 |
mappings | 显示所有@RequestMapping路径的整理列表。 | 是 |
scheduledtasks | 显示应用程序中的计划任务。 | 是 |
sessions | 允许从Spring Session支持的会话存储中检索和删除用户会话。使用Spring Session对响应式Web应用程序的支持时不可用。 | 是 |
shutdown | 允许应用程序正常关闭。 | 没有 |
threaddump | 显示当前应用线程状态信息。 | 是 |
如果您的应用程序是Web应用程序(Spring MVC,Spring WebFlux或Jersey),则可以使用以下附加端点:
ID | 描述 | 默认使用 |
---|---|---|
heapdump | 返回GZip压缩hprof堆转储文件。 | 是 |
jolokia | 通过HTTP公开JMX bean(当Jolokia在类路径上时,不适用于WebFlux)。 | 是 |
logfile | 返回日志文件的内容(如果已设置logging.file或logging.path属性)。支持使用HTTP Range标头来检索部分日志文件的内容。 | 是 |
prometheus | 以可以由Prometheus服务器抓取的格式公开指标。 | 是 |
启用端点
默认会启用除了shutdown
之外所有的接口。可以使用management.endpoint.<id>.enabled
启用接口,例如:
1 |
|
暴露端点
由于端点可能包含敏感信息,因此应仔细考虑何时公开它们。下表显示了内置端点的默认曝光:
ID | JMX | WEB |
---|---|---|
auditevents | 是 | 没有 |
beans | 是 | 没有 |
conditions | 是 | 没有 |
configprops | 是 | 没有 |
env | 是 | 没有 |
flyway | 是 | 没有 |
health | 是 | 是 |
heapdump | N/A | 没有 |
httptrace | 是 | 没有 |
info | 是 | 是 |
jolokia | N/A | 没有 |
logfile | N/A | 没有 |
loggers | 是 | 没有 |
liquibase | 是 | 没有 |
metrics | 是 | 没有 |
mappings | 是 | 没有 |
prometheus | N/A | 没有 |
scheduledtasks | 是 | 没有 |
sessions | 是 | 没有 |
shutdown | 是 | 没有 |
threaddump | 是 | 没有 |
可以通过以下配置更改:
属性 | 默认 |
---|---|
management.endpoints.jmx.exposure.exclude | |
management.endpoints.jmx.exposure.include | * |
management.endpoints.web.exposure.exclude | |
management.endpoints.web.exposure.include | info, health |
可以使用include或者exclude配置需要暴露的接口。
例如,要停止通过JMX公开所有端点并仅显示端点health和 info端点,请使用以下配置:
1 |
|
默认web端只暴露了info和health接口。如果我们想查看metrics接口,访问http://ip:port/actuator/metrics
是会404的。
这时需要我们配置
1 |
|
参考:
https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#production-ready
https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/actuator-api/html