在中,大程序中,隨著用戶體量的增加,監控的重要性就越來越高。一套清晰,明瞭的監控可以極大地幫助開發和運維人員發現程序的問題或不足。
對於 spring boot 程序而言,我們可以使用下面的工具來進行系統級別的監控
- grafana 是一個跨平台的開源的度量分析和可視化工具
- prometheus 是 SoundCloud 開源監控警告解決方案,存儲的是時序數據
- spring boot actuator 可以監控和度量 spring boot 應用程序
程序配置#
首先需要添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--將actuator監控的指標轉為prometheus格式-->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.7.1</version>
</dependency>
在配置文件聲明開放監控指標
management:
endpoints:
web:
# 需要開放的端點。默認值只打開 health 和 info 兩個端點。通過設置 * ,可以開放所有端點。
# 生產環境不建議放開所有 根據項目需求放開即可
exposure:
include: "*"
最好啟動程序進行驗證,訪問 http://localhost:8080/actuator/prometheus
查看監控信息
安裝 Prometheus + Grafana#
以 Ubuntu 為例,先安裝 docker-compose
apt install docker-compose
創建 prometheus.yml 配置文件
scrape_configs:
# 任務名稱
- job_name: 'actuator-springboot'
# 監控路徑
metrics_path: '/actuator/prometheus'
static_configs:
# 目標路徑
# 如果使用wsl或伺服器請填寫IP
- targets: ['localhost:8080']
編寫 docker-compose.yaml
version: '3'
services:
grafana:
container_name: grafana
image: grafana/grafana-oss:10.0.0-ubuntu
environment:
- TZ=Asia/Shanghai
ports:
- 3000:3000
volumes:
- ./grafanaplugin:/var/lib/grafana/plugins/grafanaplugin
privileged: true
restart: always
prom:
image: quay.io/prometheus/prometheus:latest
volumes:
- ./monitor/prometheus.yml:/etc/prometheus/prometheus.yml
command: "--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus"
ports:
- "23333:9090"
depends_on:
- exporter
exporter:
image: prom/node-exporter:latest
ports:
- "19100:9100"
需要注意的是:
prometheus.yml 配置文件應放在 docker-compose.yaml 文件同級的 monitor 文件夾下
grafana 的鏡像使用的是最新的 10.0 版本,底層用的是 Ubuntu,你也可以在官方的下載頁面進行自定義,推薦使用最新版,包含了部分已漢化的中文
一切就緒後使用 docker-compose up -d
命令啟動這些容器
驗證 prometheus 采集#
瀏覽器裡打開 http://localhost:23333, 通過菜單,將頁面切換到 Targets, 在 targets 裡能看到我們的監控任務
配置 Grafana#
訪問 http://localhost:3000
進入 Grafana 的管理面板,默認賬號密碼為 admin/admin
我們已經采集到監控數據了,但還需要在 Grafana 監控面板中顯示
你也可以選用中文語言,在側邊欄選擇 Home --> Administration --> Default preferences
添加數據源#
在 Data sources (數據源) 中點擊添加新數據源,選擇第一個 prometheus
填寫 prometheus 的地址
最下方選擇請求方法為 GET
添加監控樣式#
數據源配置好後,還需要為其設置個監控面板。Grafana 支持根據 ID 直接從市場導入樣式
如 https://grafana.com/grafana/dashboards/4701
選擇儀表板 --> 新建 --> 導入
輸入 4701 然後 Load 即可
完成之後你就可以看到詳細的監控信息了
監控指標解釋#
可以看這篇文章
- 配置 Grafana 監控警報
Spring Boot Actuator+Prometheus + Grafana 監控 JVM 數據
Prometheus 監控 Java 服務,通過 Grafana 工具將 JVM 參數可視化,樣式 4701 參數解讀