Actuator 介绍
actuator 是 spring boot 提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等
使用 Actuator
要想使用 Actuator 只需要在pom.xml依赖中加入Actuator 依赖即可,代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Spring Boot 同乐许多监控和管理端点,如表所示:
ID | 描述 | 默认启用 |
---|---|---|
auditevents | 显示当前应用程序的审计事件信息 | Yes |
beans | 显示一个应用中所有Spring Beans的完整列表 | Yes |
conditions | 显示配置类和自动配置类(configuration and auto-configuration classes)的状态及它们被应用或未被应用的原因 | Yes |
configprops | 显示一个所有@ConfigurationProperties的集合列表 | Yes |
env | 显示来自Spring的 ConfigurableEnvironment的属性 | Yes |
flyway | 显示数据库迁移路径,如果有的话 | Yes |
health | 显示应用的健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情) | Yes |
heapdump | 返回一个GZip压缩的hprof堆dump文件 | Yes |
info | 显示任意的应用信息 | Yes |
jolokia | 通过HTTP暴露JMX beans(当Jolokia在类路径上时,WebFlux不可用) | Yes |
logfile | 返回日志文件内容(如果设置了logging.file或logging.path属性的话),支持使用HTTP Range头接收日志文件内容的部分信息 | Yes |
liquibase | 展示任何Liquibase数据库迁移路径,如果有的话 | Yes |
metrics | 展示当前应用的metrics信息 | Yes |
mappings | 显示一个所有@RequestMapping路径的集合列表 | Yes |
prometheus | 以可以被Prometheus服务器抓取的格式显示metrics信息 | Yes |
scheduledtasks | 显示应用程序中的计划任务 | Yes |
sessions | 允许从Spring会话支持的会话存储中检索和删除(retrieval and deletion)用户会话。使用Spring Session对反应性Web应用程序的支持时不可用。 | Yes |
shutdown | 允许应用以优雅的方式关闭(默认情况下不启用) | No |
threaddump | 执行一个线程dump | Yes |
启用端点
默认情况下,除shutdown以外的所有端点均已启用。要配置单个端点的启用,请使用management.endpoint.<id>.enabled
属性。例如
management.endpoint.shutdown.enabled=true
这句代码就是启用默认关闭的shutdown
端点。
端点暴露
由于部分端点的信息比较敏感,一般情况下不会暴露给外部访问,下表列出了各个端点在JMX和Web途径下的可访问情况:
ID | JMX | Web |
---|---|---|
auditevents | Yes | No |
beans | 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 |
jolokia | Yes | No |
logfile | Yes | 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 |
threaddump | Yes | No |
如果需要强制的使某些端点在指定的方式下可以访问,可以通过设置management.endpoints.jmx.exposure.exclude
,management.endpoints.jmx.exposure.include
,management.endpoints.web.exposure.exclude
,management.endpoints.web.exposure.include
这四个属性开放端口或者封闭端口,例如:
management.endpoints.jmx.exposure.include=health,info
这句代码,则是配置了在JMX下只能访问到health和info端点。
端点使用示例
health:
info: