MySQL 整合功能會收集與 InnoDB、緩衝區集區和各種其他作業相關的效能指標。此外,也會收集一般、錯誤和慢速查詢記錄,並剖析為 JSON 酬載。系統會剖析錯誤記錄的錯誤代碼和子系統。系統會將慢速查詢記錄剖析為鍵值組,說明查詢的效能,包括查詢時間和檢查的資料列。
如要進一步瞭解 MySQL,請參閱 MySQL 說明文件。
必要條件
如要收集 MySQL 遙測資料,請安裝 Ops Agent:
- 如要使用指標,請安裝 2.32.0 以上版本。
- 如要使用記錄,請安裝 2.5.0 以上版本。
這項整合功能支援 MySQL 5.7 和 8.0 版。
設定 MySQL 執行個體
根據預設,mysql
接收器會使用 Unix 通訊端和 Unix 驗證,以 root
使用者身分連線至本機 MySQL 伺服器。
設定 MySQL 適用的作業套件代理程式
按照「設定 Ops Agent」指南操作,新增必要元素,從 MySQL 執行個體收集遙測資料,然後重新啟動代理程式。
範例設定
下列指令會建立設定,以收集及擷取 MySQL 的遙測資料:
如要讓這些變更生效,請重新啟動 Ops Agent:
Linux
- 如要重新啟動代理程式,請在執行個體上執行下列指令:
sudo systemctl restart google-cloud-ops-agent
- 如要確定代理程式已重新啟動,請執行下列指令,並驗證「指標代理程式」和「Logging 代理程式」元件是否已啟動:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- 使用遠端桌面協定或類似工具連線至執行個體,並登入 Windows。
- 以滑鼠右鍵按一下 PowerShell 圖示,然後選取「以系統管理員身分執行」,以管理員權限開啟 PowerShell 終端機。
- 如要重新啟動代理程式,請執行下列 PowerShell 指令:
Restart-Service google-cloud-ops-agent -Force
- 如要確定代理程式已重新啟動,請執行下列指令,並驗證「指標代理程式」和「Logging 代理程式」元件是否已啟動:
Get-Service google-cloud-ops-agent*
設定記錄檔收集作業
如要從 MySQL 擷取記錄,您必須為 MySQL 產生的記錄建立接收器,然後為新的接收器建立管道。
如要設定 mysql_error
記錄的接收器,請指定下列欄位:
欄位 | 預設 | 說明 |
---|---|---|
exclude_paths |
要從 include_paths 比對的集合中排除的檔案系統路徑模式清單。 |
|
include_paths |
[/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log] |
要讀取的檔案系統路徑清單,方法是追蹤每個檔案。路徑中可使用萬用字元 (* ),例如 /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 中萬用字元檔案路徑的重新整理間隔。以時間長度表示,例如 30s 或 2m 。在記錄吞吐量較高的情況下,記錄檔的輪替速度會比預設間隔更快,這時這個屬性就可能派上用場。 |
如要設定 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 中萬用字元檔案路徑的重新整理間隔。以時間長度表示,例如 30s 或 2m 。在記錄吞吐量較高的情況下,記錄檔的輪替速度會比預設間隔更快,這時這個屬性就可能派上用場。 |
如要設定 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 中萬用字元檔案路徑的重新整理間隔。以時間長度表示,例如 30s 或 2m 。在記錄吞吐量較高的情況下,記錄檔的輪替速度會比預設間隔更快,這時這個屬性就可能派上用場。 |
記錄內容
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.bytesReceived † |
數字 | 從所有用戶端收到的位元組數 |
jsonPayload.bytesSent † |
數字 | 傳送給所有用戶端的位元組數 |
jsonPayload.createdTmpDiskTables † |
數字 | 伺服器建立的內部磁碟臨時資料表數量 |
jsonPayload.createdTmpTables † |
數字 | 伺服器建立的內部臨時資料表數量 |
jsonPayload.database |
字串 | 執行查詢的資料庫 |
jsonPayload.endTime † |
字串 | 陳述式執行結束時間 |
jsonPayload.errorNumber † |
數字 | 陳述式錯誤編號,如果沒有發生錯誤則為 0 |
jsonPayload.host |
字串 | 資料庫執行個體的主機 |
jsonPayload.ipAddress |
字串 | 資料庫執行個體的位址 |
jsonPayload.killed † |
數字 | 如果陳述式已終止,則為指出原因的錯誤號碼;如果陳述式正常終止,則為 0 |
jsonPayload.level |
字串 | 記錄項目層級 |
jsonPayload.lockTime |
數字 | 取得鎖定的時間 (以秒為單位) |
jsonPayload.message |
字串 | 查詢全文 |
jsonPayload.queryTime |
數字 | 陳述式執行時間 (以秒為單位) |
jsonPayload.readFirst † |
數字 | 讀取索引中第一個項目的次數 |
jsonPayload.readKey † |
數字 | 根據鍵讀取資料列的要求數 |
jsonPayload.readLast † |
數字 | 讀取索引中最後一個鍵的要求數 |
jsonPayload.readNext † |
數字 | 依索引鍵順序讀取下一列的要求數 |
jsonPayload.readPrev † |
數字 | 依索引鍵順序讀取前一列的要求數 |
jsonPayload.readRnd † |
數字 | 根據固定位置讀取資料列的要求數量 |
jsonPayload.readRndNext † |
數字 | 讀取資料檔案中下一列的要求數 |
jsonPayload.rowsExamined |
數字 | 伺服器層檢查的資料列數 |
jsonPayload.rowsSent |
數字 | 傳送給用戶端的列數 |
jsonPayload.sortMergePasses † |
數字 | 排序演算法必須執行的合併傳遞次數 |
jsonPayload.sortRangeCount † |
數字 | 使用範圍完成的排序次數 |
jsonPayload.sortRows † |
數字 | 排序後的資料列數量 |
jsonPayload.sortScanCount † |
數字 | 掃描資料表完成的排序次數 |
jsonPayload.startTime † |
字串 | 陳述式執行開始時間 |
jsonPayload.tid |
數字 | 記錄查詢的討論串 ID |
jsonPayload.user |
字串 | 執行查詢的使用者 |
severity |
字串 (LogSeverity ) |
記錄項目層級 (已翻譯)。 |
† 只有在 log_slow_extra
系統變數設為 'ON'
時,才會提供這些欄位。這個變數適用於 MySQL 8.0.14 以上版本。
如要瞭解這些欄位,請參閱 MySQL 說明文件。
設定指標收集
如要從 MySQL 擷取指標,您必須為 MySQL 產生的指標建立接收器,然後為新的接收器建立管道。
這個接收器不支援在設定中使用多個執行個體,例如監控多個端點。所有這類執行個體都會寫入相同的時間序列,而 Cloud Monitoring 無法區分這些執行個體。
如要為 mysql
指標設定接收器,請指定下列欄位:
欄位 | 預設 | 說明 |
---|---|---|
collection_interval |
60s |
時間長度值,例如 30s 或 5m 。 |
endpoint |
/var/run/mysqld/mysqld.sock |
用於連線至 MySQL 伺服器的 hostname:port 或 Unix 通訊端路徑,開頭為 / 。 |
password |
用於連線至伺服器的密碼。 | |
type |
這個值必須是 mysql 。 |
|
username |
root |
用於連線至伺服器的使用者名稱。 |
監控的內容
下表列出作業套件代理程式從 MySQL 執行個體收集的指標。
指標類型 | |
---|---|
類型 受監控資源 |
標籤 |
workload.googleapis.com/mysql.buffer_pool_data_pages
|
|
GAUGE , INT64 gce_instance |
status
|
workload.googleapis.com/mysql.buffer_pool_limit
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/mysql.buffer_pool_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.buffer_pool_page_flushes
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/mysql.buffer_pool_pages
|
|
GAUGE , DOUBLE gce_instance |
kind
|
workload.googleapis.com/mysql.buffer_pool_size
|
|
GAUGE , DOUBLE gce_instance |
kind
|
workload.googleapis.com/mysql.commands
|
|
CUMULATIVE , INT64 gce_instance |
command
|
workload.googleapis.com/mysql.double_writes
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.handlers
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.locks
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.log_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.page_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.replica.sql_delay
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/mysql.replica.time_behind_source
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/mysql.row_locks
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.row_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.sorts
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.threads
|
|
GAUGE , DOUBLE gce_instance |
kind
|
驗證設定
本節說明如何確認 MySQL 接收器設定正確無誤。作業套件代理程式可能需要一到兩分鐘,才會開始收集遙測資料。
如要確認 MySQL 記錄是否傳送至 Cloud Logging,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
- 在編輯器中輸入下列查詢,然後按一下「執行查詢」:
resource.type="gce_instance" (log_id("mysql_error") OR log_id("mysql_general") OR log_id("mysql_slow"))
如要確認 MySQL 指標是否已傳送至 Cloud Monitoring,請按照下列步驟操作:
-
前往 Google Cloud 控制台的 leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在查詢建構工具窗格的工具列中,選取名稱為 code MQL 或 code PromQL 的按鈕。
- 確認已在「Language」(語言) 切換按鈕中選取「PromQL」。語言切換按鈕位於同一工具列,可供你設定查詢格式。
- 在編輯器中輸入下列查詢,然後按一下「執行查詢」:
fetch gce_instance | metric 'workload.googleapis.com/mysql.threads' | every 1m
查看資訊主頁
如要查看 MySQL 指標,您必須設定圖表或資訊主頁。 MySQL 整合功能包含一或多個資訊主頁。 設定整合功能後,Ops Agent 就會開始收集指標資料,並自動安裝所有資訊主頁。
您也可以查看資訊主頁的靜態預覽畫面,不必安裝整合服務。
如要查看已安裝的資訊主頁,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁)
頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 選取「資訊主頁清單」分頁,然後選擇「整合」類別。
- 按一下要查看的資訊主頁名稱。
如果您已設定整合功能,但尚未安裝資訊主頁,請檢查作業套件代理程式是否正在執行。如果資訊主頁中的圖表沒有指標資料,資訊主頁安裝作業就會失敗。作業套件代理程式開始收集指標後,系統就會為您安裝資訊主頁。
如要查看資訊主頁的靜態預覽畫面,請按照下列步驟操作:
-
前往 Google Cloud 控制台的
「Integrations」(整合) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 按一下「Compute Engine」部署平台篩選器。
- 找出 MySQL 的項目,然後按一下「查看詳細資料」。
- 選取「資訊主頁」分頁標籤,即可查看靜態預覽畫面。如果已安裝資訊主頁,請點選「查看資訊主頁」前往。
如要進一步瞭解 Cloud Monitoring 中的資訊主頁,請參閱「資訊主頁和圖表」。
如要進一步瞭解如何使用「整合」頁面,請參閱「管理整合」一文。
安裝快訊政策
快訊政策會指示 Cloud Monitoring 在發生指定情況時通知您。 MySQL 整合服務包含一或多項快訊政策,供您使用。您可以在 Monitoring 的「Integrations」(整合) 頁面中查看及安裝這些快訊政策。
如要查看可用快訊政策的說明並安裝,請按照下列步驟操作:
-
前往 Google Cloud 控制台的
「Integrations」(整合) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 找出 MySQL 的項目,然後按一下「查看詳細資料」。
- 選取「快訊」分頁標籤。這個分頁會說明可用的快訊政策,並提供安裝介面。
- 安裝快訊政策。快訊政策需要知道在觸發快訊時,要將通知傳送至何處,因此需要您提供安裝資訊。如要安裝快訊政策,請按照下列步驟操作:
- 從可用的警報政策清單中,選取要安裝的政策。
在「設定通知」部分,選取一或多個通知管道。您可以選擇停用通知管道,但這麼做的話,快訊政策會以無聲方式觸發。您可以在「監控」中查看狀態,但不會收到任何通知。
如要進一步瞭解通知管道,請參閱「管理通知管道」。
- 按一下「建立政策」。
如要進一步瞭解 Cloud Monitoring 中的快訊政策,請參閱快訊簡介。
如要進一步瞭解如何使用「整合」頁面,請參閱「管理整合」一文。
後續步驟
如要逐步瞭解如何使用 Ansible 安裝作業套件代理程式、設定第三方應用程式,以及安裝範例資訊主頁,請觀看「 安裝 Ops Agent 以排解第三方應用程式的問題」影片。