統一觀測丨如何使用 Prometheus 監控 MySQL

来源:https://www.cnblogs.com/88223100/archive/2023/01/27/Unified-observation-How-to-use-Prometheus-to-monitor-MySQL.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著技術的進步,跨平臺開發已經成為了標配,在此大背景下,ASP.NET Core也應運而生。本文主要基於ASP.NET Core+Element+Sql Server開發一個校園圖書管理系統為例,簡述基於MVC三層架構開發的常見知識點,前一篇文章,已經簡單介紹瞭如何搭建開發框架,和登錄功能實現,本篇... ...
  • 1.部署歷史 猿友們好,作為初來實習的我,已經遭受社會的“毒打”,所以請容許我在下麵環節適當吐槽,3Q! 傳統部署 ​ 回顧以往在伺服器部署webapi項目(非獨立發佈),dotnet環境、守護進程兩個逃都逃不掉,正常情況下還得來個nginx代理。不僅僅這仨,可能牽扯到yum或npm。node等都要 ...
  • 一、導入光碟機 二、安裝可選的windows組件 三、雙擊打開網路服務,安裝DHCP/DNS伺服器。 註:伺服器地址要固定,因此安裝時要規劃好網路。 四、ip地址範圍規劃時要預留i出一些p地址。排除ip地址範圍可以在範圍內單獨留出來。預設網關是固定的,不可以亂配。 五、這裡的ip地址也是固定的,要去看 ...
  • 這兩天心血來潮想要裝個WSA(安卓windows子系統),原來一直用的安卓模擬器(mumu啊藍疊啊逍遙啊),但感覺像wsa這種安卓系統與主系統融合的模式更帶感,於是開始了我艱苦的安裝(瞎捯飭)之路 我也是真慘,別人安裝失敗都是一兩個原因,我安裝失敗倒是把幾乎所有失敗原因都搭上了。 因為我年少輕狂,當 ...
  • windows2003 的安裝以及安裝時遇到的問題簡介:Windows Server 2003是微軟於2003年3月28日發佈的基於Windows XP/NT5.1開發的伺服器操作系統,併在同年4月底上市。Windows Server 2003的官方支持即已在2015年7月14日結束,Windows ...
  • 前言 Proteus 新建工程雖然不難,但對於電子小白來說可能便成了學習路上的絆腳石,本篇我將逐步講解如何在 Proteus 中新建工程。 最新版 Proteus 8.15 最新版 Proteus 8.15 現已發佈,我為此編寫了詳細的圖文安裝教程並配有安裝包,需要安裝的朋友請跳轉進行安裝。 Pro ...
  • 2023-01-27 一、redis數據類型(ZSet) redis中的zset是一個有序集合,是一個沒有重覆元素的字元串集合。 註意:①zset中的每個成員都關聯了一個評分,這個評分是從最低分到最高分的方式進行排序的。 ②集合的成員是唯一的,但是評分可以是重覆的。 (1)將一個或多個member元 ...
  • 2023-01-25 一、redis中的數據類型 1、redis列表(List) redis列表底層是一個雙向鏈表。 (1)從左邊/右邊插入一個或多個值 lpush/rpush <key><value1><value2><value3> 例如: (2)從左邊/右邊吐出一個值。值在鍵在,值光鍵亡 lp ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...