Spring Cloud 构建微服务 02 — 使用 Actuator 监控应用

spring-boot-actuator 模块提供了很多特性让我们可以选择使用 HTTP 或者 JMX 来监视和管理我们的应用,启用这些特性的最简单方式就是在应用加入 spring-boot-starter-actuator 依赖。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Actuator 内置了很多端点来管理我们的应用,这些端点使用 /actuator 为前缀,我们添加自己的端点,如 /actuator/health 提供基本的应用健康信息。

  • 启用端点

默认情况下,除了 shutdown 之外的所有端点都是启用的,我们可以使用 management.endpoint.<id>.enabled 配置启用或禁用某一个端点,management.endpoints.enabled-by-default 来修改端点的默认启用状态。如下面配置只启用 info 端点:

1
2
3
management.endpoints: 
enabled-by-default: false
info.enabled: true
  • 暴露端点

由于端点中可能包含一些敏感信息,默认情况下大部分 HTTP 端点都是不暴露的,但可以通过配置来暴露或隐藏某些端点,management.endpoints.<jmx|web>.exposure.<exclude|include> 配置项 include 表示暴露的端点 ID , exclude 表示隐藏的端点 ID ,并且 exclude 的优先级要高于 include,如下配置只暴露 envinfo 端点:

1
management.endpoints.web.exposure.include: env,info

Actuator 还有很多其他特性,大家可参考官方文档 Part V. Spring Boot Actuator: Production-ready features,下面是 2.0.0 版本支持的端点列表:

ID URL 描述 默认启用 默认暴露JMX 默认暴露HTTP
auditevents /actuator/auditevents 为当前应用程序公开审计事件信息
beans /actuator/beans 显示应用中所有的 Spring bean 列表
conditions /actuator/conditions 显示在配置和自动配置类上评估的条件,以及它们执行或不匹配的原因
configprops /actuator/configprops 显示所有被 @ConfigurationProperties 标注的配置信息
env /actuator/env 暴露 Spring 的 ConfigurableEnvironment 配置
flyway /actuator/flyway 显示已应用的任何Flyway数据库迁移
health /actuator/health 显示应用健康信息
httptrace /actuator/httptrace 显示 HTTP 跟踪信息(默认情况下,最后 100 个 HTTP 请求-响应)
info /actuator/info 显示任意应用程序信息
loggers /actuator/loggers 显示和修改应用程序中的日志配置
liquibase /actuator/liquibase 显示已应用的任何 liquibase 数据库迁移
metrics /actuator/metrics 显示当前应用程序的“度量”信息
mappings /actuator/mappings 显示所有被 @RequestMapping 标注的 Mapping 信息
scheduledtasks /actuator/scheduledtasks 显示程序中的定时任务
sessions /actuator/sessions 允许从 Spring session 支持的会话存储中检索和删除用户会话。在使用 Spring 会话对反应性 web 应用程序的支持时不可用
shutdown /actuator/shutdown 让应用程序优雅地关闭
threaddump /actuator/threaddump 输出线程堆栈
heapdump /actuator/heapdump 返回一个 GZip 压缩的 hprof 堆转储文件 N/A
jolokia /actuator/jolokia 在 HTTP 上公开 JMX bean (当 Jolokia 在类路径上时,没有 WebFlux 可用) N/A
logfile /actuator/logfile 返回日志文件的内容(如果是日志记录的话)。文件或日志记录。已经设置了路径属性。支持使用HTTP范围头来检索日志文件内容的一部分 N/A
prometheus /actuator/prometheus 公开度量标准,该格式可以被 Prometheus 服务器清除 N/A

本文代码位置:https://github.com/niuhp/springcloud-sample/tree/master/actuator