天天看点

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