Spring Boot Actuator

Spring Boot Actuator 是 Spring Boot 框架的一个子项目。它包含了许多额外的功能,帮助我们监视和管理 Spring Boot 应用程序。它包含了 actuator 端点(资源所在的位置)。我们可以使用 HTTPJMX 端点来管理和监视 Spring Boot 应用程序。如果我们希望在应用程序中获得生产就绪的特性,我们应该使用 Spring Boot Actuator

Spring Boot Actuator 特性

Spring Boot Actuator 有以下 三个 主要特性:

  • Endpoints(端点)
  • Metrics(指标)
  • Audit(审计)

Endpoints(端点):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。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

Spring Boot Actuator 端点

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

以下是Spring Boot Actuator中常用的端点(Endpoint)及其用途和默认状态:

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 Boot应用程序,了解应用程序的状态和性能指标,并根据需要添加自定义端点来公开特定信息。

Id描述默认值
docs显示文档,包括 Actuator 端点的示例请求和响应。False
heapdump返回 GZip 压缩的 hprof 堆转储文件。True
jolokia在类路径上存在 Jolokia 时,通过 HTTP 公开 JMX bean。True
logfile返回日志文件的内容。True
prometheus以 Prometheus 服务器可抓取的格式公开指标。需要 micrometer-registry-prometheus 依赖项。True

Spring Boot Actuator 属性

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.password=admin

Spring Boot Actuator 示例

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

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

步骤 2: 提供 Group 名称。我们提供了 cn.javatiku

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

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

步骤 5: 点击 Generate 按钮。点击 Generate 按钮后,它将所有与项目相关的规格包装成一个 Jar 文件,并将其下载到我们的本地系统。
6500883740f6b4a3a0b811520bbaa6f.png
步骤 6: 解压 Jar 文件并将其粘贴到 STS 工作区。

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

File -> Import -> Existing Maven Projects -> Browse -> 选择文件夹 spring-boot-actuator-example -> 完成

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

1da3d8654cf62fcbbd58b58fefaebd1.png

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

DemoRestController.java

package cn.javatiku;
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: 在浏览器中打开 http://localhost:8080/actuator URL。它返回以下页面:

{
    "_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 公开的端点列表。

让我们通过调用 http://localhost:8080/actuator/health URL 来调用 health 端点。它显示状态为 UP。这意味着应用程序正常运行且没有中断。
4b407a1405ac94aaee489130c12d9df.png

同样地,我们可以调用其他端点来监视和管理 Spring Boot 应用程序。

标签: spring, Spring教程, Spring语言学习, Spring框架, Spring框架教程, Spring框架高级教程, spring boot, spring boot入门教程, spring boot学习教程, spring boot下载, spring boot框架入门, spring boot面试题, spring boot笔试题, spring boot技术