Spring Boot Actuator使用

发布时间 2023-12-20 09:24:14作者: 刘百会

Spring Boot Actuator 是一个非常强大的模块,它为 Spring Boot 应用程序提供了生产级别的监控和管理功能。以下是对 Spring Boot Actuator 的详细解析:

1. **什么是 Actuator**:
- Spring Boot Actuator 是一个扩展模块,用于增强 Spring Boot 应用程序的管理和监控能力。它提供了一系列的 "endpoint"(端点),这些端点暴露了应用程序的各种信息和操作,如健康检查、审计、指标收集、HTTP 跟踪等。

2. **启用 Actuator**:
- 在 Spring Boot 应用中启用 Actuator 非常简单,只需要在项目的 `pom.xml` 或者 `build.gradle` 文件中添加 `spring-boot-starter-actuator` 依赖即可。

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

 

3. **配置 Actuator**:
- Actuator 的配置主要在 `application.yml` 或 `application.properties` 文件中进行。通过 `management` 命名空间下的选项可以控制 Actuator 端点的行为,包括是否启用、公开以及通过何种方式(如 HTTP 或 JMX)访问。

在 Spring Boot 2.x 中为了安全期间,Actuator 只开放了两个端点 /actuator/health 和 /actuator/info。可以在配置文件中设置打开。

可以打开所有的监控点

management:
  endpoints:
    web:
      exposure:
        include: "*"

“*”号代表启用所有的监控端点,可以单独启用,例如,healthinfometrics

4. **端点(Endpoints)**:
- Actuator 提供了许多内置的端点,每个端点都提供了特定的信息或操作。一些常见的端点包括:
- `/health`: 提供应用程序的基本健康状态信息。
- `/info`: 提供关于应用程序的元数据信息,如版本号、构建日期等。
- `/metrics`: 提供各种度量指标,如内存使用情况、CPU 使用率等。
- `/trace`: 提供最近的 HTTP 请求跟踪信息。
- `/dump`: (仅在 Web 环境下可用)提供线程 dump 信息。
- `/shutdown`: (默认禁用)允许通过 HTTP 关闭应用程序。

 

5. **安全性考虑**:
- 由于 Actuator 端点可能暴露敏感信息,因此需要对它们进行适当的安全控制。可以通过配置 Spring Security 或其他安全机制来限制对端点的访问。

6. **定制和扩展**:
- Actuator 允许开发者自定义端点或者扩展内置端点的功能。可以通过实现 `Endpoint` 接口或者使用 `@Endpoint`、`@ReadOperation`、`@WriteOperation` 等注解来创建自定义端点。

7. **与技术无关性**:
- 在 Spring Boot 2.x 中,Actuator 变得更加与技术无关,这意味着它能够更好地适应不同的环境和技术栈。

8. **Service Mesh 支持**:
- 在 Service Mesh 架构中,Actuator 的功能同样重要,因为它可以帮助监控和管理运行在分布式环境中的微服务。

总的来说,Spring Boot Actuator 是一个强大而灵活的工具,它极大地增强了 Spring Boot 应用程序的可观测性和可管理性,是生产环境中不可或缺的一部分。通过合理配置和使用 Actuator,开发者可以更好地监控和调试应用程序,及时发现并解决问题,从而提高系统的稳定性和可靠性。

浏览器打开链接http://localhost:8080/actuator/

可以看到所有支持的连接,默认只有

/actuator
/actuator/health
/actuator/health/{component}
/actuator/health/{component}/{instance}
/actuator/info

使用场景:

Actuator 几乎监控了应用涉及的方方面面,我们重点讲述一些经常在项目中常用的命令。

health

health 主要用来检查应用的运行状态,这是我们使用最高频的一个监控点。通常使用此接口提醒我们应用实例的运行状态,以及应用不”健康“的原因,比如数据库连接、磁盘空间不够等。

默认情况下 health 的状态是开放的,添加依赖后启动项目,访问:http://localhost:8080/actuator/health即可看到应用的状态。

{
    "status" : "UP"
}

举个例子,如果你的应用使用 Redis,RedisHealthindicator 将被当作检查的一部分;如果使用 MongoDB,那么MongoHealthIndicator 将被当作检查的一部分。

可以在配置文件中关闭特定的健康检查指标,比如关闭 redis 的健康检查:

management:
  health:
    redise:
      enabled: false

shutdown

开启接口优雅关闭 Spring Boot 应用,要使用这个功能首先需要在配置文件中开启:

management:
  endpoint:
    shutdown:
      enabled: true

metrics 端点

metrics 是一个非常重要的监控端点,其监控内容覆盖了 JVM 内存、堆、类加载、处理器和 tomcat 容器等一些重要指标:

http://localhost:11360/actuator/metrics

 可以看到这里面包含了非常多的指标,任意访问一个指标就可以查看对应的指标信息:

http://localhost:11360/actuator/metrics/hikaricp.connections.acquire

 

Spring Boot Monitor做监控页面

<dependency>
    <groupId>cn.pomit</groupId>
    <artifactId>spring-boot-monitor</artifactId>
    <version>0.0.1</version>
</dependency>

Spring Boot Monitor是一个对Spring boot admin监控工具做修改并适配单机的监控工具,完美继承了Spring boot admin的风格,直接使用actuator的指标进行显示。

前面maven依赖中,已经说明依赖spring-boot-monitor,这时,无需其他配置.

访问http://127.0.0.1:8080/monitor, 自动跳转到Spring Boot Monitor的监控页面。

可以对Spring boot的各项指标一目了然,还可以进行简单的操作。

当然,如果Spring boot actuator的指标被限制了,它也拿不到相应的指标了,因为它是直接请求actuator接口的。

参考:https://blog.csdn.net/qq_45635347/article/details/131443687