
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/542456.html
標籤:MySQL
