代碼示例:https://github.com/741978260/delay-spring-boot-starter.git
一、簡述
Spring Boot Actuator可以幫助你監控和管理Spring Boot應用,比如健康檢查、審計、統計和HTTP追蹤等。所有的這些特性可以通過JMX或者HTTP endpoints來獲得
Prometheus是一個開源的監控系統,數據爬蟲:根據配置的時間定期的通過HTTP抓去metrics數據;time-series 數據庫:存儲所有的metrics數據;簡單的用戶交互接口:可視化、查詢和監控所有的metrics
Grafana使你能夠把來自不同數據源比如Elasticsearch, Prometheus, Graphite, influxDB等多樣的數據以絢麗的圖標展示出來;它也能基於你的metrics數據發出告警。當一個告警狀態改變時,它能通知你通過email,slack或者其他途徑
二、應用
1. 應用添加依賴
<!--監控報警-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.驗證
應用啟動了,你可以通過http://localhost:8080/actuator來展示所有通過HTTP暴露的endpoints
默認暴露了2個端點,端點進入,可以看到是health 、info
3.添加配置
通過設置management.endpoints.web.exposure.include
為*,暴露了所有端點;management.endpoint.health.show-details為always 可以展示細節
針對health檢查,指定去掉某項的檢查(比如不監控health.mail,health.sentinel):
4.增加Micrometer Prometheus Registry到你的Spring Boot應用
Spring Boot使用Micrometer,一個應用metrics組件,將actuator metrics整合到外部監控系統中;為了整合Prometheus,你需要增加micrometer-registry-prometheus
依賴:
<!-- Micrometer Prometheus registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
一旦你增加上述的依賴,Spring Boot會自動配置一個PrometheusMeterRegistry
和CollectorRegistry
來收集和輸出格式化的metrics數據,使得Prometheus服務器可以爬取。
所有應用的metrics數據是根據一個叫/prometheus
的endpoint來設置是否可用。Prometheus服務器可以周期性的爬取這個endpoint來獲取metrics數據
驗證:
5.使用Docker下載和運行Prometheus (linux下docker下載應用參加上一篇文章)
你可以使用docker pull
命令來下載Prometheus docker image
docker images
docker pull prom/prometheus
docker images
mkdir prometheus
cd prometheus/
touch prometheus.yml
vim prometheus.yml
6.Prometheus配置(prometheus.yml)
7.使用Docker運行Prometheus
docker run -d --name=prometheus -p 9090:9090 -v /opt/prometheus/prometheus.yml:/opt/prometheus/prometheus.yml prom/prometheus --config.file=/opt/prometheus/prometheus.yml
docker ps
8.在Prometheus儀表盤中可視化Spring Boot Metrics
9.使用Docker下載和運行Grafana
docker images
docker pull grafana/grafana
docker images
docker run -d --name=grafana -p 3000:3000 grafana/grafana
docker ps
10.你可以訪問http://xxx:3000,並且使用默認的賬戶名(admin)密碼(admin)來登錄Grafana
11.添加dashboard,編寫prometheus的查詢表達式