在基于云的服務(wù)中杨凑,正常運(yùn)行時間應(yīng)該是最為重要的運(yùn)維指標(biāo)之一。服務(wù)如果頻繁地中斷狈定,不僅會導(dǎo)致正常使用的中斷漫雷,還會對品牌帶來負(fù)面影響瓜富。99.9% 或 99.99% 已經(jīng)算不上高水準(zhǔn)的高可用性了,用戶期望的是 100% 的可用性降盹。為了達(dá)到這一點(diǎn)与柑,我們不僅需要遵循良好的設(shè)計模式并保持服務(wù)的可擴(kuò)展性,同時還要保證硬件蓄坏、應(yīng)用服務(wù)器以及數(shù)據(jù)庫服務(wù)器的健康運(yùn)行价捧。
近日,來自 Zephyr 的 CTO Shailesh Mangal 撰文總結(jié)了各種監(jiān)控類型以及所需的工具涡戳。Zephyr 致力于為開發(fā)和QA 團(tuán)隊提供解決方案结蟋,幫助交付高質(zhì)量的軟件,他們所提供的企業(yè)級測試管理產(chǎn)品能夠與各種工具集成渔彰,實(shí)現(xiàn)測試的實(shí)時管理嵌屎。
在 Shailesh Mangal 的文章中,他總結(jié)了核心基礎(chǔ)設(shè)施監(jiān)控恍涂、應(yīng)用級別監(jiān)控宝惰、微服務(wù)監(jiān)控以及多租戶日志監(jiān)控的工具以及各自的指標(biāo),為我們進(jìn)行應(yīng)用的全方位監(jiān)控提供了指導(dǎo)再沧。
核心基礎(chǔ)設(shè)施監(jiān)控(Core Infrastructure Monitoring尼夺,CIM)
在目前的云基礎(chǔ)設(shè)施中,出現(xiàn)硬件故障是難以避免的炒瘸。核心基礎(chǔ)設(shè)施監(jiān)控會探測硬件瓶頸相關(guān)的早期跡象并捕獲硬件故障信號淤堵,在出現(xiàn)更大的問題之前對其進(jìn)行應(yīng)對∈惭啵基礎(chǔ)設(shè)施監(jiān)控的范圍包括機(jī)器的健康狀況、CPU 使用竞端、內(nèi)存消耗以及網(wǎng)絡(luò)帶寬屎即,基于這些監(jiān)控信息,能夠判斷基礎(chǔ)設(shè)施的當(dāng)前狀態(tài)事富,從而進(jìn)行必要的擴(kuò)展技俐。
有眾多的工具都能幫助我們獲取硬件的健康狀態(tài)。在大多數(shù)情況下统台,托管提供商(如 Amazon AWS 雕擂、 Heroku )的工具基本上就能滿足這種監(jiān)控的需要。
CIM 的指標(biāo)包括:
- CPU 的平均使用率
- CPU 峰值的持續(xù)時間
- 內(nèi)存的平均使用情況
- 帶寬的輸入輸出情況
應(yīng)用級別監(jiān)控(Application Level Monitoring贱勃,ALM)
應(yīng)用級別的監(jiān)控涉及到監(jiān)控各種服務(wù)器的狀態(tài)井赌,如數(shù)據(jù)庫服務(wù)器谤逼、應(yīng)用服務(wù)器、分析服務(wù)器以及 Hadoop 集群仇穗,而要監(jiān)控的參數(shù)則是與應(yīng)用或工具相關(guān)的流部。
應(yīng)用監(jiān)控方面有不少偉大的工具,如 Datadog 和 New Relic 纹坐。
應(yīng)用監(jiān)控的指標(biāo)包括:
- JVM 進(jìn)程的內(nèi)存
- 內(nèi)部線程的數(shù)量
- 磁盤 IO
- 索引的讀取 / 寫入操作
微服務(wù)監(jiān)控(Micro Service Monitoring枝冀,MSM)
微服務(wù)是現(xiàn)代云架構(gòu)的組成部分,是實(shí)現(xiàn)水平擴(kuò)展的關(guān)鍵耘子。不管你運(yùn)行的是傳統(tǒng)的單塊系統(tǒng)還是設(shè)計良好且組織精密的微服務(wù)果漾,這些系統(tǒng)都會有不同的 API 端點(diǎn),遵循不同的協(xié)議谷誓,滿足不同的 SLA 需求绒障。微服務(wù)監(jiān)控就是要監(jiān)控每個服務(wù)的吞吐量和性能,進(jìn)而確保在任何時間都能滿足 SLA 的需求片林。這種類型的監(jiān)控一般都需要對應(yīng)用進(jìn)行 instrument 操作端盆,讓 instrumentation 是可配置的,通過收集器(collector)收集應(yīng)用的狀態(tài)费封,并階段性地將這些狀態(tài)發(fā)送到永久存儲焕妙、分析器和預(yù)警系統(tǒng)中。此類監(jiān)控往往會產(chǎn)生大量的數(shù)據(jù)弓摘,因此有可能會影響到性能焚鹊,因此需要仔細(xì)設(shè)計。
微服務(wù)監(jiān)控的工具方面韧献,存儲引擎可以選擇 GraphiteDB 或 InfluxDB 末患,可視化工具可以選擇 Kibana 或 Grafana 。
微服務(wù)監(jiān)控的指標(biāo)包括:
- 請求所需的最大時間
- 請求所需的平均時間
- 每分鐘請求的平均速度
- 每天峰值的請求速度
多租戶日志監(jiān)控(Multitenant Log Monitoring锤窑,MLM)
對于多租戶部署的系統(tǒng)來講璧针,很大的一個挑戰(zhàn)就是監(jiān)控日志并推斷系統(tǒng)的內(nèi)部情況,或者當(dāng)出現(xiàn)問題時識別出根本的原因渊啰。無數(shù)的客戶端會產(chǎn)生大量的日志探橱,因此對于日志隔離來說,有唯一的標(biāo)識(如 tenantId)是第一步绘证。除此之外隧膏,日志還需要根據(jù)請求分組,如果請求要跨多個服務(wù)時嚷那,這一點(diǎn)尤為重要胞枕,每個服務(wù)都產(chǎn)生一些日志信息將會有助于識別問題。
多租戶日志監(jiān)控中有非常經(jīng)典的工具魏宽,也就是 ELK( Elasticsearch , Logstash , Kibana )技術(shù)棧腐泻。
多租戶日志監(jiān)控的指標(biāo)包括:
- 每個租戶的日志
- 每個請求的日志
- 每天總的錯誤數(shù)量
總而言之决乎,好的監(jiān)控要涉及到系統(tǒng)各個方面,從硬件贫悄、應(yīng)用再到服務(wù)瑞驱。如果需要構(gòu)建多租戶應(yīng)用的話,使用配置恰當(dāng)?shù)?ELK 技術(shù)棧也有助于快速診斷問題窄坦。
目前唤反,隨著云服務(wù)和移動應(yīng)用的發(fā)展,在國內(nèi)外APM(Application Performance Management)相關(guān)的服務(wù)得到了空前的關(guān)注鸭津,希望Shailesh Mangal 的這篇文章能夠幫助讀者對該領(lǐng)域有一個宏觀的了解和掌握彤侍。