阿里云官方鏡像站: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中標簽,
查詢頁面除了延遲和消耗時間等,還會展示執行計劃,時序和執行這條查詢的主機分布。
執行計劃頁面,會展示不同的執行計劃及其延遲和平均消耗。
性能指標頁面,展示了一些常見指標的性能歷史。
執行查詢的主機分布頁面,會展示執行當前查詢的主機分布,通過菜單可以鏈接到主機的相關頁面,這對于排查問題比較方便,比如某個主機上的查詢延遲非常高,可以直接跳轉到改主機的相關儀表盤頁面進行查看。
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
? ? ? ?ymf
評論
查看更多