一、下载安装
配置Prometheus+Grafana,快速查看MySQL的连接数,锁,内存,网络等指标。
Prometheus官网下载地址:Download | Prometheus
此下载地址一般只有最新版,如果想要下载其他版本,需要到github上Mysqld_exporter的github下载地址:Releases · prometheus/mysqld_exporter · GitHub
此处需要下载11版本(必须是11版本,否则后面grafana无法展示图形)
Mysqld_exporter 11版本下载地址:https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/mysqld_exporter-0.11.0.linux-amd64.tar.gz
百度网盘地址:
链接:百度网盘 请输入提取码
提取码:brkn
二、MySQL配置
我这里是centOS系统,如果是其它系统则需要根据系统相关信息:

#定位到安装目录下
cd /usr/local
#将下载到本地的文件上传到Linux服务器
rz
#解压文件
tar -xzvf mysqld_exporter-0.11.1.linux-amd64.tar.gz
#将文件目录名改为mysqld_exporter
mv mysqld_exporter-0.11.1.linux-amd64 mysqld_exporter
mysqld_exporter需要连接Mysql,首先为它创建用户并赋予所需要的权限:
#创建exporter用户 grant all privileges on *.* to 'user'@'%' identified by '123456'
GRANT ALL ON *.* TO 'exporter'@'localhost' identified by '123456';
#创建数据库
CREATE DATABASE test_db;
#赋予查询权限
GRANT SELECT ON test_db.* TO 'exporter'@'localhost';
#刷新权限
flush privileges;创建.my.cnf文件:
[client]
user=exporter
password=123456
启动mysqld_exporter
启动方式一:
#启动mysqld_exporter
./mysqld_exporter --config.my-cnf=/etc/my.cnf
#查看端口开启清空
ss -tln | grep 9104
启动常用参数:
# 选择采集innodb
--collect.info_schema.innodb_cmp
# innodb存储引擎状态
--collect.engine_innodb_status
# 指定配置文件
--config.my-cnf="/etc/my.cnf"添加系统服务:
vi /usr/lib/systemd/system/mysql_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/mysql_exporter/mysqld_exporter --config.my-cnf=/etc/my.cnf
[Install]
WantedBy=multi-user.target启动添加后的系统服务:
systemctl daemon-reload
systemctl restart mysql_exporter.service启动日志可以在/var/log/messages中查看。
查看MySQLd exporter捕获mysql数据
使用浏览器打开服务器IP: 9104,然后点击Metrics,显示如下图则表示数据获取成功。


三、Prometheus配置
1. Prometheus
之前介绍过Prometheus是开源的监控系统,与其他监控系统相比,具有易于管理,监控服务的内部运行状态,强大的数据模型,强大的查询语言PromQL,高效,可扩展,易于集成,可视化,开放性等众多功能。
官网详情:Exporter是什么 - prometheus-book
2. Exporter
所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据:

Exporter的来源也分为两种,分别是社区提供的,包含数据库(MySQL Exporter, Redis Exporter等),消息队列( Kafka Exporter, RabbitMQ Exporter等),存储,HTTP服务,日志,监控服务等。另外就是用户自定义的Exporter,用户可以基于Prometheus提供的Client Library创建自己的Exporter程序。
3. MySQLD Exporter
Prometheus提供的MySQLD Exporter实现对MySQL数据库性能以及资源利用率的监控和度量。
这里我们采用docker compose的方式部署Exporter,docker-compose.yml:
version: '3'
services:
mysqlexporter:
image: prom/mysqld-exporter
ports:
- "9104:9104"
environment:
- DATA_SOURCE_NAME=root:password@(mysql:3306)/database运行命令docker-compose up -d启动Exporter。
4. 配置prometheus.yml
需要在prometheus.yml文件中加入以下配置才会加入到监控中。
scrape_configs:
# 添加作业并命名
- job_name: 'mysql'
# 静态添加node
static_configs:
# 指定监控端
- targets: ['数据库服务器IP:9104']然后运行以下命名重启Prometheus:
docker-compose down
docker-compose up -d安装目录启动方式:
#定位到prometheus安装目录
cd /usr/local/prometheus/prometheus-2.23.0.linux-amd64
#执行启动
./prometheus --config.file=prometheus.yml &然后,可以在浏览器中输入http://127.0.01:9090/targets,我们看到已经添加成功。
如下图,9104就是监控到的mysql_reporter:

使用promSQL查看Mysql监控信息:
mysql_global_status_aborted_clients
点击Graph可以看到监控的MySQL的指标:

下一步就是在Grafana中添加数据源,导入仪表盘模板。
四、Grafana配置
1. 启动grafana
service grafana-server start![]()
执行ps -ef | grep grafana,查看是否启动成功。

浏览器中输入http://安装Grafana服务器IP:3000/,然后登陆grafana。

2. 创建数据源
首先,在浏览器中打开grafana的地址,点击添加数据源。

选择Prometheus。

输入数据源名称,数据源来源地址,点击添加。

3. 创建仪表盘
点击左侧菜单栏的【创建】,点击【导入】,当然也可以在这里选择创建仪表盘,自己选择组件和自定义布局完成。

输入仪表盘的名称,选择数据源,点击导入即成功创建仪表盘。

最终呈现的仪表盘如下:


五、遇到的问题
问题1:执行systemctl restart mysql_exporter.service时提示:
Failed to restart mysql_exporter.service: Unit is not loaded properly: Invalid argument.
See system logs and 'systemctl status mysql_exporter.service' for details.
查看系统日志/var/log/messages,显示:
mysql_exporter.service lacks both ExecStart= and ExecStop= setting于是修改mysql_exporter.service,将ExecStart拆分到第二行,保存后再执行systemctl restart mysql_exporter.service,执行成功。
问题2:访问prometheus,mysql_reporter的状态是down的状态,提示:Get "http://数据库IP:9104/metrics": context deadline exceeded.

于是访问数据库9104端口,访问地址:数据库IP:9104,显示无法访问,查看服务器端口9104是开启状态。

查看防火墙状态:firewall-cmd --state,显示是running。
![]()
于是关闭防火墙:systemctl stop firewalld.service,然后查看防火墙状态:firewall-cmd --state。
![]()
刷新Prometheus界面,显示mysql_reporter是up状态,则表示监控成功。

问题3:Grafana导入mysql模板后,未获取任何数据。

原因:是mysqld_exporter版本不匹配,和prometheus.yml文件未配置labels。
解决办法:将Mysqld_expoter版本使用11版本,只需解压覆盖之前的12版本即可,然后配置prometheus.yml,如下图:

保存重启prometheus即可。