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/,我這裏下載的都是最新版本的。
二、安裝node_exporter
在安裝mysql的主機上,安裝上node_exporter是必要的。一方面是因爲這個主機也是需要監控的,另一方面,grafana的dashboard模板中也是直接或者間接的用到主機的內存、CPU等監控數值來繪圖。
具體的node_exporter的安裝這裏就不說了,比較簡單,參考前面的文章即可。
三、安裝mysqld_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)上,所以這裏只授權了本地權限,如果是部署在別的服務器上,則需要授予遠程權限
。
五、啓動服務
1、創建配置文件
cd /usr/local/mysqld_exporter
vim .my.cnf
[client]
host=localhost
user=exporter
password=Abc@123456
啓動的時候,指定這個配置文件即可。
2、創建啓動文件(使用systemd管理)
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模板
在Grafana的官方網站上我們可以找到比較好用的MySQL的Dashboard模板,直接用模板地址導入即可。
模板地址爲:https://grafana.com/grafana/dashboards/7362
導入之後的效果: