MySQL 作為最流行的關係型資料庫管理系統之一,非常多系統的後端存儲都有著MySQL 的身影,可謂是廣泛應用於各行各業。與此同時,資料庫作為應用服務的核心組件,直接影響著應用服務運行。資料庫的瓶頸往往也是整個系統的瓶頸,其重要性不言而喻,所以對於 MySQL 的監控必不可少,及時發現 MySQL ... ...
MySQL 作為最流行的關係型資料庫管理系統之一,非常多系統的後端存儲都有著MySQL 的身影,可謂是廣泛應用於各行各業。與此同時,資料庫作為應用服務的核心組件,直接影響著應用服務運行。資料庫的瓶頸往往也是整個系統的瓶頸,其重要性不言而喻,所以對於 MySQL 的監控必不可少,及時發現 MySQL 運行中的異常,可以有效提高系統的可用性和用戶體驗。因此,觀測 MySQL 關鍵指標,實時關註資料庫的可用性與性能,成為運維團隊的重要任務。
1 關鍵指標解讀
在構建 MySQL 的指標觀測體系前,我們需要梳理在日常運維過程中所關註的維度與指標,做到有的放矢。Google 提出系統監控的 Latency,Traffic,Saturation,Errors 作為黃金指標。而 MySQL 作為資源類服務系統出現,我們將之進行細化,從可用性、資料庫連接、查詢、流量、文件五大維度入手。
2 基於 Prometheus 的指標觀測&告警體系搭建
在設計好所需觀測指標後,我們就可以選擇相應的觀測工具。作為最流行的資料庫, MySQL 有著非常豐富的監控工具選擇,比如 MySQL Enterprise Monitor、Prometheus等資料庫自帶、商業、開源不同屬性的工具。
而雲原生時代,為了開源友好、避免廠商鎖定、構建多雲全棧可觀測體系等企業級訴求,Prometheus 成為了 MySQL 指標監控的最佳選擇,並擁有社區專門為採集 MySQL 資料庫監控指標而設計開發的 MySQL Exporter 。
相較於自建 Prometheus,需要部署 Exporter、傳入 MySQL 實例的連接信息,配置服務發現,再建立大盤。阿裡雲 Prometheus監控一鍵集成 MySQL Exporter,並提供開箱即用的專屬監控大盤、告警,將諸多配置與操作實現白屏化,儘可能簡化配置服務接入工作量。
並基於阿裡雲自身實踐,將常見的 MySQL 告警規則製作成預置模板,幫助運維團隊快速搭建起指標看板與告警體系,不用再苦惱於提煉自身經驗或告警指標的選擇上。
-
MySQL 停機:如果該指標值是 0 表示當前資料庫未在正常運行,為 1 表示正常,可以通過 ${instance} 針對具體的實例告警;
mysql_up{${instance}} != 1
-
MySQL 實例運行時長:Prometheus 監控服務提供了預設的告警閾值,監控運行少於半小時的 MySQL 實例,用戶可以根據自己的需要修改閾值;
mysql_global_status_uptime{${instance}} < 1800
-
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 日誌等待時間
rate(mysql_global_status_innodb_log_waits{${instance}}[5m])
3 最佳實踐
前置條件
-
開通阿裡雲 Prometheus 監控服務;
-
安裝阿裡雲 Prometheus 實例(Prometheus for 容器服務、Prometheus for ECS),詳情參見:創建 Prometheus 實例;
-
準備 MySQL 實例連接信息,包括 Mysql 地址、MySQL 埠、用戶名和密碼;
集成中心安裝 MySQL 監控
-
登錄 Prometheus 控制台
https://common-buy.aliyun.com/?commodityCode=prometheus_pay_public_cn#/open
-
單擊具體的 Prometheus 實例併進入到集成中心,選擇安裝 MySQL;
-
輸入 Mysql 地址、MySQL 埠、用戶名和密碼;
註:可以通過連接測試檢查連通性
-
安裝成功後,可以查看大盤、指標、target 等信息,並且配置相關告警;
MySQL 監控告警配置
阿裡雲 Prometheus 監控服務針對 MySQL 集成,圍繞著熱點指標提供了若幹項預設的 Prometheus 告警規則。
-
安裝 MySQL 監控之後,可以通過 MySQL 集成 - 告警 - 創建告警規則進行創建;
-
填寫告警名稱、選擇告警分組、所需的告警指標以及篩選條件。
MySQL 監控大盤
Prometheus 監控服務圍繞熱點指標創建了 MySQL 監控大盤,通過監控大盤用戶可以查看可用性、資料庫查詢、網路流量、連接、記憶體等監控數據;
-
可用性、QPS 和資料庫連接
-
資料庫查詢
-
流量和記憶體使用
-
文件
4 關於阿裡雲 Prometheus 監控
阿裡雲 Prometheus 服務是基於雲原生可觀測事實標準 - Prometheus 開源項目構建的全托管觀測服務。預設集成常見雲服務,相容主流開源組件,全面覆蓋業務觀測/應用層觀測/中間件觀測/系統層觀測。通過開箱即用的 Grafana 看板與智能告警功能,並全面優化探針性能與系統可用性,幫助企業快速搭建一站式指標可觀測體系。助業務快速發現和定位問題,減輕故障給業務帶來的影響,並免去系統搭建與日常維護工作量,有效提升運維觀測效率。
與此同時,阿裡雲 Prometheus 作為阿裡雲可觀測套件的重要組成部分,與 Grafana 服務、鏈路追蹤服務,形成指標存儲分析、鏈路存儲分析、異構構數據源集成的可觀測數據層,同時通過標準的 PromQL 和 SQL,提供數據大盤展示,告警和數據探索能力。為IT成本管理、企業風險治理、智能運維、業務連續性保障等不同場景賦予數據價值,讓可觀測數據真正做到不止於觀測。
作 者 | 在峰
本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Unified-observation-How-to-use-Prometheus-to-monitor-MySQL.html