logo头像
Snippet 博客主题

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

添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

当你不做任何配置的时候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启用接口,例如:

management.endpoint.shutdown.enabled = true

暴露端点

由于端点可能包含敏感信息,因此应仔细考虑何时公开它们。下表显示了内置端点的默认曝光:

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端点,请使用以下配置:

management.endpoints.jmx.exposure.include = health,info

默认web端只暴露了info和health接口。如果我们想查看metrics接口,访问http://ip:port/actuator/metrics是会404的。
这时需要我们配置

management.endpoints.web.exposure.include = health,info,metrics

参考:

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

微信打赏

赞赏是不耍流氓的鼓励