1. 程式人生 > 程式設計 >Spring Boot Actuator 整合 Prometheus

Spring Boot Actuator 整合 Prometheus

簡介

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 等等資訊。

原始碼

github.com/gf-huanchup…

參考

micrometer.io/docs/regist…
prometheus.io/docs/promet…

往期內容

關注我