1、簡述
????????使用 Prometheus 結合 Grafana 監控 MySQL 是一套成熟且廣泛應用的方案,能實現對 MySQL 性能、狀態等指標的實時采集、存儲、可視化及告警。
2、整體架構說明
- Prometheus:負責定時從 MySQL 采集監控指標(需借助 Exporter),并存儲在時序數據庫中。
- MySQL Exporter:部署在 MySQL 服務器或可訪問 MySQL 的節點上,用于暴露 MySQL 的監控指標(如連接數、查詢量、緩存命中率等),供 Prometheus 抓取。
- Grafana:通過連接 Prometheus 數據源,使用預置或自定義的儀表盤(Dashboard)可視化 MySQL 的監控指標,支持圖表聯動、告警配置等功能。
3、部署組件
3.1?部署 MySQL Exporter
下載安裝包
前往Prometheus 官方下載頁獲取對應版本(以mysqld_exporter-0.14.0.linux-amd64.tar.gz
為例):
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.2/mysqld_exporter-0.17.2.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-0.17.2.linux-amd64.tar.gz
mv mysqld_exporter-0.17.2.linux-amd64 /usr/local/mysqld_exporter
配置 Exporter 連接 MySQL
在 Exporter 目錄下創建配置文件my.cnf
,寫入 MySQL 用戶信息:
[client]
user=username # 上文創建的監控用戶
password=password # 對應密碼
host=localhost # MySQL地址(若遠程則填IP)
port=3306 # MySQL端口
啟動 Exporter
以系統服務方式啟動(推薦),創建/etc/systemd/system/mysqld-exporter.service
:
[Unit]
Description=MySQL Exporter
After=network.target[Service]
User=root
Group=root
WorkingDirectory=/usr/local/mysqld_exporter
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/my.cnf
Restart=always[Install]
WantedBy=multi-user.target
啟動并設置開機自啟:
systemctl daemon-reload
systemctl start mysqld-exporter
systemctl enable mysqld-exporter
驗證:訪問http://服務器IP:9104/metrics
,若能看到 MySQL 相關指標(如mysql_up
、mysql_connections
),說明 Exporter 正常運行。
3.2 Prometheus+Grafana
安裝
參考文章:docker compose安裝Prometheus、Grafana_grafana docker-compose-CSDN博客
配置 Prometheus 抓取 Exporter 指標
編輯 Prometheus 配置文件/usr/local/prometheus/prometheus.yml
,在scrape_configs
中添加 MySQL Exporter 的配置:
scrape_configs:- job_name: 'mysql' # 自定義任務名static_configs:- targets: ['localhost:9104'] # Exporter的地址(IP:端口)
重啟Prometheus。
4、配置 Grafana 可視化 MySQL 指標
添加 Prometheus 數據源
- 登錄 Grafana 后,點擊左側 “Configuration -> Data Sources”,點擊 “Add data source”,選擇 “Prometheus”。
- 在 “URL” 中輸入 Prometheus 的地址(如
http://localhost:9090
),其他默認,點擊 “Save & test”,顯示 “Data source is working” 即配置成功。
導入 MySQL 監控儀表盤
Grafana 社區提供了大量預置的 MySQL 儀表盤,可直接導入:
- 點擊左側 “Dashboards -> Import”,輸入儀表盤 ID(推薦
7362
或11323
,可在Grafana Dashboards搜索 “MySQL” 獲取)。 - 選擇已添加的 Prometheus 數據源,點擊 “Import”,即可看到 MySQL 的監控面板(包含連接數、QPS、慢查詢、緩存狀態等指標)。
5、關鍵監控指標說明
- 可用性指標:
mysql_up
(1 表示正常,0 表示異常)、mysql_seconds_behind_master
(從庫延遲,主從架構需關注)。 - 連接指標:
mysql_connections
(當前連接數)、mysql_max_connections
(最大連接數)、mysql_threads_connected
(已使用連接數)。 - 查詢指標:
mysql_queries
(總查詢數)、mysql_questions
(客戶端發起的查詢數)、mysql_slow_queries
(慢查詢數)。 - 緩存指標:
mysql_key_cache_hit_rate
(鍵緩存命中率)、mysql_query_cache_hit_rate
(查詢緩存命中率,MySQL 8.0 后移除)。 - I/O 指標:
mysql_bytes_received
(接收字節數)、mysql_bytes_sent
(發送字節數)、mysql_table_locks_waited
(表鎖等待次數)。
6、總結
通過 Prometheus+Grafana+MySQL Exporter 的組合,可實現對 MySQL 的全方位監控,幫助運維和開發人員及時發現性能瓶頸、異常狀態等問題。實際使用中可根據需求調整監控指標和儀表盤,優化告警策略,確保 MySQL 服務穩定運行。