通过Prometheus监控Mysql,我们需要在Mysql端安装一个mysql-exporter,然后Prometheus通过mysql-exporter暴露的端口抓取数据。
1.安装一个MYSQL
配置MYSQL源
echo '# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.mysql.com/RPM-GPG-KEY-mysql' >/etc/yum.repos.d/mysql.repo
安装mysql 5.7
yum install mysql-community-server -y
启动并设置开机启动
systemctl start mysqld.service
systemctl status mysqld.service
systemctl enable mysqld.service
查看mysql初始密码
grep 'temporary password' /var/log/mysqld.log
2021-01-22T01:30:46.703325Z 1 [Note] A temporary password is generated for root@localhost: k+F<ucNmR5sK
修改mysql root密码
su - mysql
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'zaq1@WSX';
flush privileges;
到这里mysql5.7安装完成。
2.登录mysql为exporter创建账号并授权
# 创建数据库用户。
mysql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'zaq1@WSX';
# 可查看主从运行情况查看线程,及所有数据库。
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
3.下载mysql-exporter并做配置
1.下载mysql-exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysql_exporter
2.创建mysql配置文件、运行时可免密码连接数据库
echo '[client]
user=exporter
password=zaq1@WSX ' >/usr/local/mysql_exporter/.my.cnf
3.设置mysql_exporter启动服务
echo '[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/mysql_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysql_exporter/.my.cnf
[Install]
WantedBy=multi-user.target' >/etc/systemd/system/mysql_exporter.service
4.启动添加后的系统服务
systemctl daemon-reload
systemctl restart mysql_exporter.service
完成mysql_exporter部署
4.检查mysql_exporter监听端口
访问页面
http://192.168.0.107:9104/metrics
得到下面结果
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
go_gc_duration_seconds{quantile="1"} 0
go_gc_duration_seconds_sum 0
go_gc_duration_seconds_count 0
5.Prometheus监控MYSQL
Prometheus配置文件/etc/prometheus/prometheus.yml,添加如下内容:
scrape_configs:
- job_name: 'mysql'
# 静态添加node
static_configs:
# 指定监控端
- targets: ['localhost:9104']
重启Prometheus
systemctl restart prometheus
6.检查Prometheus target
判断Prometheus是否获取mysql_exporter数据。
访问这个地址
http://192.168.0.107:9090/targets ,看到红框部分,说明Prometheus监控成功
mysql_exporter
7.Grafana导入mysql模板
还是一样
https://grafana.com/grafana/dashboards 里面找到一个模板
我这里用这个 7362
mysql 监控
至此,mysql监控已经完成。