這篇文章本來是打算使用pmm 進行數據庫監控的,但是居然參考官方文檔使用docker 運行起來有點問題,所以直接改用
exporter 進行處理,但是比pmm 弱好多
pmm 的參考架構
說明,以上圖比較早了, 實際上也可以監控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 - 效果
說明
以上是一個簡單的集成,實際上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