可观测性与原生云监控
在近日發表的一篇文章中,Cindy Sridharan概括介紹了可觀測性及其與原生云應用程序監控的關系。可觀測性是一種理念,包括監控、日志聚合、指標和分布式跟蹤,可以實時更深入地觀察系統。
Sridharan的文章基于她就同一個主題所做的Velocity演講。隨著微服務、云和容器化架構的出現,我們構建系統的方式變了。在后一種情況下,應用程序是分布式的,而且瞬息萬變。底層的基礎設施和網絡服務愈加健壯,應用程序層需要跟上技術的發展步伐。將來,大多數的故障都將來自應用程序層或者是不同應用程序之間的復雜交互。
這種復雜性增加了把系統狀態可視化的難度。雖然出現了新的工具,但尚處于發展階段。Sridharan探討了可觀測性的概念以及如何選擇恰當的工具洞察現如今的系統。
可觀測性是一個最近幾年開始在監控社區流行的術語,然而,它并不是一個新事物,而且似乎和它真正的意思有些出入。據Sridharan之前的文章,可以將可觀測性視為監控的超集。Twitter工程團隊的文章將可觀測性總結為監控、預警/可視化、分布式系統跟蹤、日志聚合和分析。谷歌致力于簡化工具,降低數據聚合成本,標準化整個棧的格式和框架,從而便于跟蹤。谷歌最上層的抽象是上下文傳播,他們針對每一種語言提供了一個庫,或者使用該語言的內置特性。上下文用于在整個棧中傳播被稱為標簽的鍵-值對,后續可以把它們用于過濾特定的請求。
預警和統一管理面板是監控的組成部分。按照Sridharan的說法,可觀測性是所有這些再加上(應用程序)性能分析、調試和依賴分析。與監控不同,可觀測性和數據挖掘有關,是為了尋找問題的答案,簡化信息的訪問。監控和故障檢測有關,有定義好的故障路徑。隨著故障模式的增加,確定真正的原因變得非常困難,這是由日益復雜的架構所導致的。而后者已成常態。定義可觀測性有不同的方法。例如,白盒監控是指,有一個數據源,可觀測性可以視為從數據中挖掘相關信息的能力。
日志、指標和請求跟蹤是可觀測性的基礎。日志為數據(如指標)提供額外的上下文。不過,日志對性能的影響也很大。相比之下,指標的開銷是不變的,而且有利于預警。總而言之,日志和指標可以為觀察單獨的系統提供方便,但是對于穿過多個系統的請求,很難提供其生命周期的信息。跟蹤提供了跟蹤在各個系統之間傳遞的請求的能力。后者很難實施,一個原因是應用程序使用的第三方庫也需要檢測。抽樣被用于減少跟蹤的開銷和存儲成本。這里的抽樣是指減少收集的信息的數量。其中,磁盤配額及動態調整日志生成速度就是日志記錄的一些最佳實踐。
關于跟蹤技術的發展近況。谷歌發布了Dapper論文,Open Zipkin是以此為基礎的開源實現,并導致了OpenTracing標準的產生。如果應用程序使用了類似Envoy項目這樣的網格技術,跟蹤就簡單些。服務網格是一個位于TCP/IP層之上的網絡基礎設施層,可以處理可靠請求交付,有時候也實現為一系列網絡代理。它簡化了動態環境中的服務通信,如使用Kubernetes編排的容器集群。
在原生云環境中,軟件開發和交付可以從采用類似預生產測試、生產測試、有效監控、原始數據(如指標和日志事件)挖掘和動態檢測這樣的實踐收益。
原文:http://www.infoq.com/cn/news/2017/11/observability-monitoring
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的可观测性与原生云监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core 认证与授权[7
- 下一篇: 使用Microsoft.AspNetCo