什么是 Spring Actuator?它有什么优势?
- 标签:Spring Boot、后端
🏛 业务架构师
Spring Boot Actuator 是生产就绪(Production-Ready)模块:一个依赖(spring-boot-starter-actuator)为应用注入运维端点——/actuator/health(健康检查)、/actuator/metrics(性能指标)、/actuator/env、/actuator/info、/actuator/prometheus(对接监控)等。
它解决的业务问题是**"服务上线后怎么被运维和观测"**:
- K8s 探针的标准对接:liveness/readiness 指向 health 端点,就绪探针决定流量何时切入——滚动发布不接半启动实例的关键机制;健康组可细分(readiness 含依赖检查策略);
- 监控体系零成本接入:metrics + Prometheus + Grafana 组合,JVM、Tomcat、Hikari 连接池指标开箱即用,再埋业务指标(订单量、支付成功率)就是完整的业务大盘——可观测性是默认能力而非事后补丁;
- 运行时诊断:配合在线诊断(线程、内存、env 差异比对),缩短故障定位时间(MTTR)。
优势的另一面是安全责任,我的治理红线:
- 只暴露必要端点(
management.endpoints.web.exposure),health/prometheus 之外的端点生产默认关闭——env/heapdump 会泄露密钥和数据,暴露到公网等于开门; - 端点走独立管理端口(
management.server.port)+ 网络隔离(仅内网可达); - Prometheus 抓取走服务发现(如 Nacos/K8s 服务发现),指标采集全自动。
一句话:Actuator 是应用进入生产环境的入场券,用它的前提是管好它的安全边界。
🏗 系统架构师
定位:Boot 的生产就绪端点集——health、metrics、env、loggers、threaddump、prometheus 等,以 Micrometer 为指标门面。
我的四个核心用法:
- K8s 探针契约:
/actuator/health/liveness与/readiness——liveness 决定重启、readiness 决定摘流,语义必须分清(readiness 失败用重启解决是雪崩放大器); - 指标暴露:
/actuator/prometheus对接 Prometheus/Grafana,JVM、Hikari、Tomcat、业务指标统一采集——可观测性栈的起点; - 运行时治理:loggers 端点动态调日志级别(排障神器),threaddump/heapdump 取证;
- 配置审计:env 端点查配置来源链与最终生效值(配合脱敏控制)。
安全红线:Actuator 是高危攻击面——按需最小化暴露(白名单配置)、独立 management port 或仅内网可达、敏感端点(env/heapdump)鉴权加固。历史上多起数据泄露源于裸奔的 env 端点,这一条我会当架构红线管。
💻 全栈开发专家
生产就绪端点集,把应用内部状态暴露成 HTTP:
yaml
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus,env,threaddump,loggers
endpoint:
health:
show-details: when_authorized常用端点与用途:
/actuator/health:K8s 探针标准;/health/liveness、/health/readiness分离存活与就绪——慢启动不会被 liveness 误杀引发重启风暴/actuator/prometheus:接 Prometheus + Grafana 出监控大盘(QPS、RT、JVM、HikariCP、Tomcat 线程全有)/actuator/env:配置实际值与来源优先级,排"配置不生效"神器/actuator/threaddump、/actuator/loggers:运行时动态调日志级别POST /actuator/loggers/com.xxx?configuredLevel=DEBUG,线上排障不重启
安全底线:env/loggers 这类敏感端点绝不能裸奔公网——限内网访问或网关屏蔽 /actuator/** 只放监控采集路径,再叠 Spring Security。我处理过 env 端点泄露数据库密码的教训。一句话:Actuator 是应用可观测性的地基,K8s + Prometheus 体系的标准接口,每个生产服务都该开。