Spring Boot Admin (SBA) 是一个用于管理和监控 Spring Boot 应用的开源工具,它提供了一个直观的 Web UI 界面,帮助开发者实时掌握应用的运行状态。你提到的这些功能模块是 SBA 的核心组成部分。下面我将详细解读每个模块的功能、使用方法和配置要点,助你全面掌握 SBA 的使用与配置。
🎯 一、SBA 概述
- 作用:集中监控多个 Spring Boot 微服务实例。
- 原理:客户端通过暴露 Actuator 端点,SBA Server 定期拉取数据并展示。
- 依赖技术:Spring Boot Actuator + SBA Client + SBA Server
✅ 前提:确保所有被监控的服务启用了 Actuator 并正确配置了暴露端点。
🔹 1. Wallboard(总览面板)
功能说明:
- 展示所有注册应用的整体健康状态概览。
- 提供按健康状态(UP/DOWN/OUT_OF_SERVICE/UNKNOWN)分类的统计信息。
- 快速跳转到具体应用详情页。
使用场景:
- 运维人员快速判断系统整体是否正常。
- 发现异常服务实例的第一道防线。
配置建议:
- 可自定义刷新频率(默认 15s)。
- 支持过滤器(如按标签、状态筛选)。
💡 提示:Wallboard 是“第一眼”看板,适合大屏展示或值班监控。
🔹 2. Applications(应用列表)
功能说明:
- 列出所有注册到 SBA 的应用实例。
- 显示关键信息:应用名、实例数、状态、运行时长、地址等。
- 支持分组、搜索、排序。
关键字段解释:
| 字段 | 说明 |
|---|---|
| Name | 应用名称(来自 spring.application.name) |
| Status | 当前健康状态(UP/DOWN) |
| Instances | 实例数量(支持多实例) |
| Version | Spring Boot 版本 |
| URL | 实例访问地址 |
| Last Heartbeat | 最近一次心跳时间 |
使用技巧:
- 点击应用名进入 Details 页面深入分析。
- 支持通过元数据(metadata)进行逻辑分组(如 dev/staging/prod)。
配置示例(客户端):
spring:
boot:
admin:
client:
url: http://localhost:8080
application:
name: user-service
🔹 3. Details(应用详情)——重点模块
3.1 基本信息(General Info)
包含内容:
- Spring Boot 版本
- JVM 版本(Java Home)
- 启动参数(JVM Args)
- 主机名、IP 地址
- 应用启动时间、运行时长
- PID
排查用途:
- 是否使用了正确的 JDK 版本?
- 内存设置是否合理?(如
-Xmx) - 多实例部署时是否混淆了机器?
✅ 推荐:结合日志定位问题源头。
3.2 Metrics(指标监控)📊
支持的指标类型:
| 类别 | 指标示例 | 用途 |
|---|---|---|
| JVM 内存 | jvm.memory.used, jvm.memory.max | 分析堆内存使用趋势 |
| GC | jvm.gc.pause, jvm.gc.memory.promoted | 判断 GC 频率和停顿时间 |
| 线程 | jvm.threads.live, jvm.threads.daemon | 检查线程泄漏 |
| CPU | process.cpu.usage, system.cpu.usage | 定位性能瓶颈 |
| 文件描述符 | process.files.max, process.files.open | Linux 下排查资源耗尽 |
| HTTP 请求 | http.server.requests | 查看接口 QPS、响应时间 |
图表解读技巧:
- 内存图:观察 old gen 是否持续上升 → 可能存在内存泄漏。
- GC 图:频繁 Full GC → 考虑调优或检查缓存。
- CPU 图:突增 → 结合 Threads 分析是否有死循环或高负载任务。
配置要求(客户端):
management:
endpoints:
web:
exposure:
include: "*"
metrics:
export:
prometheus:
enabled: true
⚠️ 注意:部分指标需要引入 micrometer-registry-prometheus。
3.3 Environment(环境变量与配置)🔧
功能:
- 查看所有配置源(Property Sources):
- application.yml
- OS 环境变量
- JVM 系统属性
- 命令行参数
- 配置中心(如 Nacos、Config Server)
排查用途:
- 配置未生效?→ 检查优先级和拼写。
- 数据库连接错误?→ 核对
spring.datasource.url。 - Profile 是否正确激活?
使用技巧:
- 支持搜索关键字(如 “datasource”)。
- 查看
refresh时间戳,确认是否动态刷新过配置。
✅ 强烈推荐用于 配置问题定位!
3.4 JMX(MBeans 管理)🛠️
功能:
- 浏览并操作 JVM 中注册的 MBean。
- 可执行操作(invoke)、查看属性值。
典型应用场景:
- 手动触发 GC(
com.sun.management:type=HotSpotDiagnostic→gc()) - 查看线程池状态(如 Tomcat 线程池)
- 自定义业务 MBean 暴露(如清空缓存)
注意事项:
- 需要开启 JMX(生产环境慎用,存在安全风险)
- 默认只读,部分操作需权限
启用方式(JVM 参数):
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
🔒 生产建议配合防火墙 + 认证机制使用。
3.5 Threads(线程分析)🧵
功能:
- 获取当前 JVM 的线程转储(Thread Dump)
- 显示线程名称、状态、栈轨迹、CPU 占用等
状态解读:
| 状态 | 含义 |
|---|---|
| RUNNABLE | 正在执行 |
| BLOCKED | 等待锁 |
| WAITING/TIMED_WAITING | 等待通知或超时 |
| DEADLOCKED | 死锁(SBA 会标红提示) |
排查问题:
- 接口卡顿?→ 查看是否有大量 BLOCKED 线程。
- CPU 飙升?→ 找出占用最高的 RUNNABLE 线程栈。
- 死锁检测:SBA 会自动标记死锁线程。
使用建议:
- 在系统卡顿时立即抓取 Thread Dump。
- 对比多次 dump,识别长期阻塞点。
3.6 Http Traces(HTTP 请求轨迹)🔍
功能:
- 显示最近 N 条 HTTP 请求记录(默认 100 条)
- 包括:时间、方法、URL、状态码、耗时、User-Agent、Session ID 等
配置要求(客户端):
management:
trace:
http:
include: "timestamp,principal,session,headers,request,remote-address,response,time-taken"
endpoints:
web:
exposure:
include: httptrace
✅ 推荐开启
time-taken字段以分析慢请求。
使用场景:
- 排查 5xx 错误来源。
- 分析某用户请求失败过程。
- 审计 API 调用行为。
⚠️ 注意:开启后有一定性能开销,生产环境建议限制 trace 数量。
3.7 Caches(缓存管理)🧩
功能:
- 列出当前应用中所有的 Cache Managers(如 Caffeine、Ehcache、RedisCacheManager)
- 显示缓存名称、大小、命中率、条目数
操作能力:
- 清空指定缓存(Clear)
- 查看缓存统计信息(如命中率)
使用场景:
- 缓存更新后手动刷新。
- 排查缓存击穿/雪崩问题。
- 验证缓存是否生效。
示例操作:
点击 “Clear” 按钮 → 强制重建缓存。
✅ 特别适用于调试阶段或发布后缓存预热。
3.8 Health(健康检查)✅
功能:
- 展示整体健康状态(UP/DOWN)
- 展开后查看各子项健康状况
常见健康指标:
| 组件 | 健康检查项 |
|---|---|
| DB | 数据库连接是否可用 |
| Redis | 连接是否正常 |
| DiskSpace | 磁盘是否充足 |
| RabbitMQ/Kafka | 消息中间件连接 |
| Custom Health Indicators | 自定义检查(如第三方 API 可用性) |
深入分析:
- 点击 DOWN 的组件 → 查看详细错误信息(如连接超时原因)
- 支持自定义健康指示器:
@Component
public class MyHealthIndicator implements HealthIndicator {
@Override
public Health health() {
if (isServiceOk()) {
return Health.up().withDetail("status", "OK").build();
} else {
return Health.down().withDetail("error", "Service unreachable").build();
}
}
}
✅ 是故障定位的第一步:先看 Health → 再查 Logs/Metrics。
🛠️ 二、常见配置总结(客户端)
确保以下配置启用:
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
env:
enabled: true
metrics:
enabled: true
loggers:
enabled: true
threaddump:
enabled: true
heapdump:
enabled: true
trace:
http:
include: "timestamp,principal,session,headers,request,response,time-taken"
metrics:
export:
prometheus:
enabled: true
✅ 注意:生产环境不要暴露所有端点,应按需开放,并增加安全认证(如 Spring Security)。
🧩 三、高级技巧与最佳实践
| 技巧 | 说明 |
|---|---|
| 标签分组 | 使用 metadata 分组环境:spring.boot.admin.client.metadata.environment=prod |
| 通知告警 | 集成邮件、Slack、Webhook 实现 DOWN 告警 |
| 持久化存储 | 使用 MySQL/PostgreSQL 存储历史数据(需配置 SBA Server 数据源) |
| 安全加固 | SBA Server 加上登录认证,防止未授权访问 |
| 自动注册发现 | 结合 Eureka/Nacos,实现自动注册 |
✅ 总结:SBA 各模块用途一览表
| 模块 | 主要用途 | 排查场景 |
|---|---|---|
| Wallboard | 整体健康概览 | 第一时间发现异常 |
| Applications | 应用列表管理 | 多实例管理 |
| Details > Info | 查看运行环境 | 版本、JVM、启动参数核对 |
| Metrics | 监控资源使用 | 内存泄漏、CPU 飙升 |
| Environment | 查看配置 | 配置未生效、参数错误 |
| JMX | 深度管理 MBean | 手动 GC、线程池管理 |
| Threads | 分析线程状态 | 死锁、阻塞、高 CPU |
| Http Traces | 追踪请求链路 | 接口报错、性能慢 |
| Caches | 管理缓存 | 缓存失效、刷新 |
| Health | 健康检查总览 | 数据库断连、磁盘满 |
2072

被折叠的 条评论
为什么被折叠?



