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. 实战小结
- 开发环境:可开放所有端点
*
,便于调试 - 测试 / 生产环境:只开放
health
、info
、metrics
- 使用 Spring Security 或网关做访问保护
- 配合监控系统做可视化和告警
好,阿杰,我给你整理一份 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_bytes
或 http_server_requests_seconds_count
。
5️⃣ 配置 Grafana
- 安装 Grafana(Grafana 官方下载)
- 登录 Grafana(默认 admin/admin)
- 添加数据源:
- 类型:Prometheus
- URL:
http://localhost:9090
- 创建 Dashboard:
- 新建 Panel
- 查询示例:
- JVM 内存:
jvm_memory_used_bytes{area="heap"}
- 活跃线程数:
jvm_threads_live
- HTTP 请求速率:
rate(http_server_requests_seconds_count[1m])
- JVM 内存:
Grafana 支持自动刷新、告警和可视化图表,非常适合生产监控。
6️⃣ 安全和优化
- 生产环境安全:
- 限制
/actuator/prometheus
访问 - 可用 Spring Security 或 Nginx 反向代理
- 限制
- 分离端口:
management: server: port: 8081
Prometheus 拉取指标时访问管理端口 - 性能优化:
- 减少指标采集频率(Prometheus scrape_interval)
- 只暴露必要指标
7️⃣ 最终架构图
Spring Boot App
├─ /actuator/prometheus (Micrometer)
│
Prometheus (定期拉取指标)
│
Grafana (可视化和告警)
✅ 总结:
- Actuator 提供丰富指标
- Micrometer 作为指标桥接 Prometheus
- Prometheus 拉取数据,Grafana 可视化
- 安全、端口分离、采集优化是生产必备
发表回复