應用性能監控方法一覽
在基于云的服務中,正常運行時間應該是最為重要的運維指標之一。服務如果頻繁地中斷,不僅會導致正常使用的中斷,還會對品牌帶來負面影響。 99.9%或99.99%已經算不上高水準的高可用性了,用戶期望的是100%的可用性。為了達到這一點,我們不僅需要遵循良好的設計模式并保持服務的可擴展性,同時還要保證硬件、應用服務器以及數據庫服務器的健康運行。
近日,來自 Zephyr 的CTO Shailesh Mangal 撰文 總結了各種監控類型以及所需的工具 。Zephyr致力于為開發和QA團隊提供解決方案,幫助交付高質量的軟件,他們所提供的企業級測試管理產品能夠與各種工具集成,實現測試的實時管理。
在Shailesh Mangal的文章中,他總結了核心基礎設施監控、應用級別監控、微服務監控以及多租戶日志監控的工具以及各自的指標,為我們進行應用的全方位監控提供了指導。
核心基礎設施監控(Core Infrastructure Monitoring,CIM)
在目前的云基礎設施中,出現硬件故障是難以避免的。核心基礎設施監控會探測硬件瓶頸相關的早期跡象并捕獲硬件故障信號,在出現更大的問題之前對其進行應對。基礎設施監控的范圍包括機器的健康狀況、CPU使用、內存消耗以及網絡帶寬,基于這些監控信息,能夠判斷基礎設施的當前狀態,從而進行必要的擴展。
有眾多的工具都能幫助我們獲取硬件的健康狀態。在大多數情況下,托管提供商(如 Amazon AWS 、 Heroku )的工具基本上就能滿足這種監控的需要。
CIM的指標包括:
- CPU的平均使用率
- CPU峰值的持續時間
- 內存的平均使用情況
- 帶寬的輸入輸出情況
應用級別監控(Application Level Monitoring,ALM)
應用級別的監控涉及到監控各種服務器的狀態,如數據庫服務器、應用服務器、分析服務器以及Hadoop集群,而要監控的參數則是與應用或工具相關的。
應用監控方面有不少偉大的工具,如 Datadog 和 New Relic 。
應用監控的指標包括:
- JVM進程的內存
- 內部線程的數量
- 磁盤IO
- 索引的讀取/寫入操作
微服務監控(Micro Service Monitoring,MSM)
微服務是現代云架構的組成部分,是實現水平擴展的關鍵。不管你運行的是傳統的單塊系統還是設計良好且組織精密的微服務,這些系統都會有不同的 API端點,遵循不同的協議,滿足不同的SLA需求。微服務監控就是要監控每個服務的吞吐量和性能,進而確保在任何時間都能滿足SLA的需求。這種類型的監控一般都需要對應用進行instrument操作,讓instrumentation是可配置的,通過收集器(collector)收集應用的狀態,并階段性地將這些狀態發送到永久存儲、分析器和預警系統中。此類監控往往會產生大量的數據,因此有可能會影響到性能,因此需要仔細設計。
微服務監控的工具方面,存儲引擎可以選擇 GraphiteDB 或 InfluxDB ,可視化工具可以選擇 Kibana 或 Grafana 。
微服務監控的指標包括:
- 請求所需的最大時間
- 請求所需的平均時間
- 每分鐘請求的平均速度
- 每天峰值的請求速度
多租戶日志監控(Multitenant Log Monitoring,MLM)
對于多租戶部署的系統來講,很大的一個挑戰就是監控日志并推斷系統的內部情況,或者當出現問題時識別出根本的原因。無數的客戶端會產生大量的日志,因此對于日志隔離來說,有唯一的標識(如tenantId)是第一步。除此之外,日志還需要根據請求分組,如果請求要跨多個服務時,這一點尤為重要,每個服務都產生一些日志信息將會有助于識別問題。
多租戶日志監控中有非常經典的工具,也就是ELK( Elasticsearch , Logstash , Kibana )技術棧。
多租戶日志監控的指標包括:
- 每個租戶的日志
- 每個請求的日志
- 每天總的錯誤數量
總而言之,好的監控要涉及到系統各個方面,從硬件、應用再到服務。如果需要構建多租戶應用的話,使用配置恰當的ELK技術棧也有助于快速診斷問題。
目前,隨著云服務和移動應用的發展,在國內外APM(Application Performance Management)相關的服務得到了空前的關注,希望Shailesh Mangal的這篇文章能夠幫助讀者對該領域有一個宏觀的了解和掌握。