文章目錄
- Spring Boot + Prometheus 實現應用監控(基于 Actuator 和 Micrometer)
- 環境準備
- 示例結構
- 啟動和驗證
- 驗證 Spring Boot 應用
- Prometheus 抓取配置(靜態方式)
- Grafana 面板配置
- 總結
Spring Boot + Prometheus 實現應用監控(基于 Actuator 和 Micrometer)
在微服務架構中,監控是保障系統穩定運行的關鍵組成部分。本文將介紹如何通過 Spring Boot 的 actuator
和 micrometer
組件,將應用的運行指標暴露出來,并使用 Prometheus 定時采集這些指標數據。
環境準備
- JDK:21
- Spring Boot:3.2.5
- 構建工具:Maven
- 監控工具:Prometheus 2.53.4 安裝參考
- 面板工具:Grafana v9.1.2 安裝參考
示例結構
test/
├── pom.xml # Maven 項目對象模型文件
├── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── DemoMonitorApplication.java # 主類(示例控制器)
│ └── resources
│ └── application.yml # 應用配置文件
pom.xml 文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- ? 加入 Spring Boot 官方 parent,自動管理版本號 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo-monitor</artifactId><version>1.0.0</version><packaging>jar</packaging><name>demo-monitor</name><properties><java.version>21</java.version></properties><dependencies><!-- Web 服務 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Actuator 監控端點 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Prometheus 指標導出 --><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency></dependencies><build><plugins><!-- Spring Boot 插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
模塊 | 用途 |
---|---|
spring-boot-starter-web | 提供 Web 支持 |
spring-boot-starter-actuator | 暴露監控端點(如 /actuator/health ) |
micrometer-registry-prometheus | 讓 Prometheus 能采集指標 |
spring-boot-maven-plugin | Maven 構建可執行 jar 的插件 |
src/main/java/com/example/DemoMonitorApplication.java 內容如下:
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoMonitorApplication {public static void main(String[] args) {SpringApplication.run(DemoMonitorApplication.class, args);}
}
src/main/resources/application.yml 內容如下:
server:port: 8080management:endpoints:web:exposure:include: "*"endpoint:health:show-details: alwaysmetrics:export:prometheus:enabled: true
說明:
management.endpoints.web.exposure.include
: 暴露的端點,必須包含prometheus
management.metrics.export.prometheus.enabled
: 啟用 Prometheus 導出- 默認 Prometheus 指標路徑為
/actuator/prometheus
- 注意:上述依賴中未顯式聲明版本號,是因為使用了 Spring Boot 的官方 parent
啟動和驗證
使用 Maven 啟動項目:
./mvnw spring-boot:run
或打包后運行:
mvn clean package
java -jar target/demo-monitor-1.0.0.jar
然后就可以看到有個 8080 端口啟動了
驗證 Spring Boot 應用
啟動應用后,訪問指標接口:
http://localhost:8080/actuator/prometheus
你可以看到形如以下格式的指標輸出:
Prometheus 抓取配置(靜態方式)
Prometheus 配置示例(prometheus.yml
):
scrape_configs:- job_name: 'spring-boot-app'metrics_path: '/actuator/prometheus'static_configs:- targets: ['localhost:8080']
啟動 Prometheus 后,訪問 http://localhost:9090 ,你就可以查詢該 Spring Boot 應用的各類指標了,如:
Grafana 面板配置
表盤市場導入儀表盤:訪問地址
ID:14370
總結
- 依賴配置簡單:通過引入
spring-boot-starter-actuator
和micrometer-registry-prometheus
,即可在 Spring Boot 中集成監控能力。 - 指標暴露統一:所有 JVM、應用及自定義指標統一暴露在
/actuator/prometheus
接口上。 - Prometheus 易于集成:通過 Prometheus 的
scrape_configs
采集配置,即可定時拉取指標數據。 - 適用于單體與微服務架構:無論是本地部署還是容器化,Spring Boot + Prometheus 都是輕量而強大的監控方案。
若后續部署在 Kubernetes 集群中采集多實例指標。歡迎繼續探討 👇