MySQL監控-Datadog資料庫監控調研

哈哈哈hh發表於2021-11-24

阿里雲官方映象站:MySQ映象源

https://developer.aliyun.com/mirror/?utm_content=g_1000303593

前言

MySQL是最流行的資料庫之一,在大多系統的後端的儲存都有MySQL的身影,MySQL執行的是否健康,直接影響著整個系統的執行,資料庫的瓶頸往往也是整個系統的瓶頸,其重要性不言而喻,所以對於MySQL的監控必不可少,及時發現MySQL執行中的異常,可以有效提高系統的可用性和使用者體驗。

本文主要介紹下MySQL如何做監控,以及對Datadog的Database Monitoring的一些簡單調研。

監控型別

Google提出在系統監控中的黃金指標,分別是Latency,Traffic,Saturation,Errors,MySQL一般作為資源類服務系統出現,在MySQL監控中也可以以這些指標為指引來進行指標收集和監控。

黃金指標

  • Latency延遲:比如MySQL中的查詢的延遲,一條Select語句的延遲可能會直接影響使用者體驗,監控SQL語句的平均延遲,P99延遲可以提早發現對系統的影響。
  • Traffic:在MySQL中,查詢的QPS是吞吐量的一種指標,比如MySQL伺服器每秒可以支援多少查詢,多少更新,吞吐量的指標也會影響到使用者體驗。
  • Saturation飽和度:飽和度是指系統的資源被消耗殆盡的程度,比如在MySQL最大連線數為300,當前連線數已經達到240的情況可能需要引起注意,因為可能在不久的將來會將連線數打滿,導致新的連線進不來,影響上層服務的可用性。
  • Errors錯誤:MySQL中的 Aborted_clients和Aborted_connects的增加往往意味了使用方在使用的時候出現了一些錯誤,需要引起注意,比如客戶端在退出時沒有呼叫mysql_close會導致Aborted_clients指標的增加,所以監控這個指標對於問題的排查很有幫助。

MySQL關鍵指標型別

黃金指標對於指標的監控有很大的指導意義,但是選取哪些指標,也是值得考量的,這裡借用Datadog的一篇 MySQL監控文章來描述MySQL監控中的關鍵指標。從效能和資源使用角度大致分為4類:

  • Query throuput:查詢吞吐量,主要包括查詢的QPS和更新QPS,用來表示延遲。
  • Query performance: 查詢效能,主要包括查詢的消耗的平均時間,查詢錯誤指標,慢查詢數量,分別包含吞吐量和錯誤。
  • Connections: 連線,主要包括當前開啟連線數和執行連線數表示飽和度。錯誤連線數用來表示錯誤。
  • Buffer pool usage: 緩衝池使用情況,innodb_buffer_pool_reads表示InnoDB緩衝池無法滿足的請求數,計算出的緩衝池中的頁面使用數量使用率可以用表示資源的飽和度。

MySQL監控流程

MySQL的監控跟其他系統的監控類似,一般會包含指標日誌類的資料收集,指標的視覺化展示,指標告警,問題的排查等流程。

指標收集

MySQL的指標型別有很多,可以通過兩種方式獲取

  • 服務內部狀態/內部變數:一般通過show status或者show variable來獲取,表示全域性的一些指標。
  • peformance shema和sys schema,提供了更加底層的執行時的詳細的指標資訊。

視覺化展示

通過Agent將指標資料採集到後端儲存中,然後進行視覺化展示,視覺化儀表盤會將指標的歷史值和當前值繪製成曲線,便於檢視指標的變化,指標如果有明顯的變化,從圖表中可以明顯的看出來,對於排查問題有一定的參考意義。

指標異常告警

在某個指標出現異常時,可以配置相應的告警,告警監控可以使用閾值設定或者AI演算法來自動識別指標的異常,產生的告警可以分不同的嚴重等級,不同的等級可以配置不同的通知渠道,比如嚴重度低的發郵件提醒既可以,對於高嚴重度的指標異常,配置電話通知。

通過儀表盤或者告警,可以找到哪個指標出現了異常,然後根據不同的指標進行不同的排查方式,比如連線數超過最大連線數報警,可以調大資料庫的最大連線數或者減少客戶端的連線數。對於更復雜的場景,可能需要藉助問題發生時其他的日誌或者指標進行根因分析。


接下來以Datadog的資料庫監控為例,來調研Datadog是如何做資料庫監控的,文中圖片來自Datadog官網。

Datadog 資料庫監控

指標採集

Agent端採集

Datadog的指標採集是通過安裝Agent來採集,Agent可以部署在自建機器或者雲伺服器上,可以連線到伺服器即可。

指標資料

通過安裝Datadog Agent到資料庫所在伺服器或者能連線到資料的伺服器上,然後建立一個datadog使用者,並且給datadog賦予一定的許可權如REPLICATION CLIENT,PROCESS和SELECT ON performance_schema.*的許可權。Datadog為了收集explain plan還會建立幾個儲存過程 explain_statement,enable_events_statements_consumers。

日誌資料

Datadog Agent支援採集MySQL伺服器端General日誌、錯誤日誌、慢日誌等,當然前提是MySQL服務端開啟這些日誌儲存。

儀表盤

總體指標

MySQL總覽,主要展示了收集的MySQL指標的整體態勢。

Query Metrics

主要用來展示標準化查詢(normalized query)的歷史效能指標,可以按照查詢數,平均延遲,消耗總時間,返回行數進行排序。

同時也可以根據標籤或聚合維度來展示消耗了最多查詢時間的Top查詢和延遲。根據不同的維度來分組展示每個組的查詢數,平均延遲,消耗總時間。

Query Details

在Query Metrics頁面搜尋特定的query,可以檢視其Query Detail頁面,在其中可以檢視語句的平均延遲和查詢總時間,同時頁面還會展示查詢關聯的Datadog中標籤,

查詢頁面除了延遲和消耗時間等,還會展示執行計劃,時序和執行這條查詢的主機分佈。

  • 執行計劃頁面,會展示不同的執行計劃及其延遲和平均消耗。

  • 效能指標頁面,展示了一些常見指標的效能歷史。

image

  • 執行查詢的主機分佈頁面,會展示執行當前查詢的主機分佈,通過選單可以連結到主機的相關頁面,這對於排查問題比較方便,比如某個主機上的查詢延遲非常高,可以直接跳轉到改主機的相關儀表盤頁面進行檢視。

Query Samples

主要包含取樣查詢的效能資料,延遲,消耗和執行計劃,同時也支援按照Table來展示Top消耗的查詢語句。

告警

Datadog提供了對於指標的監控告警,主要支援五種監控型別,包括:

  • Thresold Alert:閾值監控。
  • Change Alert: 事件變更監控。
  • Anomaly Dectection:異常檢測,使用機器學習演算法來判斷指標的異常。
  • Outlier Alert:離群點檢測告警。
  • Forecast Alert:預測告警。

總結

本文首先介紹了資料庫監控的關鍵指標和MySQL監控的一般流程主要包括指標收集,視覺化展示,指標異常告警。然後通過對Datadog的資料庫監控產品做介紹,除了常規的總體指標展示,Datadog的資料庫監控還提供了Query相關的指標,分別包括Query Metrics,Query Detail和Query Samples,從查詢的角度進行監控和分析統計,除了Query級別的指標展示,還包括對執行計劃的展示,同時也支援從儀表盤Drill down到主機級別檢視資源指標,通過這些儀表盤可以比較方便的看出指標的異常。



本文轉自:https://developer.aliyun.com/article/809609


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2843825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章