可觀察性:使用度量、日志和跟蹤

監(jiān)控軟件系統(tǒng)的概念并不新穎??捎^察性的概念最早出現(xiàn)在1960年,但隨著軟件系統(tǒng)需要超越傳統(tǒng)監(jiān)控提供更深的洞察,它在最近才站穩(wěn)腳跟。傳統(tǒng)的監(jiān)控側(cè)重于軟件系統(tǒng)的各個領(lǐng)域。

本文來自微信公眾號“開源云中文社區(qū)”。

容錯、無單點故障和冗余是現(xiàn)代軟件系統(tǒng)中突出的設(shè)計原則。但這并不意味著錯誤、降級、錯誤甚至偶爾的災(zāi)難都不會發(fā)生。分布式系統(tǒng)架構(gòu)的復(fù)雜性使事件的浮出水面更像是一個謎,而不僅僅是在屏幕上尋找一個紅點。

監(jiān)控軟件系統(tǒng)的概念并不新穎??捎^察性的概念最早出現(xiàn)在1960年,但隨著軟件系統(tǒng)需要超越傳統(tǒng)監(jiān)控提供更深的洞察,它在最近才站穩(wěn)腳跟。傳統(tǒng)的監(jiān)控側(cè)重于軟件系統(tǒng)的各個領(lǐng)域。這種類型的監(jiān)控可以識別系統(tǒng)的一個部分(如網(wǎng)絡(luò)、數(shù)據(jù)庫或服務(wù)器)中的問題,但不能跟蹤請求生命周期或在系統(tǒng)的另一個部分發(fā)現(xiàn)問題。相反,可觀察性的概念圍繞著從系統(tǒng)的所有部分收集數(shù)據(jù),以提供整個軟件的統(tǒng)一視圖。

可觀察性的三大支柱

度量

度量描繪了軟件系統(tǒng)的全貌。它們監(jiān)測基線性能,在異常發(fā)生時精確定位,并確定趨勢。度量并非一刀切。誰在收集度量,誰就決定要收集哪些度量。許多企業(yè)或開發(fā)人員收集的流行度量是CPU利用率、網(wǎng)絡(luò)流量、延遲或用戶注冊。

度量集中在系統(tǒng)的一個領(lǐng)域,這使得很難在分布式系統(tǒng)中跟蹤問題。最佳實踐建議定期收集數(shù)據(jù),并使用數(shù)值存儲度量。

日志

日志就是記錄。它們與度量的區(qū)別在于,它們記錄事件,但與度量類似,這些事件是業(yè)務(wù)或軟件認為重要的任何事情。這包括從一般信息到超過特定閾值的任何事件,再到警告和錯誤的任何內(nèi)容。由日志創(chuàng)建的歷史記錄可以深入了解軟件環(huán)境中的問題。當錯誤發(fā)生時,日志會顯示錯誤發(fā)生的時間以及與之相關(guān)的事件。

日志在有益與有害之間有著微妙的平衡。日志數(shù)據(jù)是一個微妙的主題。提供數(shù)據(jù)是日志存在的原因,但它不能只是任何數(shù)據(jù)。過多的數(shù)據(jù)可能會使系統(tǒng)不堪重負,并導(dǎo)致更高的延遲。日志無權(quán)泄露敏感或私人數(shù)據(jù)。然后是存儲。日志的使用壽命很短。它們的效用隨著年齡的增長而減弱。將日志存儲足夠長的時間以滿足其使用壽命,并相應(yīng)地收回或歸檔以減少存儲開銷,這樣它們就不會淹沒數(shù)據(jù)庫。

跟蹤

跟蹤跟蹤請求在分布式或微服務(wù)系統(tǒng)中移動時的端到端行為。分布式跟蹤中收集的數(shù)據(jù)為使用多個內(nèi)部微服務(wù)的請求帶來了更高的可見性。跟蹤可以深入了解請求在應(yīng)用程序中的特定點(如代理、中間件和緩存)的行為,以識別執(zhí)行流中的任何分支或跨系統(tǒng)邊界的網(wǎng)絡(luò)跳躍。

OpenTelemetry

OpenTelemetry(OTEL)是一個標準化的開源框架,由簡化遙測數(shù)據(jù)收集的工具、API和SDK組成。度量、日志和跟蹤屬于遙測數(shù)據(jù)的類別。通過消除供應(yīng)商鎖定并為所有人創(chuàng)建可用的工具,OTEL旨在推動可觀察性領(lǐng)域的創(chuàng)新。其結(jié)果是,開發(fā)人員在分析日志、度量和跟蹤時可以使用更廣泛的選項集。這使得在實現(xiàn)可觀察性最佳實踐時更易于使用。這是一個與云原生計算基金會(CNCF)一起孵化的項目,由OpenCensus和OpenTracing項目合并而成。開發(fā)者社區(qū)支持OTEL,一個豐富的社區(qū)圍繞著它而興起。

打破供應(yīng)商鎖定的限制,為軟件系統(tǒng)提供了大量用于存儲遙測數(shù)據(jù)的數(shù)據(jù)庫選項。在這些選項中,存儲遙測數(shù)據(jù)的一個好地方是專門構(gòu)建的時間序列數(shù)據(jù)庫。首先,可觀察性測量軟件系統(tǒng)隨時間的變化,時間序列數(shù)據(jù)庫存儲了跨時間范圍寫入和查詢的大量數(shù)據(jù)。與度量一樣,分析時間序列數(shù)據(jù)需要跨時間范圍查詢數(shù)據(jù)。這些查詢對于時間序列數(shù)據(jù)庫來說很容易執(zhí)行,而對于其他數(shù)據(jù)庫類型來說很難有效執(zhí)行。

InfluxDB 3.0與可觀察性

InfluxDB 3.0于4月推出,使與OTEL的合作比以往任何時候都更容易訪問。新的數(shù)據(jù)庫引擎是在ApacheArrow之上構(gòu)建的,與以前版本的InfluxDB相比,它帶來了許多性能改進。該數(shù)據(jù)庫現(xiàn)在支持不受限制的基數(shù)數(shù)據(jù)而不影響性能,這意味著對高基數(shù)數(shù)據(jù)的查詢速度提高了100倍。InfluxDB3.0實時獲取和查詢數(shù)據(jù),非常適合需要實時分析(如可觀測性)的應(yīng)用程序。實時分析還可以更快地識別異常。

InfluxDB3.0將度量、日志和跟蹤存儲在一個數(shù)據(jù)庫中。每一類數(shù)據(jù)都有獨特的工作負載,這留下了一些未回答的問題,例如:遵循什么模式?如何將跟蹤轉(zhuǎn)換為線路協(xié)議?InfluxDB如何與更大的可觀測性生態(tài)系統(tǒng)連接?

InfluxDB團隊有一個新的教程(OpenTelemetry Tutorial:Collect Traces,Logs&Metrics with InfluxDB 3.0,Jaeger&Grafana),其中包括一個完整的存儲庫和代碼演練,重點是如何收集跟蹤、日志和度量。技術(shù)堆棧是InfluxDB3.0、Jaeger和Grafana。

結(jié)論

軟件系統(tǒng)變得越來越復(fù)雜,但識別和解決瓶頸、漏洞和錯誤并不一定非得如此。傳統(tǒng)監(jiān)控中使用的度量是系統(tǒng)不同部分的數(shù)字記錄。日志記錄歷史事件。跟蹤提供了請求在整個系統(tǒng)中移動時的行為可見性。就像其他一切一樣,遙測數(shù)據(jù)只是數(shù)據(jù)。它的真正價值在于你用它做什么。

InfluxDB是專門為處理時間序列數(shù)據(jù)而構(gòu)建的,遙測數(shù)據(jù)是時間序列數(shù)據(jù)。OpenTelemetry的創(chuàng)建為開發(fā)人員如何處理可觀測性實踐打開了大門。使用OTEL和InfluxDB可以為遙測數(shù)據(jù)帶來實時分析、無限基數(shù)和快速查詢的功能。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論