本文介紹如何使用Prometheus監控MySQL。
前提條件
已擷取MySQL執行個體串連資訊,包括MySQL地址、MySQL連接埠、使用者名稱和密碼。
接入MySQL監控
登入ARMS控制台。
-
在左側導覽列,單擊接入中心。
-
在接入中心頁面的資料庫地區,單擊MySQL。

-
在MySQL面板的開始接入頁簽完成接入,然後單擊確定。
參數
說明
选择所属环境类型
可以接入以下三種服務環境:
-
Container Service環境
-
ECS(VPC)
-
雲端服務
選擇叢集
選擇目的地組群。
選擇ECS(VPC)
選擇目標ECS。
选择数据存储地域
如果您选择所属环境类型為雲端服務,您需要選擇目標儲存的地區。
MySQL 服務地址
MySQL的串連地址。
說明支援部署在Container ServiceKubernetes版、Elastic Compute Service、雲資料庫RDS的MySQL地址。
MySQL 服務連接埠
MySQL的連接埠號碼。例如:3306。
MySQL 帳號和MySQL密碼
MySQL的使用者名稱稱和密碼。
重要不建議使用管理員帳號,以免存在資料泄露的風險。請建立一個供mysqld_exporter使用的MySQL帳號,並最小化授權。具體操作,請參見為Prometheus建立MySQL訪問帳號。
-
配置MySQL監控警示
登入ARMS控制台。
在左側導覽列選擇,進入可觀測監控 Prometheus 版的執行個體列表頁面。
-
在頁面頂部選擇目標地區,然後單擊目的地組群名稱。
-
在左側導覽列,單擊警示規則,即可查看MySQL的Prometheus警示規則。
可觀測監控 Prometheus 版針對MySQL熱點指標提供了多個預設的Prometheus警示規則,您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見建立Prometheus警示規則。
說明-
關於MySQL熱點指標的說明,請參見下文關鍵計量說明。
-
可觀測監控 Prometheus 版針對MySQL熱點指標預置的警示規則詳情說明,請參見下文基於Prometheus的指標觀測和警示體系搭建。
-
查看MySQL監控大盤
通過監控大盤您可以查看可用性、資料庫查詢、網路流量、串連、記憶體等監控資料,具體步驟如下。
登入ARMS控制台。
-
在左側導覽列,單擊接入管理。
-
在接入管理頁面的已接入环境頁簽中,選擇目標環境,在目標環境列表中,單擊目標環境名稱進入詳情頁面。

-
在組件管理頁簽下的組件類型地區,單擊MySQL,然後單擊大盤,即可查看所有的大盤名稱。
-
單擊目標大盤名稱,查看對應的Grafana大盤。
-
可用性、QPS和資料庫連接。

-
資料庫查詢。

-
流量和記憶體使用量情況。

-
檔案監控資料。

-
關鍵計量說明
|
類型 |
指標名稱 |
說明 |
|
可用性 |
mysql_up |
表示MySQL執行個體是否已停機。 |
|
mysql_global_status_uptime |
表示資料庫正常啟動並執行時間長度,通常使用該指標配置警示,監控運行少於半小時的MySQL執行個體。 |
|
|
資料庫連接 |
mysql_global_status_connection_errors_total |
串連錯誤是資料庫中的主要錯誤之一,通過該指標可以查看到具體串連錯誤資訊以及錯誤串連次數。 |
|
mysql_global_status_threads_connected |
MySQL執行個體請求已經串連的線程數。 |
|
|
mysql_global_status_threads_running |
MySQL執行個體請求運行中的線程數。 |
|
|
mysql_global_status_max_used_connections |
MySQL執行個體最大串連記錄統計。 |
|
|
mysql_global_variables_max_connections |
MySQL執行個體的最大串連數,若超過該串連數之後有新的請求到來,就會拒絕串連。 |
|
|
mysql_global_status_aborted_connects |
異常中斷的串連(嘗試串連)。 |
|
|
mysql_global_status_aborted_clients |
異常中斷的串連(逾時)。 |
|
|
查詢 |
mysql_global_status_slow_queries |
MySQL執行個體慢查詢統計。 |
|
mysql_global_status_queries |
MySQL執行個體當前查詢QPS。 |
|
|
流量 |
mysql_global_status_bytes_received |
入站流量。 |
|
mysql_global_status_bytes_sent |
出站流量。 |
|
|
檔案 |
mysql_global_status_opened_files |
正在開啟的檔案統計。 |
|
mysql_global_status_open_files |
MySQL已經開啟的檔案統計。 |
|
|
mysql_global_variables_open_files_limit |
允許開啟的檔案統計。 |
|
|
mysql_global_status_innodb_num_open_files |
Innodb開啟的檔案統計。 |
基於Prometheus的指標觀測和警示體系搭建
自建Prometheus需要部署Exporter、傳入MySQL執行個體的串連資訊、佈建服務發現,然後建立大盤的複雜搭建過程。可觀測監控 Prometheus 版一鍵整合MySQL Exporter,並提供開箱即用的專屬監控大盤、警示,將諸多配置與操作實現白屏化,儘可能簡化佈建服務接入工作量。
基於可觀測監控 Prometheus 版自身實踐,將常見的MySQL警示規則預置為模板,協助營運團隊快速搭建起指標看板與警示體系。預置的MySQL警示規則如下:
-
MySQL 停機:若該指標值為0,表示當前資料庫沒有正常運行;若該指標值為1表示正常,可以通過
${instance}針對具體的執行個體警示。mysql_up{${instance}} != 1 -
MySQL 慢查詢次數:該指標可以作為判斷當前資料庫是否存在需要最佳化的SQL語句等問題。
rate(mysql_global_status_slow_queries{${instance}}[5m]) > 0 -
MySQL 錯誤串連數:串連錯誤是資料庫中的主要錯誤之一,通過可觀測監控 Prometheus 版提供的警示規則,當觸發警示時,您能夠接收的錯誤類型、查詢次數等警示資訊。
rate(mysql_global_status_connection_errors_total{${instance}}[5m]) > 0 -
MySQL 串連使用率:當出現此串連錯誤警示時,大部分是串連數不足導致的,因此您可以通過查看MySQL串連使用率進一步排查問題。
100 * mysql_global_status_threads_connected{${instance}} / mysql_global_variables_max_connections{${instance}} > 90當使用率達到一定的閾值時,MySQL執行個體開始拒絕串連,此時可以通過擴大串連數來解決問題。但在提高串連數之前,請務必通過以下語句檢查當前系統可開啟的檔案數。
mysql_global_variables_open_files_limit - mysql_global_variables_innodb_open_files -
MySQL InnoDB 日誌等待時間:您自行設定的日誌等待時間。
rate(mysql_global_status_innodb_log_waits{${instance}}[5m])