Spring Boot Actuator

2025年3月18日 | 阅读 5 分钟

Spring Boot Actuator

Spring Boot Actuator 是 Spring Boot Framework 的一个子项目。它包含了一些额外的功能,帮助我们监控和管理 Spring Boot 应用程序。它包含了 Actuator 端点(资源所在的位置)。我们可以使用 HTTPJMX 端点来管理和监控 Spring Boot 应用程序。如果想在应用程序中获得生产级别的功能,就应该使用 Spring Boot Actuator

Spring Boot Actuator 功能

Spring Boot Actuator 有三个主要功能

  • 端点
  • 指标
  • 审计

端点 (Endpoint): Actuator 端点允许我们监控和与应用程序交互。Spring Boot 提供了许多内置端点。我们也可以创建自己的端点。我们可以单独启用和禁用每个端点。大多数应用程序选择 HTTP,其中端点的 ID 加上 /actuator 的前缀映射到一个 URL。

例如,/health 端点提供应用程序的基本健康信息。Actuator 默认将其映射到 /actuator/health。 

指标 (Metrics): Spring Boot Actuator 通过与 micrometer 集成提供维度指标。Micrometer 集成在 Spring Boot 中。它是为 Spring 提供应用程序指标的仪表库。它为带有维度数据模型的计时器、仪表、计数器、分布汇总长任务计时器提供厂商中立的接口。

审计 (Audit): Spring Boot 提供了一个灵活的审计框架,将事件发布到 AuditEventRepository。如果 spring-security 正在执行,它会自动发布身份验证事件。

启用 Spring Boot Actuator

我们可以通过在 pom.xml 文件中注入 spring-boot-starter-actuator 依赖项来启用 Actuator。

Spring Boot Actuator 端点

Actuator 端点允许我们监控和与 Spring Boot 应用程序交互。Spring Boot 包含许多内置端点,我们也可以在 Spring Boot 应用程序中添加自定义端点。

下表描述了常用的端点。

ID用途默认
actuator它为其他端点提供基于超媒体的发现页面。它需要 Spring HATEOAS 在类路径中。true
auditevents它公开当前应用程序的审计事件信息。true
autoconfig用于显示一个自动配置报告,其中显示所有自动配置候选以及它们被应用或未被应用的原因。true
beans用于显示应用程序中所有 Spring Bean 的完整列表。true
configprops用于显示所有 @ConfigurationProperties 的汇总列表。true
dump用于执行线程转储。true
env它用于公开 Spring 的 ConfigurableEnvironment 中的属性。true
flyway用于显示已应用的任何 Flyway 数据库迁移。true
health用于显示应用程序的健康信息。False
info它用于显示任意应用程序信息。False
loggers用于显示和修改应用程序中日志器的配置。true
liquibase用于显示已应用的任何 Liquibase 数据库迁移。true
metrics用于显示当前应用程序的指标信息。true
mappings用于显示所有 @RequestMapping 路径的汇总列表。true
shutdown它允许应用程序优雅地关闭。true
trace它用于显示跟踪信息。true

对于 Spring MVC,还使用以下附加端点。

ID描述默认
docs用于显示文档,包括 Actuator 端点的示例请求和响应。False
heapdump用于返回一个 GZip 压缩的 hprof 堆转储文件。true
jolokia用于通过 HTTP 公开 JMX Bean(当 Jolokia 在类路径中时)。true
logfile用于返回日志文件的内容。true
prometheus用于以 Prometheus 服务器可以抓取(scrape)的格式公开指标。它需要 micrometer-registry-prometheus 依赖。true

Spring Boot Actuator 属性

Spring Boot 为所有 Actuator 端点启用安全性。它使用基于表单的身份验证,提供用户 ID 为 user,以及一个随机生成的密码。我们还可以通过为端点自定义 basicauth 安全来访问受限制的 Actuator 端点。我们需要通过 management.security.roles 属性覆盖此配置。例如

Spring Boot Actuator 示例

让我们通过一个例子来理解 Actuator 的概念。

步骤 1: 打开 Spring Initializr https://start.spring.io/ 并创建一个 Maven 项目。

步骤 2:提供Group 名称。我们提供了 com.javatpoint。

步骤 3: 提供Artifact ID。我们提供了 spring-boot-actuator-example

步骤 4: 添加以下依赖项:Spring Web、Spring Boot Starter ActuatorSpring Data Rest HAL Browser

步骤 5: 点击 Generate 按钮。当我们点击 Generate 按钮时,它会将与项目相关的所有规范打包到一个 Jar 文件中并下载到我们的本地系统。

Spring Boot Starter Actuator

步骤 6: 解压 Jar 文件并将其粘贴到 STS 工作区。

步骤 7: 导入项目文件夹。

File -> Import -> Existing Maven Projects -> Browse -> Select the folder spring-boot-actuator-example -> Finish

导入需要一些时间。导入项目后,我们可以在包浏览器部分看到项目目录。

Spring Boot Starter Actuator

步骤 8: 创建一个 Controller 类。我们已创建名为 DemoRestController 的控制器类。

DemoRestController.java

步骤 9: 打开 application.properties 文件,并通过添加以下语句禁用 Actuator 的安全功能。

application.properties

步骤 10: 运行 SpringBootActuatorExampleApplication.java 文件。

步骤 11: 打开浏览器并调用 URL https://:8080/actuator。它将返回以下页面

应用程序默认运行在 8080 端口。一旦 Actuator 启动,我们就可以看到通过 HTTP 公开的所有端点的列表。

让我们通过调用 URL https://:8080/actuator/health 来调用 health 端点。它显示状态 UP。这意味着应用程序健康且运行没有中断。

Spring Boot Starter Actuator

同样,我们可以调用其他有助于我们监控和管理 Spring Boot 应用程序的端点。