MariaDB

MariaDB 整合功能會收集與 InnoDB、緩衝區集區和其他各種作業相關的效能指標。它也會收集一般、錯誤和查詢速度緩慢的記錄,並將這些記錄剖析為 JSON 酬載。系統會剖析錯誤記錄,找出錯誤代碼和子系統。系統會將慢速查詢記錄解析為描述查詢效能的鍵/值組,包括查詢時間和檢查的資料列。

如要進一步瞭解 MariaDB,請參閱 MariaDB 說明文件

事前準備

如要收集 MariaDB 遙測資料,您必須安裝 Ops Agent

  • 如要使用指標,請安裝 2.37.0 以上版本。
  • 如要記錄,請安裝 2.37.0 以上版本。

這項整合功能支援 MariaDB 10.1.X 到 10.7.X 版。

設定 MariaDB 例項

MariaDB 是 MySQL 關聯資料庫管理系統 (RDBMS) 的社群開發版本,並提供商業支援。如要收集 MariaDB 的記錄和指標,請使用 mysql 接收器。

根據預設,mysql 指標接收器會使用 Unix 通訊端和 Unix 驗證機制,以 root 使用者身分連線至本機 MariaDB 伺服器。

mysql_error 記錄接收器會從下表所示的預設檔案路徑收集記錄檔。在部分平台上,MariaDB 預設會記錄至 journald,而非記錄至檔案。如要將 MariaDB 設定為記錄至檔案,請在 MariaDB 設定中設定 log_error 選項。如要進一步瞭解 log_error 設定,請參閱「將錯誤記錄寫入檔案」。

為 MariaDB 設定作業套件代理程式

按照設定 Ops Agent 的指南新增必要元素,以便從 MariaDB 執行個體收集遙測資料,然後重新啟動代理程式

範例設定

下列指令會建立設定,收集及擷取 MariaDB 的遙測資料:

# Configures Ops Agent to collect telemetry from the app. You must restart the agent for the configuration to take effect.

set -e

# Check if the file exists
if [ ! -f /etc/google-cloud-ops-agent/config.yaml ]; then
  # Create the file if it doesn't exist.
  sudo mkdir -p /etc/google-cloud-ops-agent
  sudo touch /etc/google-cloud-ops-agent/config.yaml
fi

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    mysql:
      type: mysql
  service:
    pipelines:
      mysql:
        receivers:
        - mysql
logging:
  receivers:
    mysql_error:
      type: mysql_error
    mysql_general:
      type: mysql_general
    mysql_slow:
      type: mysql_slow
  service:
    pipelines:
      mysql:
        receivers:
          - mysql_error
          - mysql_general
          - mysql_slow
EOF

請重新啟動 Ops Agent,讓這些變更生效:

Linux

  1. 如要重新啟動代理程式,請在執行個體上執行下列指令:
    sudo systemctl restart google-cloud-ops-agent
    
  2. 如要確定代理程式已重新啟動,請執行下列指令,並驗證「指標代理程式」和「Logging 代理程式」元件是否已啟動:
    sudo systemctl status "google-cloud-ops-agent*"
    

Windows

  1. 使用遠端桌面協定或類似工具連線至執行個體,然後登入 Windows。
  2. 在 PowerShell 圖示上按一下滑鼠右鍵,然後選取「Run as Administrator」,即可開啟具有系統管理員權限的 PowerShell 終端機。
  3. 如要重新啟動代理程式,請執行下列 PowerShell 指令:
    Restart-Service google-cloud-ops-agent -Force
    
  4. 如要確認代理程式已重新啟動,請執行下列指令,並驗證「Metrics Agent」和「Logging Agent」元件是否已啟動:
    Get-Service google-cloud-ops-agent*
    

設定記錄收集

如要擷取 MariaDB 的記錄,您必須為 MariaDB 產生的記錄建立接收器,然後為新接收器建立管道。

如要為 mysql_error 記錄設定接收器,請指定下列欄位:

欄位 預設 說明
exclude_paths include_paths 比對的集合中排除的檔案系統路徑模式清單。
include_paths [/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log, /run/mysqld/mysqld.err, /var/lib/mysql/${HOSTNAME}.err] 檔案尾隨讀取的檔案系統路徑清單。路徑中可使用萬用字元 (*),例如 /var/log/mysql/*.log
record_log_file_path false 如果設為 true,則記錄記錄取得的特定檔案路徑會顯示在輸出記錄項目中,做為 agent.googleapis.com/log_file_path 標籤的值。使用萬用字元時,系統只會記錄取得記錄的檔案路徑。
type 這個值必須是 mysql_error
wildcard_refresh_interval 60s include_paths 中萬用字元檔案路徑的更新間隔。以時間長度表示,例如 30s2m。在記錄傳送量高的情況下,這個屬性可能會派上用場,因為記錄檔案的輪替時間會比預設間隔更快。

如要為 mysql_general 記錄設定接收器,請指定下列欄位:

欄位 預設 說明
exclude_paths include_paths 比對的集合中排除的檔案系統路徑模式清單。
include_paths [/var/lib/mysql/${HOSTNAME}.log] 檔案尾隨讀取的檔案系統路徑清單。路徑中可使用萬用字元 (*)。
record_log_file_path false 如果設為 true,則記錄記錄取得的特定檔案路徑會顯示在輸出記錄項目中,做為 agent.googleapis.com/log_file_path 標籤的值。使用萬用字元時,系統只會記錄取得記錄的檔案路徑。
type 這個值必須是 mysql_general
wildcard_refresh_interval 60s include_paths 中萬用字元檔案路徑的更新間隔。以時間長度表示,例如 30s2m。在記錄傳送量高的情況下,這個屬性可能會派上用場,因為記錄檔案的輪替時間會比預設間隔更快。

如要為 mysql_slow 記錄設定接收器,請指定下列欄位:

欄位 預設 說明
exclude_paths include_paths 比對的集合中排除的檔案系統路徑模式清單。
include_paths [/var/lib/mysql/${HOSTNAME}-slow.log] 檔案尾隨讀取的檔案系統路徑清單。路徑中可使用萬用字元 (*)。
record_log_file_path false 如果設為 true,則記錄記錄取得的特定檔案路徑會顯示在輸出記錄項目中,做為 agent.googleapis.com/log_file_path 標籤的值。使用萬用字元時,系統只會記錄取得記錄的檔案路徑。
type 這個值必須是 mysql_slow
wildcard_refresh_interval 60s include_paths 中萬用字元檔案路徑的更新間隔。以時間長度表示,例如 30s2m。在記錄傳送量高的情況下,這個屬性可能會派上用場,因為記錄檔案的輪替時間會比預設間隔更快。

記錄內容

logName 是根據設定中指定的接收器 ID 衍生而來。LogEntry 內部的詳細欄位如下所示。

mysql_error 記錄包含 LogEntry 中的下列欄位:

欄位 類型 說明
jsonPayload.errorCode 字串 與記錄相關的 MySQL 錯誤代碼
jsonPayload.level 字串 記錄項目層級
jsonPayload.message 字串 記錄訊息
jsonPayload.subsystem 字串 記錄來源的 MySQL 子系統
jsonPayload.tid 數字 記錄來源的執行緒 ID
severity 字串 (LogSeverity) 記錄項目層級 (已翻譯)。

mysql_general 記錄包含 LogEntry 中的下列欄位:

欄位 類型 說明
jsonPayload.command 字串 系統記錄的資料庫動作類型
jsonPayload.message 字串 資料庫動作記錄
jsonPayload.tid 數字 記錄來源的執行緒 ID
severity 字串 (LogSeverity) 記錄項目層級 (已翻譯)。

mysql_slow 記錄包含 LogEntry 中的下列欄位:

欄位 類型 說明
jsonPayload.bytesSent 數字 傳送至所有用戶端的位元組數
jsonPayload.createdTmpDiskTables   數字 伺服器建立的內部磁碟上臨時資料表數量
jsonPayload.createdTmpTables   數字 伺服器建立的內部臨時資料表數量
jsonPayload.createdTmpTableSizes   數字 伺服器建立的內部臨時資料表使用的位元組數
jsonPayload.database 字串 執行查詢的資料庫
jsonPayload.filesort   布林值 陳述式使用了 filesort
jsonPayload.filesortOnDisk   布林值 陳述式使用檔案排序,需要磁碟上的臨時資料表
jsonPayload.fullJoin   布林值 陳述式未使用索引彙整資料表
jsonPayload.fullScan   布林值 陳述式使用完整資料表掃描
jsonPayload.host 字串 用戶端連線的主機名稱
jsonPayload.ipAddress 字串 用戶端連線的 IP 位址
jsonPayload.lockTime 數字 取得鎖定項目的時間 (以秒為單位)
jsonPayload.message 字串 查詢的全文
jsonPayload.priorityQueue   布林值 這條語句使用了優先佇列檔案排序
jsonPayload.queryCacheHit 布林值 陳述式是由查詢快取提供
jsonPayload.queryTime 數字 陳述式執行時間 (以秒為單位)
jsonPayload.rowsAffected 整數 受陳述式影響的資料列數
jsonPayload.rowsExamined 數字 伺服器層檢查的資料列數
jsonPayload.rowsSent 數字 傳送至用戶端的資料列數
jsonPayload.sortMergePasses   數字 排序演算法必須執行的合併次數
jsonPayload.storedRoutine 字串 目前執行中的預存常式名稱
jsonPayload.tid 數字 記錄查詢的執行緒 ID
jsonPayload.user 字串 執行查詢的已驗證使用者
severity 字串 (LogSeverity) 記錄項目層級 (已翻譯)。

 只有在 log_slow_verbosity 系統變數包含 'query_plan' 時,系統才會提供這些欄位。

設定指標收集

如要擷取 MariaDB 的指標,您必須為 MariaDB 產生的指標建立接收器,然後為新接收器建立管道。

這個接收器不支援在設定中使用多個執行個體,例如用於監控多個端點。所有這類例項都會寫入相同的時間序列,而 Cloud Monitoring 無法區分這些例項。

如要為 mysql 指標設定接收器,請指定下列欄位:

欄位 預設 說明
collection_interval 60s 時間長度值,例如 30s5m
endpoint /var/run/mysqld/mysqld.sock hostname:port 或以 / 開頭的 Unix 通訊端路徑,用於連線至 MariaDB 伺服器。
password 用於連線至伺服器的密碼。
type 這個值必須是 mysql
username root 用於連線至伺服器的使用者名稱。

監控的內容

下表列出作業套件代理程式從 MariaDB 執行個體收集的指標。

指標類型
類型、類型
受控資源
標籤
workload.googleapis.com/mysql.buffer_pool_data_pages
GAUGEINT64
gce_instance
status
workload.googleapis.com/mysql.buffer_pool_limit
GAUGEINT64
gce_instance
 
workload.googleapis.com/mysql.buffer_pool_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.buffer_pool_page_flushes
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/mysql.buffer_pool_pages
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.buffer_pool_size
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.commands
CUMULATIVEINT64
gce_instance
command
workload.googleapis.com/mysql.double_writes
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.handlers
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.locks
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.log_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.page_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.replica.sql_delay
GAUGEINT64
gce_instance
 
workload.googleapis.com/mysql.replica.time_behind_source
GAUGEINT64
gce_instance
 
workload.googleapis.com/mysql.row_locks
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.row_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.sorts
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.threads
GAUGEDOUBLE
gce_instance
kind

驗證設定

本節說明如何驗證您是否正確設定 MariaDB 接收器。作業套件代理程式可能需要一兩分鐘的時間,才能開始收集遙測資料。

如要確認 MariaDB 記錄是否已傳送至 Cloud Logging,請執行下列步驟:

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面:

    前往「Logs Explorer」(記錄檔探索工具)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

  2. 在編輯器中輸入以下查詢,然後按一下「執行查詢」
    resource.type="gce_instance"
    (log_id("mysql_error") OR log_id("mysql_general") OR log_id("mysql_slow"))
    

如要確認 MariaDB 指標是否已傳送至 Cloud Monitoring,請執行下列操作:

  1. 前往 Google Cloud 控制台的 「Metrics Explorer」頁面:

    前往 Metrics Explorer

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在查詢建構工具窗格的工具列中,選取名稱為  MQL PromQL 的按鈕。
  3. 確認「Language」切換按鈕中已選取「MQL」。語言切換鈕位於可讓您設定查詢格式的工具列中。
  4. 在編輯器中輸入以下查詢,然後按一下「執行查詢」
    fetch gce_instance
    | metric 'workload.googleapis.com/mysql.threads'
    | every 1m
    

查看資訊主頁

如要查看 MariaDB 指標,您必須先設定圖表或資訊主頁。MariaDB 使用與 MySQL 相同的資訊主頁。設定整合後,Ops Agent 就會開始收集指標資料,並自動安裝所有資訊主頁。

您也可以不安裝整合功能,查看資訊主頁的靜態預覽畫面。

如要查看已安裝的資訊主頁,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁) 頁面:

    前往「Dashboards」(資訊主頁)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 選取「Dashboard List」分頁標籤,然後選擇「Integrations」類別。
  3. 按一下要查看的資訊主頁名稱。 MariaDB 使用與 MySQL 相同的資訊主頁。

如果您已設定整合功能,但未安裝資訊主頁,請檢查作業套件代理程式是否正在執行。如果資訊主頁中沒有圖表的指標資料,則無法安裝資訊主頁。作業套件代理程式開始收集指標後,系統會自動安裝資訊主頁。

如要查看資訊主頁的靜態預覽畫面,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Integrations」(整合) 頁面:

    前往「Integrations」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 按一下「Compute Engine」部署平台篩選器。
  3. 找出 MySQL 的項目,然後按一下「查看詳細資料」。MariaDB 使用與 MySQL 相同的資訊主頁。
  4. 選取「資訊主頁」分頁標籤,即可查看靜態預覽畫面。如果已安裝資訊主頁,請按一下「View dashboard」前往該頁面。

如要進一步瞭解 Cloud Monitoring 中的資訊主頁,請參閱「資訊主頁和圖表」。

如要進一步瞭解如何使用「Integrations」頁面,請參閱管理整合

安裝快訊政策

快訊政策會指示 Cloud Monitoring 在發生特定情況時通知您。MariaDB 使用與 MySQL 相同的快訊政策。您可以在 Monitoring 的「Integrations」頁面中查看及安裝這些警示政策。

如要查看可用快訊政策的說明並安裝,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Integrations」(整合) 頁面:

    前往「Integrations」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 找出 MySQL 的項目,然後按一下「查看詳細資料」。MariaDB 使用與 MySQL 相同的警示政策。
  3. 選取「警示」分頁標籤。這個分頁會說明可用的快訊政策,並提供安裝快訊政策的介面。
  4. 安裝快訊政策。快訊政策需要知道要將已觸發快訊的通知傳送到哪裡,因此需要您提供安裝資訊。如要安裝快訊政策,請按照下列步驟操作:
    1. 從可用警示政策清單中選取要安裝的政策。
    2. 在「設定通知」部分,選取一或多個通知管道。您可以選擇停用通知管道的使用,但這樣一來,警示政策就會靜默觸發。您可以在「監控」中查看狀態,但不會收到通知。

      如要進一步瞭解通知管道,請參閱「管理通知管道」。

    3. 按一下「建立政策」

如要進一步瞭解 Cloud Monitoring 中的快訊政策,請參閱快訊簡介

如要進一步瞭解如何使用「Integrations」頁面,請參閱管理整合

後續步驟

如需有關如何使用 Ansible 安裝作業套件代理程式、設定第三方應用程式,以及安裝範例資訊主頁的教學影片,請參閱「 安裝作業套件代理程式以排解第三方應用程式的問題」影片。