qinfengge

qinfengge

醉后不知天在水,满船清梦压星河
github
email
telegram

spring boot 監控 JVM

在中,大程序中,隨著用戶體量的增加,監控的重要性就越來越高。一套清晰,明瞭的監控可以極大地幫助開發和運維人員發現程序的問題或不足。

對於 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 查看監控信息

image

安裝 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 文件夾下

image

grafana 的鏡像使用的是最新的 10.0 版本,底層用的是 Ubuntu,你也可以在官方的下載頁面進行自定義,推薦使用最新版,包含了部分已漢化的中文

一切就緒後使用 docker-compose up -d 命令啟動這些容器

驗證 prometheus 采集#

瀏覽器裡打開 http://localhost:23333, 通過菜單,將頁面切換到 Targets, 在 targets 裡能看到我們的監控任務

image

image

配置 Grafana#

訪問 http://localhost:3000 進入 Grafana 的管理面板,默認賬號密碼為 admin/admin
我們已經采集到監控數據了,但還需要在 Grafana 監控面板中顯示
你也可以選用中文語言,在側邊欄選擇 Home --> Administration --> Default preferences

image

添加數據源#

在 Data sources (數據源) 中點擊添加新數據源,選擇第一個 prometheus

image

填寫 prometheus 的地址
image

最下方選擇請求方法為 GET

image

添加監控樣式#

數據源配置好後,還需要為其設置個監控面板。Grafana 支持根據 ID 直接從市場導入樣式
https://grafana.com/grafana/dashboards/4701
選擇儀表板 --> 新建 --> 導入

image

輸入 4701 然後 Load 即可

image

完成之後你就可以看到詳細的監控信息了

image

監控指標解釋#

可以看這篇文章

  • 配置 Grafana 監控警報

Spring Boot Actuator+Prometheus + Grafana 監控 JVM 數據
Prometheus 監控 Java 服務,通過 Grafana 工具將 JVM 參數可視化,樣式 4701 參數解讀

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。