Skip to content

什么是 Spring Actuator?它有什么优势? ​

  • 标签:Spring Boot、后端

🏛 业务架构师 ​

Spring Boot Actuator 是生产就绪(Production-Ready)模块:一个依赖(spring-boot-starter-actuator)为应用注入运维端点——/actuator/health(健康检查)、/actuator/metrics(性能指标)、/actuator/env、/actuator/info、/actuator/prometheus(对接监控)等。

它解决的业务问题是**"服务上线后怎么被运维和观测"**:

  1. K8s 探针的标准对接:liveness/readiness 指向 health 端点,就绪探针决定流量何时切入——滚动发布不接半启动实例的关键机制;健康组可细分(readiness 含依赖检查策略);
  2. 监控体系零成本接入:metrics + Prometheus + Grafana 组合,JVM、Tomcat、Hikari 连接池指标开箱即用,再埋业务指标(订单量、支付成功率)就是完整的业务大盘——可观测性是默认能力而非事后补丁;
  3. 运行时诊断:配合在线诊断(线程、内存、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 为指标门面。

我的四个核心用法:

  1. K8s 探针契约:/actuator/health/liveness 与 /readiness——liveness 决定重启、readiness 决定摘流,语义必须分清(readiness 失败用重启解决是雪崩放大器);
  2. 指标暴露:/actuator/prometheus 对接 Prometheus/Grafana,JVM、Hikari、Tomcat、业务指标统一采集——可观测性栈的起点;
  3. 运行时治理:loggers 端点动态调日志级别(排障神器),threaddump/heapdump 取证;
  4. 配置审计: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 体系的标准接口,每个生产服务都该开。