最近研究了对于Mysql的监控,感觉Prometheus还是挺强大的,有各种适配的度量导出工具,Mysqld_exporter也是旗下的一款工具,可以在Prometheus官网下载。本次部署使用docker
首先连接数据库,创建用于监控的账户并赋予权限,这里主要是创建mysql-exporter连接mysql需要的用户,同时并授予相应权限,操作SQL如下:
CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporter';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'%';
GRANT SELECT ON performance_schema.* TO 'exporter'@'%';
创建mysqld-exporter的容器
docker run -d -p 9104:9104 --network xxnet --name mysql_exporter -e DATA_SOURCE_NAME="exporter:exporter@(mariadb:3306)/" prom/mysqld-exporter:v0.14.0
创建成功之后可正常访问
Prometheus 配置文件
root@omv:~# cat /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
# mysql_exporter config
- job_name: "mysql_metrics"
metrics_path: '/metrics'
static_configs:
- targets: ["mysql_exporter:9104"]
- job_name: "mysql_metrics2"
metrics_path: '/metrics'
static_configs:
- targets: ["192.168.1.21:32327"]
root@omv:~#
docker 运行prometheus
docker run --name prometheus -d -p 9092:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --network xxnet prom/prometheus
Prometheus 运行完成后登陆查看
然后docker 运行Grafana
docker run -d -p 3000:3000 --name=grafana --network xxnet grafana/grafana
运行成功之后,登陆网页设置数据源
设置之后导入mysql的dashboard,效果如下图