Spring Boot Actuator 详细介绍
1. 简介
Spring Boot Actuator 是 Spring Boot 提供的一个用于监控和管理应用程序的强大功能模块。它可以帮助我们了解应用程序的运行状况、指标收集、环境信息、日志级别管理等。
2. 添加依赖
2.1 在 pom.xml
中添加以下依赖:
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.2 在bootstrap.yml
中添加如下信息:
yaml
management:
endpoints:
web:
exposure:
include: "*" // * 号代表启用所有的监控端点,可以单独启用,例如,health,info,metrics等
endpoint:
health:
show-details: always
3. 主要端点介绍
3.1 健康检查端点
- 端点:
/actuator/health
- 描述: 显示应用程序的健康状态信息
- 返回示例:
bash
{
"status": "UP"
}
3.2 应用信息端点
- 端点:
/actuator/info
- 描述: 显示应用程序的自定义信息
- 可在 application.properties/yml 中配置信息
3.3 指标端点
- 端点:
/actuator/metrics
- 描述: 显示应用程序的各种指标信息
- 包含: JVM内存使用、系统CPU使用、HTTP请求统计等
bash
{
"names": [
"application.ready.time",
"application.started.time",
"disk.free",
"disk.total",
"executor.active",
"executor.completed",
"executor.pool.core",
"executor.pool.max",
"executor.pool.size",
"executor.queue.remaining",
"executor.queued",
"health_status",
"http.server.requests",
"jvm.buffer.count",
"jvm.buffer.memory.used",
"jvm.buffer.total.capacity",
"jvm.classes.loaded",
"jvm.classes.unloaded",
"jvm.gc.live.data.size",
"jvm.gc.max.data.size",
"jvm.gc.memory.allocated",
"jvm.gc.memory.promoted",
"jvm.gc.overhead",
"jvm.gc.pause",
"jvm.memory.committed",
"jvm.memory.max",
"jvm.memory.usage.after.gc",
"jvm.memory.used",
"jvm.threads.daemon",
"jvm.threads.live",
"jvm.threads.peak",
"jvm.threads.states",
"lettuce.command.completion",
"lettuce.command.firstresponse",
"logback.events",
"nacos_server_instance",
"process.cpu.usage",
"process.start.time",
"process.uptime",
"system.cpu.count",
"system.cpu.usage",
"tomcat.sessions.active.current",
"tomcat.sessions.active.max",
"tomcat.sessions.alive.max",
"tomcat.sessions.created",
"tomcat.sessions.expired",
"tomcat.sessions.rejected"
]
}
基于上面返回的信息,我们可方便的查看里面各项指标的值,比如查看health_status
指标
端点:http://localhost:8080/actuator/metrics/health_status
bash
{
"name": "health_status",
"description": null,
"baseUnit": null,
"measurements": [
{
"statistic": "VALUE",
"value": 9.0
}
],
"availableTags": [
{
"tag": "component",
"values": [
"mongo",
"reactiveDiscoveryClients",
"nacosConfig",
"diskSpace",
"ping",
"discoveryComposite",
"refreshScope",
"nacosDiscovery",
"db"
]
},
{
"tag": "application",
"values": [
"服务名"
]
}
]
}
3.4 环境端点
- 端点:
/actuator/env
- 描述: 显示应用程序的环境变量、配置属性等信息
3.5 线程转储端点
- 端点:
/actuator/threaddump
- 描述: 显示应用程序线程转储信息
3.6 堆转储端点
- 端点:
/actuator/heapdump
- 描述: 生成应用程序的堆转储文件
4. 常用配置
4.1 如果不想输出redis 相关的指标可以在.yml
文件中添加如下配置
bash
management:
health:
redis:
enabled: false
5. 安全配置
为了保护敏感端点,建议:
- 添加 Spring Security 依赖
- 配置访问认证
- 仅暴露必要的端点
bash
management:
endpoints:
web:
exposure:
include: health,info,metrics
6. 自定义健康指示器
可以通过实现 HealthIndicator
接口创建自定义健康检查:
bash
@Component
public class CustomHealthIndicator implements HealthIndicator {
@Override
public Health health() {
// 进行健康检查逻辑
return Health.up()
.withDetail("customKey", "customValue")
.build();
}
}
7. 常见应用场景
- 应用程序监控
- 健康检查
- 性能指标收集
- 问题诊断
- 运维管理
8. 最佳实践
- 生产环境中只暴露必要的端点
- 添加适当的安全控制
- 定期监控关键指标
- 配置告警阈值
- 集成到监控系统中
9. 注意事项
- 敏感信息保护
- 性能影响考虑
- 安全访问控制
- 磁盘空间管理(特别是对于heapdump)
- 监控数据的管理和清理
10. 总结
Spring Boot Actuator 是一个强大的监控和管理工具,通过合理配置和使用,可以帮助我们更好地监控和管理 Spring Boot 应用程序。在实际使用中,需要注意安全性和性能的平衡。