目錄
- 1. 創建 MySQL 監控用戶
- 2. 配置 MySQL 認證文件
- 3. 安裝 mysqld_exporter
- 4. 配置 Systemd 服務
- 5. 啟動并驗證服務
- 6. 修改Prometheus配置
- 常見錯誤排查
- 錯誤現象
- 排查步驟
- 6. 驗證監控數據
- 關鍵注意事項
- 7. Grafana看板
1. 創建 MySQL 監控用戶
mysql -uroot -p123456 # 登錄MySQL
-- 1. 創建監控用戶
CREATE USER 'mysql_monitor'@'%' IDENTIFIED BY 'GUANzhu123//';-- 2. 授予必要權限
GRANT SELECT, REPLICATION CLIENT, PROCESS ON *.* TO 'mysql_monitor'@'%';
FLUSH PRIVILEGES;
EXIT; # 退出MySQL
2. 配置 MySQL 認證文件
# 創建配置目錄
mkdir -p /etc/mysqld_exporter# 創建并編輯認證文件
vim /etc/mysqld_exporter/.my.cnf
[client]
host=192.168.15.131 # MySQL服務器地址
user=mysql_monitor
password=GUANzhu123//
# 設置文件權限(僅root可讀)
chmod 600 /etc/mysqld_exporter/.my.cnf
3. 安裝 mysqld_exporter
# 創建安裝目錄
mkdir /usr/local/mysqld_exporter# 解壓二進制文件
tar -xzf mysqld_exporter-0.15.0.linux-amd64.tar.gz -C /usr/local/mysqld_exporter --strip-components=1# 設置可執行權限
chmod +x /usr/local/mysqld_exporter/mysqld_exporter
4. 配置 Systemd 服務
# 創建服務文件
vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=MySQL Exporter for Prometheus
After=network.target
StartLimitIntervalSec=300 # 允許更多重啟嘗試
StartLimitBurst=10 # 間隔內允許的失敗次數[Service]
User=root
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \--config.my-cnf=/etc/mysqld_exporter/.my.cnf \--web.listen-address=:9104 \--log.level=debug # 啟用調試日志
Restart=always
RestartSec=10
TimeoutStartSec=120 # 延長啟動超時
StandardOutput=journal # 日志輸出到systemd
StandardError=journal
SyslogIdentifier=mysqld_exporter[Install]
WantedBy=multi-user.target
5. 啟動并驗證服務
# 重新加載Systemd配置
systemctl daemon-reload# 設置開機自啟
systemctl enable mysqld_exporter# 啟動服務
systemctl start mysqld_exporter# 檢查服務狀態
systemctl status mysqld_exporter
6. 修改Prometheus配置
vim /usr/local/prometheus/prometheus.yml
添加- job_name: 'postgres'static_configs: - targets: ['192.168.15.131:9187']
常見錯誤排查
錯誤現象
Active: activating (auto-restart) (Result: exit-code) ...
Process: 76499 ExecStart=... (code=exited, status=1/FAILURE)
排查步驟
-
檢查日志
journalctl -u mysqld_exporter -f --no-pager
- 常見錯誤:
- 連接失敗:
Access denied
或Can't connect to MySQL server
- 確認
.my.cnf
中的host
、user
、password
是否正確。
- 確認
- 文件權限:
Permission denied
- 確保
.my.cnf
權限為600
,且mysqld_exporter
用戶有讀取權限。
- 確保
- 路徑錯誤:
No such file or directory
- 確認
ExecStart
中的可執行文件路徑正確。
- 確認
- 連接失敗:
- 常見錯誤:
-
手動測試連接
/usr/local/mysqld_exporter/mysqld_exporter \--config.my-cnf=/etc/mysqld_exporter/.my.cnf \--log.level=debug
- 觀察終端輸出,確認是否可以成功連接到 MySQL。
-
檢查網絡連通性
telnet 192.168.15.131 3306 # 確認MySQL端口可達
-
終止殘留進程
如果服務卡在activating
狀態,手動終止殘留進程:ps aux | grep mysqld_exporter kill -9 <PID> # 強制終止
6. 驗證監控數據
- 訪問
http://<服務器IP>:9104/metrics
,確認可以獲取到 MySQL 監控指標。
關鍵注意事項
-
安全性
- 監控用戶密碼建議使用強密碼,并限制訪問來源(如僅允許 Prometheus 服務器 IP)。
- 生產環境建議使用非
root
用戶運行mysqld_exporter
。
-
防火墻配置
firewall-cmd --add-port=9104/tcp --permanent firewall-cmd --reload
-
版本兼容性
mysqld_exporter 0.15.0
支持 MySQL 5.6 及以上版本。如果使用舊版 MySQL,需確認兼容性。