分佈式 | 如何搭建 DBLE 的 JVM 指標監控系統

本篇文章採用 Docker 方式搭建 Grafana + Prometheus 實現對 DBLE 的 JVM 相關指標的監控系統。

作者:文韻涵

愛可生 DBLE 團隊開發成員,主要負責 DBLE 需求開發,故障排查和社區問題解答。

本文來源:原創投稿

  • 愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。

前言

本篇文章將採用 Docker 方式搭建 Grafana + Prometheus 實現對 DBLE 的 JVM 相關指標(如:CPU、Memory Pool、GC、Thread)的監控系統。

準備

  • Linux 服務器:10.186.63.8
  • 已經安裝 Docker

搭建環境

1. 部署 DBLE

該部分參考參考自 Docker 快速開始

準備 MySQL 容器

# 創建一個 Docker 網段 dble-net:172.18.0.0/16
docker network create -o "com.docker.network.bridge.name"="dble-net" --subnet 172.18.0.0/16 dble-net

# 創建兩個 MySQL 容器,分別映射到主機的 33061 和 33062 作爲 MySQL 的服務端口
docker run --name backend-mysql1 --ip 172.18.0.2 -e MYSQL_ROOT_PASSWORD=123456 -p 33061:3306 --network=dble-net -d mysql:5.7 --server-id=1
docker run --name backend-mysql2 --ip 172.18.0.3 -e MYSQL_ROOT_PASSWORD=123456 -p 33062:3306 --network=dble-net -d mysql:5.7 --server-id=2

如果執行 docker run... 時出現 408 Request Time-out 報錯,請多嘗試幾次。

部署 DBLE

  • 利用 Docker 部署 DBLE 服務。
docker run -d -i -t --name dble-server --ip 172.18.0.4 -p 8066:8066  -p 9066:9066  -p 8099:8099 \
-v /opt/jmx-exporter:/jmx-exporter \
--network=dble-net \
actiontech/dble:latest

其中,8099 表示作爲後續暴露監控指標映射端口。

使用 JMX Exporter 提供的 JVM 進程內啓動(in-process)方式暴露 JVM 的監控指標。在 JVM 啓動時指定參數,通過 javaagent 的形式運行 JMX-Exporter 的 jar 包,進程內讀取 JVM 運行時狀態數據,轉換爲 Prometheus metrics 格式,並暴露端口讓 Prometheus 採集。

# 創建目錄
mkdir /opt/jmx-exporter

# 在 jmx-exporter 目錄中,下載 jmx_prometheus_javaagent-0.15.0.jar
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.15.0/jmx_prometheus_javaagent-0.15.0.jar

目前 DBLE 支持最高版本爲 jmx_prometheus_javaagent-0.15.0.jar,若版本 >0.15.0,DBLE 啓動時會失敗。

同時,添加 prometheus-jmx-config.yaml 文件配置,其內容爲:

ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false

進入 dble-server 容器並添加配置。

docker exec -it dble-server bash

vi /opt/dble/conf/bootstrap.cnf

# 添加配置:
-javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.15.0.jar=8099:/jmx-exporter/prometheus-jmx-config.yaml

重啓 dble 服務,查看 DBLE 是否啓動並退出容器。

/opt/dble/bin/dble restart

vi /opt/dble/logs/wrraper.log

查看 DBLE JVM metric

查詢地址:http://10.186.63.8:8099

2. 部署 Prometheus

利用 Docker 部署 Prometheus 服務。

docker run -itd --name prometheus --ip 172.18.0.5 -p 9090:9090 --network=dble-net prom/prometheus

其中,9090 爲訪問 Prometheus 服務端口。

進入 Prometheus 容器並修改配置,創建 DBLE_Job ,添加 target:172.18.0.4:8099。

docker exec -it prometheus sh

vi /etc/prometheus/prometheus.yml

# 配置內容(將原配置覆蓋)爲:
scrape_configs:
  - job_name: 'DBLE_Job'
    scrape_interval: 30s
    static_configs:
    - targets:
      - '172.18.0.4:8099'

注意:這裏 172.18.0.4 是對應 dble-server 容器的 IP。

退出並重新啓動 Prometheus 容器,訪問 Prometheus 頁面 http://10.186.63.8:9090/targets 驗證配置生效。

3. 部署 Grafana

利用 Docker 部署 Grafana 服務。

docker run -itd --name=grafana --ip 172.18.0.6 -p 3000:3000 --network=dble-net grafana/grafana

訪問 Grafana 的頁面 http://10.186.63.8:3000,使用默認用戶 admin/admin 登錄。

監控指標

導入 JVM 監控模版

在 Grafana 中配置 「Data source」。

選擇添加 Prometheus。

填寫暴露 Prometheus metrics 的地址並且保存。

注意:填寫 Prometheus 容器 IP: http://172.18.0.5:9090 並且保存。

添加「Dashboards」,選擇 Import。

使用模版 ID 爲 8878 或者可導入 8878 對應的 JSON 文件(JVM 模版 ID 還有 8563)。

自定義 Dashboard Name。

效果如下,其中有 CPU、Memory Pool、GC、Thread 等相關指標。

版本注意

  • DBLE 版本<=2.20.04.0,在 bin 目錄中的 wrapper.cnf 配置 JMX-Exporter:
wrapper.java.additional.序號=-javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.15.0.jar=8099:/jmx-exporter/prometheus-jmx-config.yaml
  • DBLE 版本= 3.20.07.0、3.20.10.0,不支持配置 -javaagent,因此無法配置以上監控。
  • DBLE 版本>=3.21.02.0,按照上文配置。 更多技術文章,請訪問:https://opensource.actionsky.com/

關於 SQLE

愛可生開源社區的 SQLE 是一款面向數據庫使用者和管理者,支持多場景審覈,支持標準化上線流程,原生支持 MySQL 審覈且數據庫類型可擴展的 SQL 審覈工具。

SQLE 獲取

類型 地址
版本庫 https://github.com/actiontech/sqle
文檔 https://actiontech.github.io/sqle-docs/
發佈信息 https://github.com/actiontech/sqle/releases
數據審覈插件開發文檔 https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章