Prometheus也可以用mysqld_exporter
来监控MySQL。
服务器IP | 系统 | 组件 |
---|---|---|
192.168.0.181 | CentOS7.6 | Prometheus Server 2.18.1 |
192.168.0.183 | CentOS7.6 | mysqld_exporter-0.12.1 |
下载地址为:https://prometheus.io/download/,我这里下载的都是最新版本的。
在安装mysql的主机上,安装上node_exporter是必要的。一方面是因为这个主机也是需要监控的,另一方面,grafana的dashboard模板中也是直接或者间接的用到主机的内存、CPU等监控数值来绘图。
具体的node_exporter的安装这里就不说了,比较简单,参考前面的文章即可。
其实mysqld_exporter
部署在哪台服务器上都是可以的,因为之后会在mysqld_exporter
的配置文件中连接所要监控的mysql。
我这里直接将mysqld_exporter
部署在MySQL Server
服务器(192.168.0.183)上。
$ cd /usr/local/src
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
$ tar -zxf mysqld_exporter-0.12.1.linux-amd64.tar.gz
$ mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter
mysqld_exporter
需要连接上MySQL之后,才能获取到监控数据。
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%' identified by 'Abc@123456';
mysql> flush privileges;
因为mysqld_exporter
部署在MySQL Server
服务器(192.168.0.183)上,所以这里只授权了本地权限,如果是部署在别的服务器上,则需要授予远程权限
。
cd /usr/local/mysqld_exporter
vim .my.cnf
[client]
host=localhost
user=exporter
password=Abc@123456
启动的时候,指定这个配置文件即可。
cat > /usr/lib/systemd/system/mysqld_exporter.service <<EOF
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
这里我也是用prometheus用户启动mysqld_exporter
,所以要创建prometheus用户并授权。
$ groupadd prometheus
$ useradd -g prometheus -m -d /var/lib/prometheus -s /sbin/nologin prometheus
$ chown -R prometheus:prometheus /usr/local/mysqld_exporter
启动mysqld_exporter:
$ systemctl daemon-reload
$ systemctl start mysqld_exporter
$ systemctl status mysqld_exporter
$ systemctl enable mysqld_exporter
$ ss -tln | grep 9104
需要把mysqld_exporter
和安装mysql的主机的node_exporter
的监控目标都添加到prometheus server
中。
vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysql'
static_configs:
- targets: ['192.168.0.183:9104']
labels:
instance: db-01
- job_name: 'mysql-node'
static_configs:
- targets: ['192.168.0.183:9100']
labels:
instance: db-01
注意:这里instance需要设置成相同的值,因为grafana中有些绘图会根据instance来绘制。
重启Prometheus server
$ systemctl restart prometheus
或者热加载
$ curl -X POST localhost:9090/-/reload
在Grafana的官方网站上我们可以找到比较好用的MySQL的Dashboard模板,直接用模板地址导入即可。
模板地址为:https://grafana.com/grafana/dashboards/7362
参考文章:
http://www.eryajf.net/2499.html