天天看點

promethues exporter+ grafana 監控pg+mysql - 榮鋒亮

promethues exporter+ grafana 監控pg+mysql

這篇文章本來是打算使用pmm 進行資料庫監控的,但是居然參考官方文檔使用docker 運作起來有點問題,是以直接改用

exporter 進行處理,但是比pmm 弱好多

pmm 的參考架構

promethues exporter+ grafana 監控pg+mysql - 榮鋒亮

說明,以上圖比較早了, 實際上也可以監控mongodb,同時也是使用exporter處理的,隻是pmm 基于grafanna 的擴充比較多

對于系統分析名額更全

環境準備

  • docker-compose 檔案
version: "3"      
services:       
pgloader-mysql:      
image: dimitri/pgloader      
command: pgloader mysql://root:dalongrong@mysql/gogs postgresql://postgres:dalong@postgres:5432/appdemo      
gogs:      
image: gogs/gogs      
ports:      
- "10022:22"      
- "3001:3000"      
volumes:      
- ./data/gogs:/data      
mysqlexporter:      
image: prom/mysqld-exporter      
ports:       
- "9104:9104"      
environment:       
- "DATA_SOURCE_NAME=root:dalongrong@(mysql:3306)/"      
grafana:      
image: grafana/grafana      
ports:      
- "3000:3000"      
prometheus:      
image: prom/prometheus      
volumes:      
- "./prometheus.yml:/etc/prometheus/prometheus.yml"      
ports:      
- "9090:9090"       
mysql:      
image: mysql:5.7.16      
ports:      
- 3306:3306      
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci      
environment:      
MYSQL_ROOT_PASSWORD: dalongrong      
MYSQL_DATABASE: gogs      
MYSQL_USER: gogs      
MYSQL_PASSWORD: dalongrong      
TZ: Asia/Shanghai      
postgres:      
build:       
context: ./pg      
dockerfile: Dockerfile      
ports:      
- "5432:5432"      
environment:      
- "POSTGRES_PASSWORD:dalong"      
pgexporter:      
image: wrouesnel/postgres_exporter:latest      
ports:      
- 9187:9187      
environment:      
- DATA_SOURCE_NAME=postgresql://postgres:dalong@postgres:5432/postgres_exporter?sslmode=disable      
  • 說明

    以上服務有點多,包含了mysql 、pg 以及對應的exporter 同時還有一個gogs git 服務,同時也包含了一個mysql 到pg 遷移的工具pgloader

  • promethues 配置檔案
scrape_configs:      
- job_name: pg      
metrics_path: /metrics      
scrape_interval: 10s      
scrape_timeout: 10s      
static_configs:      
- targets: [\'pgexporter:9187\']      
- job_name: mysql      
metrics_path: /metrics      
scrape_interval: 10s      
scrape_timeout: 10s      
static_configs:      
- targets: [\'mysqlexporter:9104\']      
  • pg dockerfile

    這個是改動過的pg 鏡像,添加了pmm client (測試用的),裡面包含了與pmm 內建的配置,但是暫時沒用到,後期會嘗試使用

FROM postgres:latest      
RUN set -ex; \      
apt-get update; \      
apt-get install -y gnupg apt-transport-https; \      
echo \'deb https://repo.percona.com/apt stretch main\' > /etc/apt/sources.list.d/percona.list; \      
apt-get update && apt-get install -y --allow-unauthenticated pmm-client; \      
apt-get remove --purge -y gnupg apt-transport-https; \      
apt-get autoremove -y --purge; \      
rm -rf /var/lib/apt/lists/* \      
true      
COPY init.sql /docker-entrypoint-initdb.d/      
COPY initpmm.sh /root/      

啟動&&測試

  • 啟動
docker-compose up -d      
  • 配置grafanna

    主要是關于prometheus 以及dashboard json 檔案的導入, 具體檔案參考github 項目

  • 配置gogs git server

    打開 http://localhost:3001 就可以進行配置了

  • 運作資料導入操作

    目的很簡單就是進行資料的一些操作,多些監控名額的資料

    docker-compose up pgloader-mysql

  • 效果
promethues exporter+ grafana 監控pg+mysql - 榮鋒亮
promethues exporter+ grafana 監控pg+mysql - 榮鋒亮
promethues exporter+ grafana 監控pg+mysql - 榮鋒亮

說明

以上是一個簡單的內建,實際上pmm還是一個不錯的選擇,後邊重新配置下,運作起來,pmm還是不錯的資料庫監控工具。

參考資料

https://grafana.com/grafana/dashboards/6742/revisions

https://grafana.com/grafana/dashboards/6239/revisions

https://github.com/rongfengliang/mysql-pg-exporter-prometheus-grafana-docker-compose