返回介绍

8.1 Spring Boot Actuator 组件

发布于 2025-04-21 20:58:45 字数 2882 浏览 0 评论 0 收藏

Spring Boot Actuator 通过 HTTP endpoints 或者 JMX 来管理和监控 Spring Boot 应用,如服务的审计、健康检查、指标统计和 HTTP 追踪等。Spring Boot Actuator 同时还可以与 AppOptics、Datadog、Elastic、Influx、Prometheus 等第三方监控系统进行整合。完善的监控系统可以使业务系统更健壮。本节主要介绍 Spring Boot Actuator 的相关知识与实践应用。

8.1.1 Endpoints 组件简介

Spring Boot Actuator Endpoints 可以让开发者监控或者动态地改变应用。Spring Boot Actuator 内置了一系列的端点,也可以自定义端点。默认情况下,Spring Boot Actuator 暴露了 health 和 info 两个端点。例如,访问 health 端点可以进行应用健康状态查询,如果应用健康,则返回 UP,如果不健康,则返回 DOWN。通常情况下使用 HTTP 的方式访问端点信息,默认的访问路径是/actuator。如果访问 health 端点,则使用/actuator/health 即可。如表 8.1 所示为 Spring Boot 提供的一些端点。

表 8.1 Spring Boot 提供的端点

131-1

如果程序是 Web 应用,还可以使用下面的端点,如表 8.2 所示。

表 8.2 Web 应用可以使用的端点

132-1

默认情况下,除了 shutdown 端点之外,其他端点都是启用的。如果想要启用 shutdown 端点,可以通过配置 management.endpoint.<id>.enabled 属性来实现。具体配置如下:

management:
        endpoint:
          shutdown:
                enabled: true

如果想要禁用默认的端点,而只开启自己想要的端点,可以使用下面的配置:

management:
        endpoints:
          enabled-by-default: false
        endpoint:
          info:
            enabled: true

基于 HTTP 的方式默认暴露了 health 和 info 端点。如果想要暴露更多的端点,需要使用下面的配置:

management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: "env,beans"

Spring Boot Actuator 端点的默认访问路径是/actuator,如果想要修改该路径,需要进行如下配置:

management:
  endpoints:
    web:
      base-path: "/"
      path-mapping:
        health: "healthcheck"

同样可以修改访问的端口,配置信息如下:

management:
  server:
    port: 8081

如果想要修改端点的属性配置,可以进行如下修改:

management:
  endpoint:
    health:
      show-details: always

8.1.2 自定义端点

除了 Spring Boot Actuator 提供的通用端点之外,开发中还可以自定义端点。Spring Boot 提供了 @Endpoint 注解,带有 @Endpoint 注解的 Bean 即为自定义端点。@Jmx-Endpoint 和 @WebEndpoint 注解可分别通过 JMX 或者 HTTP 方式进行访问。

自定义端点提供了方法注解 @ReadOperation、@WriteOperation 和 @Delete-Operation,分别对应 HTTP 访问方法的 GET、POST 和 DELETE。下面自定义一个简单的端点,代码如下:

//自定义端点
@WebEndpoint(id="userEndpoint")
@Component
public class UserEndpoint {
    @ReadOperation
    public String readUserEndpoint(){
        return "test read userEndpoint!";
    }
    @WriteOperation
    public String writeUserEndpoint(){
        return "test write userEndpoint!";
    }
    @DeleteOperation
    public String deleteUserEndpoint(){
        return "test delete userEndpoint!";
    }
}

定义好端点 Bean 之后,需要暴露这个端点,配置信息如下:

management:
  endpoints:
    web:
      exposure:
        include: userEndpoint

访问 http://localhost:8080/actuator 即可看到 userEndpoint 端点已经暴露出来了。分别用 GET、POST 和 DELETE 方式访问 http://localhost:8080/actuator/userEndpoint,将返回不同的信息。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。