阿里云官方鏡像站:MySQ鏡像源
https://developer.aliyun.com/mirror/?utm_content=g_1000303593
前言
MySQL是最流行的數(shù)據(jù)庫之一,在大多系統(tǒng)的后端的存儲(chǔ)都有MySQL的身影,MySQL運(yùn)行的是否健康,直接影響著整個(gè)系統(tǒng)的運(yùn)行,數(shù)據(jù)庫的瓶頸往往也是整個(gè)系統(tǒng)的瓶頸,其重要性不言而喻,所以對(duì)于MySQL的監(jiān)控必不可少,及時(shí)發(fā)現(xiàn)MySQL運(yùn)行中的異常,可以有效提高系統(tǒng)的可用性和用戶體驗(yàn)。
本文主要介紹下MySQL如何做監(jiān)控,以及對(duì)Datadog的Database Monitoring的一些簡(jiǎn)單調(diào)研。
監(jiān)控類型
Google提出在系統(tǒng)監(jiān)控中的黃金指標(biāo),分別是Latency,Traffic,Saturation,Errors,MySQL一般作為資源類服務(wù)系統(tǒng)出現(xiàn),在MySQL監(jiān)控中也可以以這些指標(biāo)為指引來進(jìn)行指標(biāo)收集和監(jiān)控。
黃金指標(biāo)
Latency延遲:比如MySQL中的查詢的延遲,一條Select語句的延遲可能會(huì)直接影響用戶體驗(yàn),監(jiān)控SQL語句的平均延遲,P99延遲可以提早發(fā)現(xiàn)對(duì)系統(tǒng)的影響。
Traffic:在MySQL中,查詢的QPS是吞吐量的一種指標(biāo),比如MySQL服務(wù)器每秒可以支持多少查詢,多少更新,吞吐量的指標(biāo)也會(huì)影響到用戶體驗(yàn)。
Saturation飽和度:飽和度是指系統(tǒng)的資源被消耗殆盡的程度,比如在MySQL最大連接數(shù)為300,當(dāng)前連接數(shù)已經(jīng)達(dá)到240的情況可能需要引起注意,因?yàn)榭赡茉诓痪玫膶頃?huì)將連接數(shù)打滿,導(dǎo)致新的連接進(jìn)不來,影響上層服務(wù)的可用性。
Errors錯(cuò)誤:MySQL中的Aborted_clients和Aborted_connects的增加往往意味了使用方在使用的時(shí)候出現(xiàn)了一些錯(cuò)誤,需要引起注意,比如客戶端在退出時(shí)沒有調(diào)用mysql_close會(huì)導(dǎo)致Aborted_clients指標(biāo)的增加,所以監(jiān)控這個(gè)指標(biāo)對(duì)于問題的排查很有幫助。
MySQL關(guān)鍵指標(biāo)類型
黃金指標(biāo)對(duì)于指標(biāo)的監(jiān)控有很大的指導(dǎo)意義,但是選取哪些指標(biāo),也是值得考量的,這里借用Datadog的一篇MySQL監(jiān)控文章來描述MySQL監(jiān)控中的關(guān)鍵指標(biāo)。從性能和資源使用角度大致分為4類:
Query throuput:查詢吞吐量,主要包括查詢的QPS和更新QPS,用來表示延遲。
Query performance: 查詢性能,主要包括查詢的消耗的平均時(shí)間,查詢錯(cuò)誤指標(biāo),慢查詢數(shù)量,分別包含吞吐量和錯(cuò)誤。
Connections: 連接,主要包括當(dāng)前打開連接數(shù)和運(yùn)行連接數(shù)表示飽和度。錯(cuò)誤連接數(shù)用來表示錯(cuò)誤。
Buffer pool usage: 緩沖池使用情況,innodb_buffer_pool_reads表示InnoDB緩沖池?zé)o法滿足的請(qǐng)求數(shù),計(jì)算出的緩沖池中的頁面使用數(shù)量使用率可以用表示資源的飽和度。
MySQL監(jiān)控流程
MySQL的監(jiān)控跟其他系統(tǒng)的監(jiān)控類似,一般會(huì)包含指標(biāo)日志類的數(shù)據(jù)收集,指標(biāo)的可視化展示,指標(biāo)告警,問題的排查等流程。
指標(biāo)收集
MySQL的指標(biāo)類型有很多,可以通過兩種方式獲取
服務(wù)內(nèi)部狀態(tài)/內(nèi)部變量:一般通過show status或者show variable來獲取,表示全局的一些指標(biāo)。
peformance shema和sys schema,提供了更加底層的運(yùn)行時(shí)的詳細(xì)的指標(biāo)信息。
可視化展示
通過Agent將指標(biāo)數(shù)據(jù)采集到后端存儲(chǔ)中,然后進(jìn)行可視化展示,可視化儀表盤會(huì)將指標(biāo)的歷史值和當(dāng)前值繪制成曲線,便于查看指標(biāo)的變化,指標(biāo)如果有明顯的變化,從圖表中可以明顯的看出來,對(duì)于排查問題有一定的參考意義。
指標(biāo)異常告警
在某個(gè)指標(biāo)出現(xiàn)異常時(shí),可以配置相應(yīng)的告警,告警監(jiān)控可以使用閾值設(shè)定或者AI算法來自動(dòng)識(shí)別指標(biāo)的異常,產(chǎn)生的告警可以分不同的嚴(yán)重等級(jí),不同的等級(jí)可以配置不同的通知渠道,比如嚴(yán)重度低的發(fā)郵件提醒既可以,對(duì)于高嚴(yán)重度的指標(biāo)異常,配置電話通知。
通過儀表盤或者告警,可以找到哪個(gè)指標(biāo)出現(xiàn)了異常,然后根據(jù)不同的指標(biāo)進(jìn)行不同的排查方式,比如連接數(shù)超過最大連接數(shù)報(bào)警,可以調(diào)大數(shù)據(jù)庫的最大連接數(shù)或者減少客戶端的連接數(shù)。對(duì)于更復(fù)雜的場(chǎng)景,可能需要借助問題發(fā)生時(shí)其他的日志或者指標(biāo)進(jìn)行根因分析。
接下來以Datadog的數(shù)據(jù)庫監(jiān)控為例,來調(diào)研Datadog是如何做數(shù)據(jù)庫監(jiān)控的,文中圖片來自Datadog官網(wǎng)。
Datadog 數(shù)據(jù)庫監(jiān)控
指標(biāo)采集
Agent端采集
Datadog的指標(biāo)采集是通過安裝Agent來采集,Agent可以部署在自建機(jī)器或者云服務(wù)器上,可以連接到服務(wù)器即可。
指標(biāo)數(shù)據(jù)
通過安裝Datadog Agent到數(shù)據(jù)庫所在服務(wù)器或者能連接到數(shù)據(jù)的服務(wù)器上,然后創(chuàng)建一個(gè)datadog用戶,并且給datadog賦予一定的權(quán)限如REPLICATION CLIENT,PROCESS和SELECT ON performance_schema.*的權(quán)限。Datadog為了收集explain plan還會(huì)創(chuàng)建幾個(gè)存儲(chǔ)過程explain_statement,enable_events_statements_consumers。
日志數(shù)據(jù)
Datadog Agent支持采集MySQL服務(wù)器端General日志、錯(cuò)誤日志、慢日志等,當(dāng)然前提是MySQL服務(wù)端開啟這些日志存儲(chǔ)。
儀表盤
總體指標(biāo)
MySQL總覽,主要展示了收集的MySQL指標(biāo)的整體態(tài)勢(shì)。
Query Metrics
主要用來展示標(biāo)準(zhǔn)化查詢(normalized query)的歷史性能指標(biāo),可以按照查詢數(shù),平均延遲,消耗總時(shí)間,返回行數(shù)進(jìn)行排序。
同時(shí)也可以根據(jù)標(biāo)簽或聚合維度來展示消耗了最多查詢時(shí)間的Top查詢和延遲。根據(jù)不同的維度來分組展示每個(gè)組的查詢數(shù),平均延遲,消耗總時(shí)間。
Query Details
在Query Metrics頁面搜索特定的query,可以查看其Query Detail頁面,在其中可以查看語句的平均延遲和查詢總時(shí)間,同時(shí)頁面還會(huì)展示查詢關(guān)聯(lián)的Datadog中標(biāo)簽,
查詢頁面除了延遲和消耗時(shí)間等,還會(huì)展示執(zhí)行計(jì)劃,時(shí)序和執(zhí)行這條查詢的主機(jī)分布。
執(zhí)行計(jì)劃頁面,會(huì)展示不同的執(zhí)行計(jì)劃及其延遲和平均消耗。
性能指標(biāo)頁面,展示了一些常見指標(biāo)的性能歷史。
執(zhí)行查詢的主機(jī)分布頁面,會(huì)展示執(zhí)行當(dāng)前查詢的主機(jī)分布,通過菜單可以鏈接到主機(jī)的相關(guān)頁面,這對(duì)于排查問題比較方便,比如某個(gè)主機(jī)上的查詢延遲非常高,可以直接跳轉(zhuǎn)到改主機(jī)的相關(guān)儀表盤頁面進(jìn)行查看。
Query Samples
主要包含采樣查詢的性能數(shù)據(jù),延遲,消耗和執(zhí)行計(jì)劃,同時(shí)也支持按照Table來展示Top消耗的查詢語句。
告警
Datadog提供了對(duì)于指標(biāo)的監(jiān)控告警,主要支持五種監(jiān)控類型,包括:
Thresold Alert:閾值監(jiān)控。
Change Alert: 事件變更監(jiān)控。
Anomaly Dectection:異常檢測(cè),使用機(jī)器學(xué)習(xí)算法來判斷指標(biāo)的異常。
Outlier Alert:離群點(diǎn)檢測(cè)告警。
Forecast Alert:預(yù)測(cè)告警。
總結(jié)
本文首先介紹了數(shù)據(jù)庫監(jiān)控的關(guān)鍵指標(biāo)和MySQL監(jiān)控的一般流程主要包括指標(biāo)收集,可視化展示,指標(biāo)異常告警。然后通過對(duì)Datadog的數(shù)據(jù)庫監(jiān)控產(chǎn)品做介紹,除了常規(guī)的總體指標(biāo)展示,Datadog的數(shù)據(jù)庫監(jiān)控還提供了Query相關(guān)的指標(biāo),分別包括Query Metrics,Query Detail和Query Samples,從查詢的角度進(jìn)行監(jiān)控和分析統(tǒng)計(jì),除了Query級(jí)別的指標(biāo)展示,還包括對(duì)執(zhí)行計(jì)劃的展示,同時(shí)也支持從儀表盤Drill down到主機(jī)級(jí)別查看資源指標(biāo),通過這些儀表盤可以比較方便的看出指標(biāo)的異常。
本文轉(zhuǎn)自:https://developer.aliyun.com/article/809609
? ? ? ?ymf
評(píng)論
查看更多