MySQL監控-Datadog資料庫監控調研
阿里雲官方映象站: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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2843825/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 配置CACTI監控MySQL資料庫狀態(5)增加MySQL監控模板MySql資料庫
- shell監控mysql 8.0資料庫MySql資料庫
- shell監控mysql 5.7資料庫MySql資料庫
- 資料庫監控資料庫
- MySQL資料庫監控項說明MySql資料庫
- 資料庫效能監控資料庫
- 監控資料庫活動資料庫
- zabbix使用percona監控mysql資料庫MySql資料庫
- zabbix6.2新增mysql資料庫監控MySql資料庫
- 資料庫繁忙程度監控資料庫
- 資料庫監控軟體資料庫
- SQL Server資料庫監控SQLServer資料庫
- 資料庫監控指令碼資料庫指令碼
- 監控Oracle資料庫方法Oracle資料庫
- 監控資料庫指令碼資料庫指令碼
- zabbix監控oracle資料庫Oracle資料庫
- MySQL資料庫與Nacos搭建監控服務MySql資料庫
- 使用zabbix自帶模板監控MySQL資料庫MySql資料庫
- 如何使用 Datadog 監控 NGINX(第三篇)Nginx
- 資料庫監控---PIGOSS BSM資料庫Go
- [zt]資料庫監控指令碼資料庫指令碼
- 資料庫監控指令碼(一)資料庫指令碼
- 資料庫監控指令碼(二)資料庫指令碼
- 資料庫監控指令碼(三)資料庫指令碼
- 監控資料庫效能的SQL資料庫SQL
- Zabbix監控神通資料庫教程資料庫
- 前端資料監控到底在監控什麼?前端
- MySQL監控工具MySql
- MySQL監控--zabbixMySql
- cacti監控mysqlMySql
- 效能監控調優
- MySQL調優效能監控之show profileMySql
- MySQL調優效能監控之performance schemaMySqlORM
- mysql 的一個監控指令碼,監控heartbeatMySql指令碼
- 資料庫DML監控一例資料庫
- 基於Prometheus的資料庫監控Prometheus資料庫
- 資料庫效能SQL監控指令碼資料庫SQL指令碼
- Oracle資料庫的監控內容Oracle資料庫