什么是 Actuator?
从本质上讲,Actuator
为我们的应用程序带来了生产就绪功能。
通过这种依赖关系监控我们的应用程序,收集指标,了解流量或数据库的状态变得微不足道。
这个库的主要好处是我们可以获得生产级工具,而无需自己实际实现这些功能。
Actuator 主要用于公开有关正在运行的应用程序的运行信息 - 运行状况,指标,信息,转储,env 等。它使用HTTP
端点或JMX bean
来使我们能够与它进行交互。
一旦这个依赖关系在类路径上,就可以开箱即用几个端点。与大多数Spring
模块一样,我们可以通过多种方式轻松配置或扩展它。
准备工作
要启用Spring Boot Actuator
,我们只需要将spring-boot-starter-actuator
依赖项添加到我们的包管理器中。在 Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
请注意,无论 Boot 版本如何,这都保持有效,因为Spring Boot Bill of Materials(BOM)
中指定了版本。
修改 application.yml
management:
server:
#actuator端口
port: 9001
endpoints:
web:
#修改访问路径 2.0之前默认是/ 2.0默认是 /actuator 可以通过这个属性值修改
base-path: /actuator
exposure:
#开放所有页面节点 默认只开启了health、info两个节点
include: "*"
endpoint:
health:
#显示健康具体信息 默认不会显示详细信息
show-details: always
相关的配置注解这里已经写的很清楚了,需要注意的是,本文使用的springboot
版本为springboot 2.1.3.RELEASE
,只要是使用2.x
的版本,基本上没有区别。
断点概念
通过执行器端点,您可以监控应用程序并与之交互。Spring Boot
包含许多内置端点,允许您添加自己的端点。例如, health
端点提供基本的应用程序健康信息。
可以启用或禁用每个端点。它控制是否创建端点并且其bean
存在于应用程序上下文中。要进行远程访问,还必须通过JMX
或HTTP
公开端点 。大多数应用程序选择HTTP
,其中端点的 ID 以及前缀/actuator
映射到 URL。例如,默认情况下,health
端点映射到 /actuator/health
。
下面的端点都是可用的:
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 |
info | 显示任意的应用信息 | Yes |
liquibase | 展示任何Liquibase 数据库迁移路径,如果有的话 |
Yes |
metrics | 展示当前应用的metrics 信息 |
Yes |
mappings | 显示一个所有@RequestMapping 路径的集合列表 |
Yes |
scheduledtasks | 显示应用程序中的计划任务 | Yes |
sessions | 允许从Spring 会话支持的会话存储中检索和删除retrieval and deletion 用户会话。使用Spring Session 对反应性 Web 应用程序的支持时不可用。 |
Yes |
shutdown | 允许应用以优雅的方式关闭(默认情况下不启用) | No |
threaddump | 执行一个线程dump |
Yes |
如果使用web
应用Spring MVC, Spring WebFlux, 或者 Jersey
,你还可以使用以下端点:
ID | 描述 | 默认启用 |
---|---|---|
heapdump | 返回一个 GZip 压缩的 hprof 堆 dump 文件 | Yes |
jolokia | 通过 HTTP 暴露JMX beans (当 Jolokia 在类路径上时,WebFlux 不可用) |
Yes |
logfile | 返回日志文件内容(如果设置了logging.fil e 或logging.path 属性的话),支持使用HTTP Range 头接收日志文件内容的部分信息 |
Yes |
prometheus | 以可以被 Prometheus 服务器抓取的格式显示 metrics 信息 | Yes |
注意
Spring Boot 2.0
的端点和之前的版本有较大不同,使用时需注意。另外,端点的监控机制也有很大不同,启用了不代表可以直接访问,还需要将其暴露出来,传统的management.security
管理已被标记为不推荐,现在一般使用单独启用并暴露。
测试监控
启动项目完成之后,浏览器访问,application.yml
中配置的actuator
端口,再加上base-path
的前缀即可。例如本文的访问路径为:http://localhost:9001/actuator/health
,这个地址就是查看健康状况的监控,其他的相关监控也是同样的方式测试。
跟多的配置详解,以及端口的操作,可以查看以下的相关链接,更进一步的学习。