在近日發(fā)表的一篇文章中,Cindy Sridharan概括介紹了可觀測(cè)性及其與原生云應(yīng)用程序監(jiān)控的關(guān)系。可觀測(cè)性是一種理念,包括監(jiān)控、日志聚合、指標(biāo)和分布式跟蹤,可以實(shí)時(shí)更深入地觀察系統(tǒng)。
Sridharan的文章基于她就同一個(gè)主題所做的Velocity演講。隨著微服務(wù)、云和容器化架構(gòu)的出現(xiàn),我們構(gòu)建系統(tǒng)的方式變了。在后一種情況下,應(yīng)用程序是分布式的,而且瞬息萬(wàn)變。底層的基礎(chǔ)設(shè)施和網(wǎng)絡(luò)服務(wù)愈加健壯,應(yīng)用程序?qū)有枰霞夹g(shù)的發(fā)展步伐。將來(lái),大多數(shù)的故障都將來(lái)自應(yīng)用程序?qū)踊蛘呤遣煌瑧?yīng)用程序之間的復(fù)雜交互。
這種復(fù)雜性增加了把系統(tǒng)狀態(tài)可視化的難度。雖然出現(xiàn)了新的工具,但尚處于發(fā)展階段。Sridharan探討了可觀測(cè)性的概念以及如何選擇恰當(dāng)?shù)墓ぞ叨床飕F(xiàn)如今的系統(tǒng)。
可觀測(cè)性是一個(gè)最近幾年開始在監(jiān)控社區(qū)流行的術(shù)語(yǔ),然而,它并不是一個(gè)新事物,而且似乎和它真正的意思有些出入。據(jù)Sridharan之前的文章,可以將可觀測(cè)性視為監(jiān)控的超集。Twitter工程團(tuán)隊(duì)的文章將可觀測(cè)性總結(jié)為監(jiān)控、預(yù)警/可視化、分布式系統(tǒng)跟蹤、日志聚合和分析。谷歌致力于簡(jiǎn)化工具,降低數(shù)據(jù)聚合成本,標(biāo)準(zhǔn)化整個(gè)棧的格式和框架,從而便于跟蹤。谷歌最上層的抽象是上下文傳播,他們針對(duì)每一種語(yǔ)言提供了一個(gè)庫(kù),或者使用該語(yǔ)言的內(nèi)置特性。上下文用于在整個(gè)棧中傳播被稱為標(biāo)簽的鍵-值對(duì),后續(xù)可以把它們用于過(guò)濾特定的請(qǐng)求。
預(yù)警和統(tǒng)一管理面板是監(jiān)控的組成部分。按照Sridharan的說(shuō)法,可觀測(cè)性是所有這些再加上(應(yīng)用程序)性能分析、調(diào)試和依賴分析。與監(jiān)控不同,可觀測(cè)性和數(shù)據(jù)挖掘有關(guān),是為了尋找問(wèn)題的答案,簡(jiǎn)化信息的訪問(wèn)。監(jiān)控和故障檢測(cè)有關(guān),有定義好的故障路徑。隨著故障模式的增加,確定真正的原因變得非常困難,這是由日益復(fù)雜的架構(gòu)所導(dǎo)致的。而后者已成常態(tài)。定義可觀測(cè)性有不同的方法。例如,白盒監(jiān)控是指,有一個(gè)數(shù)據(jù)源,可觀測(cè)性可以視為從數(shù)據(jù)中挖掘相關(guān)信息的能力。
日志、指標(biāo)和請(qǐng)求跟蹤是可觀測(cè)性的基礎(chǔ)。日志為數(shù)據(jù)(如指標(biāo))提供額外的上下文。不過(guò),日志對(duì)性能的影響也很大。相比之下,指標(biāo)的開銷是不變的,而且有利于預(yù)警。總而言之,日志和指標(biāo)可以為觀察單獨(dú)的系統(tǒng)提供方便,但是對(duì)于穿過(guò)多個(gè)系統(tǒng)的請(qǐng)求,很難提供其生命周期的信息。跟蹤提供了跟蹤在各個(gè)系統(tǒng)之間傳遞的請(qǐng)求的能力。后者很難實(shí)施,一個(gè)原因是應(yīng)用程序使用的第三方庫(kù)也需要檢測(cè)。抽樣被用于減少跟蹤的開銷和存儲(chǔ)成本。這里的抽樣是指減少收集的信息的數(shù)量。其中,磁盤配額及動(dòng)態(tài)調(diào)整日志生成速度就是日志記錄的一些最佳實(shí)踐。
關(guān)于跟蹤技術(shù)的發(fā)展近況。谷歌發(fā)布了Dapper論文,Open Zipkin是以此為基礎(chǔ)的開源實(shí)現(xiàn),并導(dǎo)致了OpenTracing標(biāo)準(zhǔn)的產(chǎn)生。如果應(yīng)用程序使用了類似Envoy項(xiàng)目這樣的網(wǎng)格技術(shù),跟蹤就簡(jiǎn)單些。服務(wù)網(wǎng)格是一個(gè)位于TCP/IP層之上的網(wǎng)絡(luò)基礎(chǔ)設(shè)施層,可以處理可靠請(qǐng)求交付,有時(shí)候也實(shí)現(xiàn)為一系列網(wǎng)絡(luò)代理。它簡(jiǎn)化了動(dòng)態(tài)環(huán)境中的服務(wù)通信,如使用Kubernetes編排的容器集群。
在原生云環(huán)境中,軟件開發(fā)和交付可以從采用類似預(yù)生產(chǎn)測(cè)試、生產(chǎn)測(cè)試、有效監(jiān)控、原始數(shù)據(jù)(如指標(biāo)和日志事件)挖掘和動(dòng)態(tài)檢測(cè)這樣的實(shí)踐收益。
查看英文原文:Observability and the Monitoring of Cloud-Native Applications