1. Actuator 简介

Spring Boot Actuator 是 Spring Boot 提供的 生产级应用监控和管理工具
它能够在不修改业务代码的前提下,自动提供一系列 监控端点(Endpoints),帮助开发者和运维人员了解应用的运行情况。

常见用途包括:

  • 查看应用健康状况(Health)
  • 监控应用运行指标(Metrics)
  • 获取线程、内存、GC、数据库连接池等信息
  • 动态修改日志级别
  • 集成外部监控系统(如 Prometheus、Grafana、Spring Boot Admin)

2. 引入依赖

pom.xml 中添加:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


3. 常见端点 (Endpoints)

Actuator 提供的默认端点包括:

端点作用
/actuator/health显示应用健康状态(UP / DOWN)
/actuator/info显示应用信息(可自定义,如版本、描述)
/actuator/metrics提供 JVM、Tomcat、线程、内存、HTTP 请求等指标
/actuator/env查看应用环境变量、配置属性
/actuator/loggers查看和修改日志级别
/actuator/beans查看 Spring 容器中的 Bean
/actuator/threaddump查看线程快照
/actuator/mappings查看所有请求路径与控制器的映射关系
/actuator/shutdown关闭应用(需手动启用)

4. 开启 Web 访问

默认情况下,Actuator 只开放 /actuator/health/actuator/info 两个端点。
如果想要开放更多,可以在 application.yml 中配置:

management:
  endpoints:
    web:
      exposure:
        include: "*"   # 开放所有端点
        # exclude: "shutdown"  # 可以排除某些端点
  endpoint:
    health:
      show-details: always   # 总是显示详细健康信息

访问路径:

http://localhost:8080/actuator


5. 健康检查 (Health)

Actuator 提供健康检查机制,可集成数据库、Redis、MQ、磁盘等组件状态。

例如:

management:
  endpoint:
    health:
      show-details: always

返回示例:

{
  "status": "UP",
  "components": {
    "db": {
      "status": "UP",
      "details": {
        "database": "MySQL",
        "validationQuery": "isValid()"
      }
    },
    "diskSpace": {
      "status": "UP",
      "details": {
        "total": 499963170816,
        "free": 23456789123,
        "threshold": 10485760
      }
    }
  }
}


6. 指标监控 (Metrics)

/actuator/metrics 提供运行时指标,例如:

  • jvm.memory.used (JVM 内存使用)
  • jvm.threads.live (线程数)
  • http.server.requests (HTTP 请求数)
  • tomcat.sessions.active.current (当前会话数)

查看某个指标:

http://localhost:8080/actuator/metrics/jvm.memory.used


7. 动态日志级别 (Loggers)

/actuator/loggers 可查看和修改日志级别:

  • GET 查看:
GET http://localhost:8080/actuator/loggers/com.example.demo

  • POST 修改:
POST http://localhost:8080/actuator/loggers/com.example.demo
Content-Type: application/json

{
  "configuredLevel": "DEBUG"
}


8. 安全控制

Actuator 的端点一般不应暴露给外网,否则可能泄露敏感信息。
建议加上 Spring Security 或 Nginx 限制。

application.yml 配置:

management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics
  server:
    port: 8081   # 让 Actuator 单独运行在管理端口


9. 与监控系统集成

Actuator 可以轻松接入外部监控系统:

  • Prometheus:结合 micrometer-registry-prometheus,提供 /actuator/prometheus 指标,适配 Grafana 可视化
  • Spring Boot Admin:集中管理和监控多个 Spring Boot 应用
  • ELK / Zipkin:日志与链路追踪

10. 实战小结

  1. 开发环境:可开放所有端点 *,便于调试
  2. 测试 / 生产环境:只开放 healthinfometrics
  3. 使用 Spring Security 或网关做访问保护
  4. 配合监控系统做可视化和告警

好,阿杰,我给你整理一份 Spring Boot Actuator + Prometheus + Grafana 完整监控集成实战教程,从依赖、配置到可视化都有示例。


Spring Boot Actuator + Prometheus + Grafana 集成实战

1️⃣ 添加依赖

pom.xml 中加入 Actuator 和 Micrometer Prometheus 支持:

<dependencies>
    <!-- Spring Boot Actuator -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- Micrometer Prometheus -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
</dependencies>


2️⃣ 配置 Actuator 和 Prometheus

application.yml 中配置:

management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,prometheus  # 开放 Prometheus 指标端点
  endpoint:
    health:
      show-details: always
  metrics:
    enable:
      all: true
  server:
    port: 8080  # 应用端口

说明:

  • /actuator/prometheus:Prometheus 拉取指标的接口
  • /actuator/health:健康检查
  • /actuator/metrics:应用运行指标

3️⃣ 验证指标端点

启动 Spring Boot 应用后访问:

http://localhost:8080/actuator/prometheus

你会看到类似如下内容:

# HELP jvm_memory_used_bytes Used bytes of a given JVM memory area.
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{area="heap",id="PS Eden Space"} 1.23E7
...


4️⃣ 配置 Prometheus

假设你已经安装 Prometheus(Prometheus 官方下载)。
prometheus.yml 中添加 Spring Boot 应用监控目标:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'spring-boot-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['localhost:8080']  # Spring Boot 应用地址

启动 Prometheus,然后在 Web UI 访问:

http://localhost:9090

搜索指标如 jvm_memory_used_byteshttp_server_requests_seconds_count


5️⃣ 配置 Grafana

  1. 安装 Grafana(Grafana 官方下载
  2. 登录 Grafana(默认 admin/admin)
  3. 添加数据源:
    • 类型:Prometheus
    • URL:http://localhost:9090
  4. 创建 Dashboard:
    • 新建 Panel
    • 查询示例:
      • JVM 内存:jvm_memory_used_bytes{area="heap"}
      • 活跃线程数:jvm_threads_live
      • HTTP 请求速率:rate(http_server_requests_seconds_count[1m])

Grafana 支持自动刷新、告警和可视化图表,非常适合生产监控。


6️⃣ 安全和优化

  • 生产环境安全
    • 限制 /actuator/prometheus 访问
    • 可用 Spring Security 或 Nginx 反向代理
  • 分离端口management: server: port: 8081 Prometheus 拉取指标时访问管理端口
  • 性能优化
    • 减少指标采集频率(Prometheus scrape_interval)
    • 只暴露必要指标

7️⃣ 最终架构图

Spring Boot App
 ├─ /actuator/prometheus (Micrometer)
 │
 Prometheus (定期拉取指标)
 │
 Grafana (可视化和告警)


✅ 总结:

  1. Actuator 提供丰富指标
  2. Micrometer 作为指标桥接 Prometheus
  3. Prometheus 拉取数据,Grafana 可视化
  4. 安全、端口分离、采集优化是生产必备