統一觀測丨如何使用 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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...