SpringBoot Actuator是的子项目Spring Boot框架。它包括许多其他功能,可帮助我们监视和管理Spring Boot应用程序。它包含 Actuator端点(资源所在的位置)。我们可以使用 HTTP 和 JMX 端点来管理和监视Spring Boot应用程序。如果要在应用程序中获得生产就绪的功能,则应使用S pring Boot Actuator。
Spring Boot Actuator有 三个主要功能:
Endpoints Metrics Audit
Endpoint: Actuator端点使我们可以监视应用程序并与之交互。 Spring Boot提供了许多内置端点。我们也可以创建自己的端点。我们可以分别启用和禁用每个端点。大多数应用程序选择 HTTP ,该终结点的ID和 /actuator前缀映射到URL。
对于例如, /health 端点提供了应用程序的基本健康信息。 Actuator默认情况下将其映射到 /actuator/health 。
Metrics: Spring Boot Actuator通过与 千分尺集成来提供尺寸指标。千分尺已集成到Spring Boot中。它是工具库,用于支持从Spring交付应用程序指标。它为具有维度数据模型的 计时器,仪表,计数器,分配汇总和 长任务计时器提供了与供应商无关的界面。
Audit: Spring Boot提供了一个灵活的审核框架,该框架将事件发布到 AuditEventRepository。如果正在执行spring-security,它将自动发布身份验证事件。
我们可以通过在pom.xml文件中注入依赖项 spring-boot-starter-actuator 来启用 Actuator。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>2.2.2.RELEASE</version> </dependency>
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 | 它用于显示应用程序运行状况信息。 | 错误 |
info | 它用于显示任意应用程序信息。 | 错误 |
loggers | 它用于显示和修改应用程序中记录器的配置。 | true |
liquibase | 它用于显示已应用的所有Liquibase数据库迁移。 | true |
metrics | 它用于显示当前应用程序的指标信息。 | true |
mappings | 它用于显示所有@RequestMapping路径的整理列表。 | true |
shutdown | 它用于允许正常关闭应用程序。 | true |
trace | 它用于显示跟踪信息。 | true |
对于Spring MVC,使用了以下附加端点。
Id | 说明 | 默认 |
docs | 它用于显示文档,包括对 Actuator端点的示例请求和响应。 | 错误 |
heapdump | 它用于返回GZip压缩的hprof堆转储文件。 | true |
jolokia | 它用于通过HTTP公开JMX bean(当Jolokia在类路径上时)。 | true |
logfile | 它用于返回日志文件的内容。 | true |
prometheus | 它用于以Prometheus服务器可以抓取的格式公开指标。它需要依赖千分尺-普罗米修斯。 | true |
Spring Boot为所有 Actuator端点提供安全性。它使用 基于表单的身份验证,该身份提供 用户ID 作为用户,并提供随机生成的 密码。我们还可以通过为端点定制基本身份验证安全性来访问 Actuator受限的端点。我们需要通过 management.security.roles 属性覆盖此配置。例如:
management.security.enabled=true management.security.roles=ADMIN security.basic.enabled=true security.user.name=admin security.user.passowrd=admin
让我们通过示例了解 Actuator的概念。
步骤1: 打开弹簧Initializr https://start.spring.io/并创建 Maven 项目。
步骤2: 提供 组名称。我们提供了 com.nhooo。
步骤3: 提供 工件 ID。我们提供了 spring-boot-actuator-example。
步骤4: 。添加以下依赖项: Spring Web,Spring Boot Starter Actuator和 Spring Data Rest HAL浏览器。
步骤5: 单击 生成按钮。当我们单击"生成"按钮时,它将与项目相关的所有规范包装到 Jar 文件中,并将其下载到我们的本地系统中。
步骤6: 提取Jar文件并将其粘贴到STS工作区中。
步骤7: 导入项目文件夹。
文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-actuator-example- >完成
导入需要一些时间。导入项目后,我们可以在"包资源管理器"部分中看到项目目录。
步骤8: : 创建一个Controller类。我们已经创建了名为DemoRestController的控制器类。
DemoRestController.java
package com.nhooo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoRestController { @GetMapping("/hello") public String hello() { return "Hello User!"; } }
步骤9: 打开 application.properties 文件,并通过添加以下语句来禁用 Actuator的安全性功能。
application.properties
management.security.enabled=false
步骤10: 运行 SpringBootActuatorExampleApplication.java 文件。
步骤11: 打开浏览器并调用URL http: //localhost: 8080/actuator。它返回以下页面:
{"_links":{"self":{"href":"http://localhost:8080/actuator","templated":false},"health":{"href":"http://localhost:8080/actuator/health","templated":false},"health-path":{"href":"http://localhost:8080/actuator/health/{*path}","templated":true},"info":{"href":"http://localhost:8080/actuator/info","templated":false}}}
默认情况下,该应用程序在端口8080上运行。 Actuator启动后,我们可以看到通过HTTP公开的所有端点的列表。
让我们通过调用URL http: //localhost: 8080/来调用 health 端点。 Actuator/健康状况。它表示状态 UP 。这表示该应用程序运行正常,并且运行正常。
同样,我们可以调用其他端点来帮助我们监视和管理Spring Boot应用程序。