全部產品
Search
文件中心

Application Real-Time Monitoring Service:如何使用Prometheus監控MySQL

更新時間:Jul 20, 2024

本文介紹如何使用Prometheus監控MySQL。

前提條件

已擷取MySQL執行個體串連資訊,包括MySQL地址、MySQL連接埠、使用者名稱和密碼。

接入MySQL監控

  1. 登入ARMS控制台

  2. 在左側導覽列,單擊接入中心

  3. 接入中心頁面的資料庫地區,單擊MySQL

    image

  4. 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監控警示

  1. 登入ARMS控制台

  2. 在左側導覽列選擇Prometheus監控 > 執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。

  3. 在頁面頂部選擇目標地區,然後單擊目的地組群名稱。

  4. 在左側導覽列,單擊警示規則,即可查看MySQL的Prometheus警示規則。

    可觀測監控 Prometheus 版針對MySQL熱點指標提供了多個預設的Prometheus警示規則,您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見Prometheus警示規則

    說明

查看MySQL監控大盤

通過監控大盤您可以查看可用性、資料庫查詢、網路流量、串連、記憶體等監控資料,具體步驟如下。

  1. 登入ARMS控制台

  2. 在左側導覽列,單擊接入管理

  3. 接入管理頁面的已接入環境頁簽中,選擇目標環境,在目標環境列表中,單擊目標環境名稱進入詳情頁面。

    image

  4. 組件管理頁簽下的組件類型地區,單擊MySQL,然後單擊大盤,即可查看所有的大盤名稱。

  5. 單擊目標大盤名稱,查看對應的Grafana大盤。

    • 可用性、QPS和資料庫連接。sk

    • 資料庫查詢。aj

    • 流量和記憶體使用量情況。xq

    • 檔案監控資料。qt

關鍵計量說明

類型

指標名稱

說明

可用性

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])