Prometheus监控MySQL
Mysql-exporter+Mysql+Prometheus
可以容器安装mysqld-exporter或者宿主机操作系统直接安装也行。
我这里写的是宿主机操作系统直接安装mysqld_exporter
mysql-exporter下载地址如下所示
我下载的是0.13.0版本的,这是目前最新的版本,可以用命令下载,也可以直接浏览器下载然后通过winscp发送到对应的服务器上安装
这是0.12.1 稳定
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
这是0.13.0 不稳定
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0-rc.linux-amd64.tar.gz
移动压缩包到指定文件夹
mkdir -p /usr/local/mysqld_exporter
mv mysqld_exporter-0.13.0-rc.0.linux-amd64.tar.gz /usr/local/mysql_exporter/
然后解压缩
接着是授权,这个最重要,记住:最小权限原则,曾经遇到很多搞技术的IT特别懒,直接给全部权限,这是很危险且不负责任的,特别是在生产环境下,一旦数据库出现什么问题,你丢的可不仅仅是饭碗。。。
create user 'exporter@localhost' identified by 'trippal';
grant process,replication client,select on *.* to 'exporter@localhost';
exporter@exporter主机所在的ip,因为我这边的MySQL_exporter和MySQL服务器在同一个操作系统上,所以只是localhost,千万不要图省事,直接exporter@%,这个直接就是所有IP的主机只要密码正确都可以登录上去了;
接下来的 grant 授权是重点,千万不要这样 grant all on *.* to 'exporter@%' , 这样一旦密码被破解,整个数据库就是囊中之物了,公司的数据库管理员通常情况下是不会给你这样的权限的。
接着在同目录下创建mysql.cnf文件,即客户端连接获取mysql数据,我这是在做测试实验,密码无所谓,现实情况下密码不可能这么短,
接着在prometheus.yml配置文件中加上mysql的监控项,其实正确来说应该是填写MySQL-exporter
接着创建服务
vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io
Wants=network-online.target
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/mysql.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target
接着启动mysql-exporter
systemctl daemon-reload
systemctl start mysqld_exporter
最后查看状态
访问Ip:9104/metrics
接着在prometheus上可以查看到对应的监控条目
接着启动Grafana,然后在Grafana上导入对应的模板7362,或者自己写个json模板也行
接着一直开启服务,让Prometheus收集数据即可