Spring Boot Actuator 整合 Prometheus
阿新 • • 發佈:2019-12-31
簡介
Spring Boot 自帶監控功能 Actuator,可以幫助實現對程式內部執行情況監控,比如監控狀況、Bean載入情況、環境變數、日誌資訊、執行緒資訊等。這一節結合 Prometheus 、Grafana 來更加直觀的展示這些資訊。
實驗
說明
服務名 | 地址 | 埠 |
---|---|---|
Prometheus | 172.16.2.101 | 9090 |
Grafana | 172.16.2.101 | 3000 |
Spring Boot Demo | 172.16.2.204 | 8080 |
建立專案
建立用於測試的 Spring Boot 專案,主要程式碼如下。
pom.xml
<dependency>
<groupId >org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency >
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope >test</scope>
</dependency>
複製程式碼
application.yml
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always
metrics:
tags:
application: actuator-demo
複製程式碼
- management.endpoints.web.exposure.include:大多數actuator的埠都不會通過http公開,* 代表公開所有這些端點。對於生產環境,應該仔細選擇要公開的端點。
- management.metrics.tags.application:為應用設定 tag ,方便區分不同的應用。
啟動類
@SpringBootApplication
@RestController
public class SpringbootActuatorPrometheusDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootActuatorPrometheusDemoApplication.class,args);
}
@RequestMapping(value = "/hello")
public String sayHello() {
for (int i = 1 ; i <= 10 ; i++) {
Thread t = new Thread(() -> {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
},"HelloThread - " + i);
t.start();
}
return "ok";
}
/**
@Bean
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry -> registry.config().commonTags("application","springboot-actuator-prometheus-demo");
}
*/
}
複製程式碼
配置 Prometheus 和 Grafana
在 prometheus.yml 中新增針對該 Spring Boot 應用 的監控 job
- job_name: 'actuator-demo'
metrics_path: '/prometheus'
static_configs:
- targets: ['172.16.2.204:8080']
複製程式碼
執行 Prometheus 和 Grafana:
docker start prometheus grafana
複製程式碼
訪問 Prometheus UI http://172.16.2.101:9090 ,檢視 targets ,可以看到 job 處於 UP 狀態,說明配置成功了。
Grafana UI http://172.16.2.101:3000,通過Grafana的 + 圖示匯入(Import) JVM (Micrometer) dashboard:
- grafana id = 4701
- 注意選中prometheus資料來源
檢視JVM (Micormeter) dashboard:
可以看到應用的 JVM 的 堆疊、 執行緒、 IO 等等資訊。
原始碼
參考
micrometer.io/docs/regist…
prometheus.io/docs/promet…