Spring Boot 2 Actuator+Prometheus+Grafana監控視覺化簡介
開發環境
Java 版本:open jdk 11
Maven:4.0.0
Spring Boot:2.3.3.RELEASE
開發實作
從Spring Boot 2.0開始,Actuator將底層改為Micrometer,提供了更強、更靈活的監控能力。
Micrometer也支援向監控系統 Prometheus發送metrics,以下為實作說明。
pom.xml 需增加以下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
設定檔application.properties加上相關設定
## ==============================================================
## Actuator
## ==============================================================
management.server.port=7001
management.server.address=10.37.129.2
#開啟所有端點(方便測試,先全開)
management.endpoints.web.exposure.include=*
設定完成,啟動Server,連結測試URL http://10.37.129.2:7001/actuator,可以查看曝露出來的Endpoints。
連結測試URL http://10.37.129.2:7001/actuator/prometheus,查看發送Prometheus的metrics。
Prometheus設定
使用Docker方式安裝,取得最新版本image檔。(PS. 啟動port號9090)
#取得Prometheus docker image(最新)
指令:docker pull prom/prometheus
#啟動容器
docker run -d --name prometheus2021 -p 9090:9090 -v $PWD/prometheus:/etc/prometheus prom/prometheus
修改prometheus.yml,添加job如紅框,路徑則為執行項目路徑。
啟動prometheus,連結網址 http://localhost:9090/targets
Prometheus也有提供監控資料視覺化,點選「Graph」,輸入查詢條件,點選「Execute」即可看到以下圖示結果:
Grafana設定
使用Docker方式安裝,取得最新版本image檔。(PS. 啟動port號3000)
#取得Grafana docker image(最新)
指令:docker pull grafana/grafana
#啟動容器
docker run -d --name=grafana2021 -p 3000:3000 -v $PWD/grafana:/var/lib/grafana grafana/grafana
啟動Grafana,連結網址 http://localhost:3000,初始帳號為admin / admin,第一次登入後會要求更改密碼。
登入成功,點選設定Data Source
URL輸入Prometheus網址,資料確認輸入正確,點選「Save&Test」成功連線Prometheus。
Grafana官方有提供好用的模板供下載使用,以監控JVM為例,下載模板ID為4701
選擇Prometheus,點選「Import」
成功把JVM資料,視覺化呈現,方便人員監控系統。另外還可以設定告警通知,可以更即時知道系統發生問題。
參考資料
https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector
https://prometheus.io/docs/prometheus/latest/installation/#using-docker
https://grafana.com/docs/grafana/latest/installation/docker/
https://www.itread01.com/content/1573459082.html