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: "*"
“*”号代表启用所有的监控端点,可以单独启用,例如,health
,info
,metrics
等
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