Spring Boot 项目监控
Spring Boot Dashboard
Spring Boot Dashboard 是开发环境下 IDE 内的运行管理工具,是开发必备;其核心功能如下:
1>. 启动 / 停止 Spring Boot 应用
2>. 多服务分组管理(微服务时方便)
3>. 查看控制台日志
4>. 显示运行状态(Running / Stopped)
5>. 简化版的项目状态监测(依赖于 Actuator )
Spring Boot Actuator
Spring Boot Actuator 是应用内部的“监控数据提供者”,必须安装业务项目内;它只提供监控数据,不提供可视化界面;
其核心功能是以 HTTP 接口的方式提供如下监控信息(JSON格式):
/actuator/health→ 服务健康状态/actuator/metrics→ 各类指标/actuator/env→ 环境变量/actuator/loggers→ 动态日志级别/actuator/mappings→ 请求映射
Spring Boot Actuator 的使用场景是:服务存活检测、容器 / K8s 探针、问题排查(线程、内存)、动态调整日志级别等;
Spring Boot Admin
Spring Boot Admin 是 Spring Boot Actuator 的可视化界面;其核心功能是以可视化的方式展现 Spring Boot Actuator 的监控数据。具体功能如下:
- 应用列表管理(多实例)
- 健康状态可视化
- 指标图表展示
- JVM 信息查看
- 动态修改日志级别
- 简单告警(可扩展)
Spring Boot Admin 的使用场景是中小项目的可视化监控;Spring Boot Admin 以独立服务的方式部署运行,可同时监控多个项目。
Spring Boot Admin 不适合大型项目监控,例如:大规模微服务、复杂监控(报警、历史分析);中大型项目或云原生体系应该使用 Prometheus + Grafana。
项目监控的目标
监控的本质是为了“变被动为主动”。如果没有监控,只能等用户投诉才知道系统挂了;有了监控,就能在用户发现之前就解决问题。
Spring Boot Admin (SBA) 的核心意义在于实时反馈系统的可用性,具体体现在以下三个维度:
1>. 监控的三个核心目的
- 快速定位故障:当系统变慢或报错时,监控能反馈是 CPU 飙升、内存溢出(OOM),还是数据库连接池满了;从而缩短排查问题的时间。
- 预警与防范:监控可以设置阈值。例如:磁盘空间剩余不足 10% 时发邮件报警;让系统彻底崩溃前有时间介入处理。
- 性能调优依据:通过观察长期的内存、线程曲线,可以判断当前的服务器配置是“买多了浪费”还是“买少了扛不住”。
2>. “健康度”的具体含义
在 Spring Boot Admin 中,健康度(Health)不仅仅是一个“绿色运行中”的图标,它代表了端到端的可用性链条:
- 存活判定:应用进程是否还在运行?如果进程挂了,健康度直接消失。
- 外部依赖检查:这是最实用的。Spring Boot 会自动检查:
- 数据库:能否执行一条简单的查询(如
SELECT 1)? - Redis/MQ:能否正常连接和读写?
- 磁盘:剩余空间是否足以支撑写入日志?
- 如果其中任何一项失败,健康状态会从
UP变为DOWN。
3. 健康度的实际应用场景(以自动化为例)
“健康度”是给自动化运维系统看的:
- 与 Nginx/网关联动:如果某个应用实例的健康度变为
DOWN,网关可以自动切断发往该实例的流量,防止用户访问到报错页面。 - 与 Kubernetes (K8s) 联动:K8s 会定时调用健康检查接口。如果发现应用不健康,它会自动杀掉旧容器并重启一个新容器,实现服务的“自愈”。
- 滚动发布验证:当你发布新代码时,监控系统会确认新版本健康度为
UP后,才会关掉旧版本,确保发布过程无感。
健康度就是系统的“体检报告”。它把“程序还在跑”和“程序能正常干活”区分开了。