統一觀測丨如何使用 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
  • 就像 Web Api 介面可以對入參進行驗證,避免用戶傳入非法的或者不符合我們預期的參數一樣,選項也可以對配置源的內容進行驗證,避免配置中的值與選項類中的屬性不對應或者不滿足預期,畢竟大部分配置都是通過字元串的方式,驗證是很有必要的。 1. 註解驗證 像入參驗證一樣,選項驗證也可以通過特性註解方便地 ...
  • 原文作者:aircraft 原文鏈接:https://www.cnblogs.com/DOMLX/p/17270107.html 加工的泛型類如下: using System; using System.Collections.Generic; using System.IO; using Syst ...
  • 在前一篇文章,我們瞭解瞭如何通過.NET6+Quartz開發基於控制台應用程式的定時任務,今天繼續在之前的基礎上,進一步講解基於ASP.NET Core MVC+Quartz實現定時任務的可視化管理頁面,僅供學習分享使用,如有不足之處,還請指正。 涉及知識點 Quartz組件,關於Quartz組件的 ...
  • 面向對象1 面向對象,更在乎的結果,而過程的實現並不重要 IDea快捷鍵(基礎版) | 快捷鍵 | 作用 | | | | | ctrl + / | 快捷註釋 | | ctrl + shift + / | 多行註釋 | | ctrl + d | 快速複製 | | ctrl + shift + up/d ...
  • NX中的checkmate功能是用於檢查模型、圖紙數據的工具,在UGOPEN中有例子。手動操作可以檢查已載入的裝配下所有零部件,可以設置通過後保存模型,檢查結果保存到Teamcenter中,預設保存在零組件版本下。 代碼中可以設置多個檢查規則。相關設置可以在用戶預設設置中進行設置。 1 // 2 / ...
  • JavaSE 運算符 算術運算符:+,-,*,/,%,++(自增),--(自減) i++:先用後+1;++i:先+1後用 賦值運算符:= 擴展賦值運算符:+=,-=,*=,/= a+=b >a=a+b: ​ 可讀性差,但是編譯效率高,且會自動進行類型轉換; ​ 當ab為基本數據類型時,a+b和b+a ...
  • 面向對象2 訪問修飾符 | | private | default | protected | public | | | | | | | | 當前類 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_che ...
  • 推薦一些學習qml教程 Qt官方的QML教程: https://doc.qt.io/qt-5/qtqml-index.html 這是一個由Qt官方提供的完整的QML教程,包含了所有基本知識和高級語法。 QML中文網:http://www.qmlcn.com/ 這是一個非常不錯的中文QML學習網站,提 ...
  • QAbstractBUtton: 所有按鈕控制項的基類 提供按鈕的通用功能 繼承自QWidget 屬於抽象類別,不能直接去使用,必須藉助於子類(除非你覺得子類不夠用,想自定義一個按鈕) 大部分功能之前已經使用過,在這裡只作簡單介紹 文本設置: setText(str) :設置按鈕提示文本 text() ...
  • 使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇介紹 VLD 配置文件中配置項 StartDisabled 的使用方法。 ...