本文介紹如何使用Prometheus監控MySQL。
前提條件
已擷取MySQL執行個體串連資訊,包括MySQL地址、MySQL連接埠、使用者名稱和密碼。
接入MySQL監控
在左側導覽列,單擊接入中心。
在接入中心頁面的資料庫地區,單擊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監控警示
在左側導覽列單擊執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。
在頁面頂部選擇目標地區,然後單擊目的地組群名稱。
在左側導覽列,單擊警示規則,即可查看MySQL的Prometheus警示規則。
可觀測監控 Prometheus 版針對MySQL熱點指標提供了多個預設的Prometheus警示規則,您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見Prometheus警示規則。
說明關於MySQL熱點指標的說明,請參見下文關鍵計量說明。
可觀測監控 Prometheus 版針對MySQL熱點指標預置的警示規則詳情說明,請參見下文基於Prometheus的指標觀測和警示體系搭建。
查看MySQL監控大盤
通過監控大盤您可以查看可用性、資料庫查詢、網路流量、串連、記憶體等監控資料,具體步驟如下。
在左側導覽列,單擊接入管理。
在接入管理頁面的已接入環境頁簽中,選擇目標環境,在目標環境列表中,單擊目標環境名稱進入詳情頁面。
在組件管理頁簽下的組件類型地區,單擊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])