全部產品
Search
文件中心

Cloud Monitor:MySQL 資料庫監控接入

更新時間:Sep 03, 2026

本文介紹如何將自建 MySQL / MariaDB 接入CloudMonitor 2.0。接入組件基於 aio-exporter 的 MySQL(mysqld)適配採集指標,覆蓋串連、QPS、InnoDB 緩衝池、主從複製與慢查詢等觀測情境,支援 ACK 叢集(CS)與 ECS(VPC) 兩種部署環境。接入後自動產生 MySQL 執行個體實體、內建大盤與警示規則。

支援的中介軟體條件

接入前請確認目標執行個體滿足以下條件,否則可能出現採集不到資料或指標缺失。

條件項

要求

資料庫版本

MySQL ≥ 5.6、MariaDB ≥ 10.3(E2E 驗證 MySQL 8.0)。採集項按版本分級門控(5.1—8.0),版本越低可用採集項越少:perf_schema 相關需 5.6+,sys_user_summary、innodb_sys_tablespaces 需 5.7+,Group Replication Applier Worker 需 8.0

部署形態

自建 MySQL / MariaDB / Percona。雲受管理的執行個體(如阿里雲 RDS MySQL)在滿足帳號與網路條件時同樣可接入,接入時把「雲廠商 / 部署來源」選為對應雲廠商即可

監控帳號

需專用唯讀帳號,具備 PROCESS、REPLICATION CLIENT、SELECT ON *.* 許可權。不建議直接使用 root

串連方式

以 user:password@tcp(host:port)/ 形式串連,預設不啟用 TLS。若執行個體開啟了 require_secure_transport(強制加密串連),當前接入方式無法串連

網路連通

Exporter 需能直連資料庫連接埠(預設 3306)。CS 環境要求目標 MySQL 可在所選 ACK 叢集網路內連通;ECS(VPC) 環境要求託管探針交換器網段可訪問目標 ECS。安全性群組、白名單需允許存取對應出口地址

採集開銷

預設開啟 global_status、global_variables、slave_status、innodb_metrics 四項,開銷較低。可選追加的 processlist、表級統計、performance_schema 類採集項在大執行個體上開銷明顯,請按需開啟

前提條件

  • 已開通可觀測監控Prometheus版。

  • 接入 CS 環境:目標 ACK 叢集已接入CloudMonitor 2.0,且叢集狀態為運行中;目標 MySQL 服務可在該叢集網路內連通。

  • 接入 ECS(VPC) 環境:已選定目標 MySQL 所在 ECS,並確保託管探針交換器網段可訪問該 ECS。

費用說明

  • 根據產生的指標資料量,在 Prometheus 產品中計費。無其他費用。

接入方法

步驟一:建立監控帳號

在目標資料庫上執行以下 SQL,建立專用監控帳號並授權(MAX_USER_CONNECTIONS 限制監控帳號佔用的串連數,避免影響業務):

CREATE USER 'exporter'@'%' IDENTIFIED BY '<password>' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
FLUSH PRIVILEGES;

許可權

用途

PROCESS

讀取進程列表與全域狀態

REPLICATION CLIENT

讀取主從複製狀態

SELECT

讀取 information_schema / performance_schema 等中繼資料

步驟二:選擇接入環境

本外掛程式支援 CS 與 ECS(VPC) 兩種接入環境,工作原理不同,請按 MySQL 實際部署位置選擇:

CS(Container Service)

  • 將 Exporter 安裝到使用者指定的目標 ACK 叢集,並複用該叢集已有的採集器進行指標採集。

  • 觀測對象為 ACK 叢集。

  • 網路要求:目標 MySQL 服務可在該叢集網路內連通即可(例如叢集內 Service,或叢集能訪問到的 VPC 內網地址)。

ECS(VPC)

  • 選擇目標 MySQL 服務部署的 ECS 機器,系統根據該 ECS 的 VPC 資訊部署全託管採集器。

  • 不會在 ECS 上安裝任何進程。

  • 觀測對象為 ECS 執行個體。

  • 網路要求:託管探針所在交換器網段需允許訪問目標 ECS(安全性群組、ACL 等需允許存取)。

環境

Exporter 部署位置

是否在業務機上裝進程

觀測對象

網路通達要求

CS

使用者指定的 ACK 叢集

否(部署在叢集內,不佔用業務 Pod 宿主)

ACK 叢集

MySQL 可在該叢集網路內連通

ECS(VPC)

系統按 VPC 部署的全託管採集器

否,不在 ECS 上安裝任何進程

ECS 執行個體

託管探針交換器網段可訪問目標 ECS

步驟三:接入配置

  1. 登入CloudMonitor2.0控制台,選擇目標工作空間後,在左側導覽列單擊 接入中心 ,單擊 MySQL 開始接入。

  2. 選擇接入環境(CS 或 ECS(VPC)),並在下拉式清單中選擇 觀測對象 。

  3. 接入配置,配置完成後單擊 確定 :

    配置項

    是否必填

    說明

    MySQL 服務地址

    是

    CS 環境填寫叢集內訪問地址,如 mysql-server.<namespace>;ECS(VPC) 環境填寫內網或公網訪問地址

    MySQL 服務連接埠

    是

    預設 3306

    雲廠商 / 部署來源

    否

    寫入指標標籤 provider 並參與實體發現,自建選擇「自建」(self-hosted/mysql),雲託管選擇對應雲廠商

    網路連通性測試

    —

    僅 CS 環境提供,用於驗證 Exporter 與資料庫之間的網路連通性

    MySQL 帳號

    是

    步驟一建立的監控帳號,預設 exporter

    MySQL 密碼

    是

    監控帳號對應的密碼

    Metric 採集間隔(秒)

    是

    預設 15,取值範圍 1—60

    額外採集項

    否

    在預設四項之外追加採集項,可多選。processlist、表級統計與 performance_schema 類開銷較大,建議按需開啟

    自訂標籤

    否

    注入到指標上的額外標籤,便於按業務維度篩選

    使用公網鏡像地址

    否

    預設關閉走 VPC 內網鏡像倉庫;無法訪問內網鏡像倉庫時開啟

  4. 接入成功後,可在 實體探索 查看接入的實體及相關可觀測資料。

資料使用說明

實體說明

接入後,CloudMonitor每 3 分鐘從 mysql_up 指標的標籤中發現一次 MySQL 執行個體,並產生中介軟體實體:

維度

說明

域(domain)

middleware

實體類型

middleware.mysql

實體過濾條件

.entity with(domain='middleware', type='middleware.mysql')

觀測對象(綁定實體)

CS 環境為 acs.ack.cluster;ECS(VPC) 環境為 acs.ecs.instance

實體欄位來自採集標籤,與安裝次數無關:

欄位

說明

instance_id

執行個體標識,取自 target_uri 標籤,格式為 host:port

provider

部署來源,如 self-hosted/mysql、alibaba-cloud/rds

port

資料庫連接埠

region_id

地區

env_type

部署環境類型(CS / ECS)

cluster_id

所屬叢集標識

可在 實體探索 或 中介軟體洞察 應用中按上述欄位檢索執行個體。

內建大盤

大盤名稱

查看入口

說明

MySQL 概覽(執行個體概覽)

實體詳情頁 執行個體概覽 頁簽

UModel 大盤,隨執行個體上下文自動綁定 target_uri、provider 變數

MySQL 概覽 / MySQL Overview

Grafana 大盤列表

Grafana 大盤,提供中英文兩套

核心指標

以下為實體資料集 middleware.metric.mysql 的完整指標清單(共 57 個),可在實體詳情、大盤與警示中直接使用:

指標名

類型

單位

顯示名稱

說明

mysql_up

gauge

-

MySQL 存活

MySQL/MariaDB 執行個體是否可達且採集成功。1 表示存活,0 表示不可用。

mysql_uptime

gauge

秒

已耗用時間

MySQL 服務進程自啟動以來啟動並執行秒數。

mysql_qps

counter

次/秒

每秒查詢數

用戶端執行語句的每秒查詢數(Questions,不含 COM_PING / COM_STATISTICS 等)。

mysql_queries_s

counter

次/秒

每秒查詢總數

每秒執行的語句總數,包含儲存程式內部語句(Queries)。

mysql_threads_connected

gauge

-

已連接線程數

當前已串連到伺服器的用戶端線程數。

mysql_threads_running

gauge

-

運行中線程數

當前正在執行語句的非空閑線程數。

mysql_slow_queries_s

counter

次/秒

每秒慢查詢數

執行時間超過 long_query_time 的慢查詢速率(每秒)。

mysql_buffer_pool_size

gauge

位元組

InnoDB 緩衝池大小

已配置的 InnoDB 緩衝池大小(位元組,innodb_buffer_pool_size)。

mysql_connection_usage

gauge

%

串連使用率

當前已連接線程數占 max_connections 的百分比。

mysql_max_used

gauge

-

最大已用串連數

自上次 FLUSH STATUS 或服務重啟以來同時串連數的歷史峰值。

mysql_max_connections

gauge

-

最大串連數

允許的最大並發用戶端串連數(max_connections)。

mysql_cached

gauge

-

緩衝線程數

當前線程緩衝中空閑、可複用的線程數。

mysql_created_s

counter

次/秒

每秒建立線程數

為處理串連而建立線程的速率(偏高時可能表示 thread_cache_size 偏小)。

mysql_aborted_connects

counter

-

中止串連次數

串連失敗次數的速率(如認證失敗、主機被拒絕等)。

mysql_aborted_clients

counter

-

中止用戶端數

用戶端未正常關閉串連導致的中止串連速率。

mysql_connection_errors

counter

-

串連錯誤數

按錯誤類型匯總的串連錯誤速率(如 max_connections、accept、internal 等)。

mysql_top_command_counters

counter

-

Top 命令計數

按命令類型統計的 Top 10 COM_* 命令執行速率。

mysql_handlers

counter

-

Handler 請求

按 Handler 類型統計的 Top 10 儲存引擎 Handler 請求速率(如 read_next、write、update)。

mysql_full_join

counter

-

全表 JOIN

對第一張表做全表掃描的 JOIN 速率(Select_full_join,通常表示缺少索引)。

mysql_full_range_join

counter

-

全範圍 JOIN

對參考表使用範圍搜尋的 JOIN 速率(Select_full_range_join)。

mysql_range

counter

-

範圍查詢

在第一張表上使用範圍掃描的 JOIN 速率(Select_range)。

mysql_range_check

counter

-

範圍檢查查詢

每行後檢查鍵使用方式的 JOIN 速率(Select_range_check,通常對效能不友好)。

mysql_scan

counter

-

全表掃描

對第一張表做全表掃描的查詢速率(Select_scan)。

mysql_sort_rows

counter

-

排序行數

參與排序的行數速率(Sort_rows)。

mysql_sort_range

counter

-

範圍排序

使用範圍的排序速率(Sort_range)。

mysql_sort_merge_passes

counter

-

排序歸併次數

排序歸併趟數速率;偏高時可能需要增大 sort_buffer_size。

mysql_sort_scan

counter

-

掃描排序

通過掃描表完成的排序速率(Sort_scan)。

mysql_tmp_tables

counter

-

暫存資料表建立數

記憶體中建立內部暫存資料表的速率(Created_tmp_tables)。

mysql_tmp_disk_tables

counter

-

磁碟暫存資料表建立數

在磁碟上建立內部暫存資料表的速率(Created_tmp_disk_tables);相對記憶體暫存資料表佔比偏高時需調優。

mysql_tmp_files

counter

-

臨時檔案建立數

伺服器建立臨時檔案的速率(Created_tmp_files)。

mysql_immediate

counter

-

立即表鎖數

立即獲得表鎖的速率(Table_locks_immediate)。

mysql_waited

counter

-

等待表鎖數

需要等待的表鎖速率(Table_locks_waited);偏高表示鎖競爭。

mysql_received

counter

位元組

接收流量

每秒從所有用戶端接收的位元組數。

mysql_sent

counter

位元組

發送流量

每秒發送給所有用戶端的位元組數。

mysql_data

gauge

-

緩衝池頁數

InnoDB 緩衝池中的頁數量(按頁狀態區分時有相應維度)。

mysql_dirty

gauge

-

緩衝池髒頁數

InnoDB 緩衝池中當前待刷盤的髒頁數量。

mysql_innodb_row_operations

counter

次/秒

InnoDB 行操作

按操作類型匯總的 InnoDB 行操作速率(read/insert/update/delete)。

mysql_read

counter

-

緩衝頁讀取

按頁類型匯總的 InnoDB 緩衝頁讀取速率。

mysql_written

counter

-

緩衝頁寫入

按頁類型匯總的 InnoDB 緩衝頁寫入速率。

mysql_log_waits

counter

-

InnoDB 日誌等待

等待 InnoDB redo 日誌緩衝區空間的速率(Innodb_log_waits);偏高時可能需要增大 innodb_log_buffer_size。

mysql_open_files

gauge

-

開啟檔案數

伺服器當前已開啟的檔案數量。

mysql_open_files_limit

gauge

-

開啟檔案上限

伺服器允許開啟的檔案描述符上限(open_files_limit)。

mysql_opened_files_s

counter

次/秒

每秒開啟檔案數

伺服器開啟檔案的速率;持續偏高可能表示表/檔案快取不足。

mysql_open_tables

gauge

-

開啟表數

當前表緩衝中已開啟的表數量。

mysql_table_open_cache

gauge

-

表開啟緩衝

已配置的表開啟緩衝大小(table_open_cache)。

mysql_opened_tables_s

counter

次/秒

每秒開啟表數

開啟表的速率;相對已開啟表數偏高時可能需要增大 table_open_cache。

mysql_cache_hits

counter

-

表快取命中

表開啟快取命中速率(表已在緩衝中)。

mysql_cache_misses

counter

-

表緩衝未命中

表開啟緩衝未命中速率(需重新開啟表)。

mysql_process_states

gauge

-

進程狀態分布

按線程狀態匯總的 PROCESSLIST 線程數。

mysql_user

gauge

-

按使用者分布串連

按 MySQL 使用者匯總的 PROCESSLIST 線程數。

mysql_cmd

gauge

-

按命令分布串連

按當前命令匯總的 PROCESSLIST 線程數(如 Sleep、Query)。

mysql_io_running

gauge

-

副本 IO 線程狀態

副本 I/O 線程是否在運行(1/Yes)。適用於副本執行個體。

mysql_sql_running

gauge

-

副本 SQL 線程狀態

副本 SQL 線程是否在運行(1/Yes)。適用於副本執行個體。

mysql_seconds_behind_master

gauge

秒

主從延遲秒數

相對主庫的複寫延遲秒數(Seconds_Behind_Master/Seconds_Behind_Source)。

mysql_relay_log_space

gauge

-

中繼日誌空間

副本上中繼日誌(relay log)的總大小(位元組)。

mysql_collector_success_duration

gauge

-

Collector 採集成功

各 mysqld_exporter Collector 採集是否成功(1 成功,0 失敗)。

mysql_duration

gauge

秒

Collector 採集耗時

各 mysqld_exporter Collector 最近一次採集耗時(秒)。

除上述 MetricSet 彙總指標外,Exporter 採集的原始指標(mysql_*、mysql_global_status_*、mysql_slave_status_* 等)均寫入 Prometheus 儲存,可直接用 PromQL 查詢。

常用查詢樣本

# 執行個體 QPS
sum by (target_uri) (rate(mysql_global_status_questions[5m]))

# 串連使用率(%)
100 * mysql_global_status_threads_connected / clamp_min(mysql_global_variables_max_connections, 1)

# 每秒慢查詢數
sum by (target_uri) (rate(mysql_global_status_slow_queries[5m]))

# InnoDB 緩衝池命中率(%)
100 * (1 - rate(mysql_global_status_innodb_buffer_pool_reads[5m])
        / clamp_min(rate(mysql_global_status_innodb_buffer_pool_read_requests[5m]), 1))

# 主從複寫延遲(秒)
mysql_slave_status_seconds_behind_master

警示模板

接入後以下警示規則自動生效,無需手動設定。CS 與 ECS(VPC) 兩個環境的規則一致。警示層級 P1 對應 critical(嚴重),P2 對應 warning(警告)。

警示名稱

層級

PromQL 運算式

期間

說明

MySQLDown

P1(嚴重)

mysql_up != 1

5m

執行個體不可用

MySQLReplicationNotRunning

P1(嚴重)

mysql_slave_status_slave_io_running == 0 or mysql_slave_status_slave_sql_running == 0

2m

複製 IO 或 SQL 線程停止

MySQLReplicationLag

P1(嚴重)

(instance:mysql_slave_lag_seconds > 30) and on(instance) (predict_linear(instance:mysql_slave_lag_seconds[5m], 60 * 2) > 0)

1m

複寫延遲持續擴大且未恢複

MySQLHeartbeatLag

P1(嚴重)

(instance:mysql_heartbeat_lag_seconds > 30) and on(instance) (predict_linear(instance:mysql_heartbeat_lag_seconds[5m], 60 * 2) > 0)

1m

心跳延遲持續擴大且未恢複

MySQLNotReady

P2(警告)

mysql_global_status_wsrep_ready != 1

5m

Galera 叢集節點未就緒

MySQLOutOfSync

P2(警告)

(mysql_global_status_wsrep_local_state != 4 and mysql_global_variables_wsrep_desync == 0)

5m

Galera 叢集節點不同步

MySQLDonorFallingBehind

P2(警告)

(mysql_global_status_wsrep_local_state == 2 and mysql_global_status_wsrep_local_recv_queue > 100)

5m

捐贈節點落後,接收隊列積壓

MySQLInnoDBLogWaits

P2(警告)

rate(mysql_global_status_innodb_log_waits[15m]) > 10

—

InnoDB 日誌寫入等待磁碟

MySQLNotReady、MySQLOutOfSync、MySQLDonorFallingBehind 依賴 Galera(wsrep)相關指標,僅在 Galera / PXC 叢集上生效。

儲存策略說明

接入 MySQL 後,CloudMonitor會建立對應的儲存執行個體用於儲存可觀測資料。

資料類型

預設儲存位置

備忘

指標

Prometheus 執行個體:RegionShare:{{workspaceName}}:{{regionId}}

關聯資料集 middleware.metric.mysql,按 instance_id='<host>:<port>' 過濾

卸載或修改接入策略

如果期望取消或修改 MySQL 的接入,可以在 接入中心 的 接入管理 頁,找到對應的接入策略,進行 編輯 或 刪除 。刪除接入策略後,Exporter 與採集配置一併移除,已寫入的歷史指標按儲存的生命週期策略保留。