一文讀懂可觀測(cè)性與Opentelemetry
作者:博睿數(shù)據(jù)產(chǎn)品經(jīng)理-劉亞輝
本文分兩部分,共3400字,閱讀大約5分鐘
l 介紹可觀測(cè)性
l 介紹Opentelemetry的核心概念
重新認(rèn)識(shí)可觀測(cè)性
管理學(xué)大師彼得德魯克有一句話:“如果你無法衡量它,你就無法管理它”。在企業(yè)中,無論是管理人,還是管理事,抑或是管理系統(tǒng),首先都需要衡量。衡量的過程其實(shí)是搜集信息的過程,有了足夠的信息才能做出正確的判斷,有了正確的判斷才能做出有效的管理和行動(dòng)方案。
下面我用一個(gè)簡(jiǎn)單模型來說明我對(duì)可觀測(cè)性的理解:
圖釋:通過觀測(cè)看到表象,通過判斷定位問題,通過優(yōu)化解決問題。
可觀測(cè)性描述的就是“觀測(cè)-判斷-優(yōu)化-再觀測(cè)”這個(gè)閉環(huán)的連續(xù)性、高效性。如果只有觀測(cè)而無法基于觀測(cè)做出判斷,則不能稱其具備可觀測(cè)性。如果只有經(jīng)驗(yàn)判斷而沒有數(shù)據(jù)支撐,也不能稱其具備可觀測(cè)性,這樣會(huì)導(dǎo)致組織高度依賴個(gè)人能力會(huì)帶來管理風(fēng)險(xiǎn)。如果優(yōu)化之后無法反饋到觀測(cè)上,或者因優(yōu)化引入新的技術(shù)而導(dǎo)致無法觀測(cè),則其可觀測(cè)性不可持續(xù)。如果在觀測(cè)、判斷、優(yōu)化的閉環(huán)中需要付出很高的成本和承擔(dān)很大風(fēng)險(xiǎn),則其可觀測(cè)性的價(jià)值為負(fù)。
所以,當(dāng)我們?cè)谡効捎^測(cè)性的時(shí)候,其實(shí)更多考慮的是觀測(cè)者、管理者的感受,也就是說在我們遇到問題的時(shí)候,能否輕而易舉地在觀測(cè)平臺(tái)找到答案,沒有阻力也沒有困惑,這就是可觀測(cè)性。隨著企業(yè)的發(fā)展,組織架構(gòu)(角色、觀測(cè)者)和管理對(duì)象(系統(tǒng)、被觀測(cè)者)都會(huì)隨之發(fā)展變化,當(dāng)使用了一堆傳統(tǒng)的觀測(cè)工具,卻仍然無法滿足觀測(cè)者、管理者新的需求的時(shí)候,我們不禁要問:“可觀測(cè)性何在?”。
“可觀測(cè)”不等于“可觀測(cè)性”
下面,我們來看一下我們習(xí)以為常的觀測(cè)方式。
圖釋:傳統(tǒng)的觀測(cè)工具是垂直的,觀測(cè)者需要從多個(gè)工具中進(jìn)行問題判斷。
通常我們會(huì)基于自己想要的數(shù)據(jù)去搭建觀測(cè)工具。當(dāng)我們想了解掌握基礎(chǔ)設(shè)施的健康狀況的時(shí)候,我們會(huì)很自然的想到搭建一個(gè)儀表盤,實(shí)時(shí)監(jiān)測(cè)各項(xiàng)指標(biāo)。當(dāng)我們想了解業(yè)務(wù)是如何出問題的,我們會(huì)很自然的想到搭建一個(gè)日志平臺(tái),隨時(shí)過濾排查業(yè)務(wù)日志。當(dāng)我們想了解事務(wù)為什么高延遲,我們會(huì)很自然的想到搭建一個(gè)鏈路監(jiān)測(cè)平臺(tái),查詢拓?fù)湟蕾嚭透鞴?jié)點(diǎn)的響應(yīng)時(shí)間。這種模式很好,幫助我們解決了很多問題,以至于我們從不懷疑可觀測(cè)性,我們信心滿滿。偶爾遇到大難題,把我們的儀表盤、日志平臺(tái)、鏈路平臺(tái)打開,所有的數(shù)據(jù)都在這里,我們堅(jiān)信一定能到找問題的根因。即使花費(fèi)了很長(zhǎng)時(shí)間,我們也只是告訴自己要多學(xué)習(xí),多了解掌握自己負(fù)責(zé)的系統(tǒng),下一次我一定能更快找到根因。是的,當(dāng)我們想要的數(shù)據(jù)都擺在面前的時(shí)候,我們還有什么理由怪罪觀測(cè)工具。

圖釋:人腦像一把尺子,根據(jù)經(jīng)驗(yàn)比對(duì)多個(gè)指標(biāo)來發(fā)現(xiàn)它們的相關(guān)性。

圖釋:當(dāng)發(fā)現(xiàn)指標(biāo)有毛刺的時(shí)候,往往需要在大腦中構(gòu)建復(fù)雜的日志查詢條件,費(fèi)時(shí)不說還容易出錯(cuò)。
我們會(huì)不辭勞苦地在各種指標(biāo)數(shù)據(jù)中尋找可能的關(guān)聯(lián)性,得到關(guān)鍵線索后,我們會(huì)在大腦中構(gòu)造出一堆復(fù)雜的日志查詢條件來驗(yàn)證自己的猜想。就這樣比對(duì)、猜想、驗(yàn)證,同時(shí)還要在各種工具中切換,不可否認(rèn)很充實(shí)。
圖釋:系統(tǒng)規(guī)模龐大的時(shí)候,人已經(jīng)無法去定位問題了。
傳統(tǒng)的系統(tǒng)相對(duì)簡(jiǎn)單,上述方式行之有效。現(xiàn)代IT系統(tǒng)的關(guān)鍵詞是分布式、池化、大數(shù)據(jù)、零信任、彈性、容錯(cuò)、云原生等,越來越龐大,越來越精細(xì),越來越動(dòng)態(tài),同時(shí)也越來越復(fù)雜。通過人去尋找各種信息的關(guān)聯(lián)性,再根據(jù)經(jīng)驗(yàn)判斷和優(yōu)化,顯然是不可行的,耗時(shí)耗力還無法找到問題根因。
傳統(tǒng)的工具是垂直向的,引入一個(gè)新的組件的同時(shí)也會(huì)引入一個(gè)與之對(duì)應(yīng)的觀測(cè)工具,這樣是保證了數(shù)據(jù)的全面性,但丟失了數(shù)據(jù)的關(guān)聯(lián)性和分析排查的連貫性(換句話說,我們方方面面都監(jiān)控到了,但遇到問題,還是不能很好地發(fā)現(xiàn)和定位)。此時(shí)我們很自然的想到做一個(gè)統(tǒng)一的數(shù)據(jù)平臺(tái),想象中把所有數(shù)據(jù)放在一個(gè)平臺(tái)就能解決關(guān)聯(lián)性的問題,但往往實(shí)際情況是我們只是把數(shù)據(jù)堆在一個(gè)地方,用的時(shí)候還是按傳統(tǒng)的方式各看各的。我們只是把無數(shù)根柱子(工具),融合成了三根柱子:一個(gè)觀測(cè)指標(biāo)、日志、鏈路的統(tǒng)一平臺(tái),數(shù)據(jù)統(tǒng)一了,但關(guān)聯(lián)性還得靠人的知識(shí)和經(jīng)驗(yàn)。
這里邊最關(guān)鍵的其實(shí)是解決數(shù)據(jù)關(guān)聯(lián)的問題,把之前需要人去比對(duì)、過濾的事交給程序去處理,程序最擅長(zhǎng)此類事同時(shí)也最可靠,人的時(shí)間更多的用在判斷和決策上。這在復(fù)雜系統(tǒng)中,節(jié)省的時(shí)間會(huì)被放大很多倍,就這點(diǎn)小事就是可觀測(cè)性看得見的未來。
圖釋:未來觀測(cè)工具需要通過時(shí)間和上下文來關(guān)聯(lián)數(shù)據(jù)
那么,如何做數(shù)據(jù)關(guān)聯(lián)呢?說起來很容易,那就是做時(shí)間+空間的關(guān)聯(lián)。在我們的統(tǒng)一數(shù)據(jù)平臺(tái)上,由于數(shù)據(jù)是來自于各種觀測(cè)工具的,雖然我們?cè)跀?shù)據(jù)格式上統(tǒng)一成了metric、log、trace,但不同工具的metric、log、trace的元數(shù)據(jù)截然不同,而如果我們?cè)谶@個(gè)統(tǒng)一數(shù)據(jù)平臺(tái)上去梳理和映射這些元數(shù)據(jù)的話,這將是龐雜、難維護(hù)、不可持續(xù)的。那該如何做呢?答案就是標(biāo)準(zhǔn)化。只有將標(biāo)準(zhǔn)化、結(jié)構(gòu)化的數(shù)據(jù)喂給觀測(cè)平臺(tái),觀測(cè)平臺(tái)才能從中發(fā)現(xiàn)巨大價(jià)值。統(tǒng)一數(shù)據(jù)平臺(tái)只是在數(shù)據(jù)格式上進(jìn)行了標(biāo)準(zhǔn)化,而要想將trace、metric、log關(guān)聯(lián)還必須建立context的標(biāo)準(zhǔn)化,context就是數(shù)據(jù)的空間信息,再疊加上時(shí)間信息的關(guān)聯(lián)就可以發(fā)揮真正的觀測(cè)價(jià)值。
Opentelemetry做了什么?
Opentelemetry(以下簡(jiǎn)稱:OTel)就是解決數(shù)據(jù)標(biāo)準(zhǔn)化問題的一個(gè)項(xiàng)目,OTel由以下幾部分組成:
l 跨語言的標(biāo)準(zhǔn)規(guī)范(Specification):定義了數(shù)據(jù)、上下文、API、概念術(shù)語等的規(guī)范。這是OTel的核心,它使得所有觀測(cè)數(shù)據(jù)有機(jī)地統(tǒng)一起來,這樣觀測(cè)平臺(tái)才能自動(dòng)比對(duì)、自動(dòng)過濾,同時(shí)也為AI提供了高質(zhì)量的數(shù)據(jù)。
l 接收、處理、輸出觀測(cè)數(shù)據(jù)的工具(Collector):一個(gè)用于接收OTel觀測(cè)數(shù)據(jù)的工具,并支持通過配置pipeline對(duì)觀測(cè)數(shù)據(jù)進(jìn)行處理,輸出給指定的后端。
l 各種語言的SDK(SDK):基于OTel標(biāo)準(zhǔn)的API實(shí)現(xiàn)的各種語言的SDK,用來支持自定義開發(fā)觀測(cè)數(shù)據(jù)采集器。
l 采集器(Instrumentation):開箱即用的觀測(cè)數(shù)據(jù)采集器。
OTel是開源項(xiàng)目,所有內(nèi)容都可以在Github找到,下面我介紹幾個(gè)關(guān)鍵的概念:
屬性
從數(shù)據(jù)的角度看屬性是一個(gè)鍵值對(duì),本質(zhì)上屬性描述了空間信息,方便從空間上做數(shù)據(jù)關(guān)聯(lián)。OTel定義了很多通用的屬性,如果定義不明確或數(shù)據(jù)不一致時(shí),是沒法自動(dòng)關(guān)聯(lián)分析的。下面是Otel定義的K8S的Pod屬性:

資源
從數(shù)據(jù)的角度看資源是一個(gè)鍵值對(duì)集合,本質(zhì)上資源描述的是觀測(cè)對(duì)象。相同觀測(cè)對(duì)象的Metric、log、trace都有相同的資源數(shù)據(jù)(或稱:相同上下文),這樣就可以自動(dòng)發(fā)現(xiàn)相關(guān)性。
事件
從數(shù)據(jù)的角度看事件是一個(gè)時(shí)間戳和一組屬性組成的,用來描述某個(gè)時(shí)間發(fā)生了某件事。本質(zhì)上事件是一個(gè)時(shí)間+空間的組合。
指標(biāo)
從數(shù)據(jù)的角度看指標(biāo)是事件的聚合,在一個(gè)活躍的系統(tǒng)中,相同的事件會(huì)不斷發(fā)生,指標(biāo)提供了一個(gè)跨時(shí)間和空間的總覽。沉浸在細(xì)節(jié)不一定有見解,跳出來,從更高的維度鳥瞰可能尋找到靈感。
跨度
從數(shù)據(jù)的角度看跨度由:操作名稱、開始時(shí)間、持續(xù)時(shí)間、一組屬性組成??缍龋ㄓ址Q:span)描述的是一個(gè)過程,如果說事件是在一個(gè)時(shí)間點(diǎn)構(gòu)建了時(shí)間和空間的相關(guān)性,那么跨度就是在一個(gè)時(shí)間段上構(gòu)建了時(shí)間和空間的相關(guān)性。
信號(hào)
信號(hào)是對(duì)標(biāo)準(zhǔn)遙測(cè)數(shù)據(jù)的抽象,相同數(shù)據(jù)模型的數(shù)據(jù)被歸為一個(gè)信號(hào)。如:一個(gè)Metric是一個(gè)信號(hào),所有Metric都具有統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù)模型。一個(gè)Trace是一個(gè)信號(hào),所有Trace都具有統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù)模型。信號(hào)有一個(gè)重要的特性就是供應(yīng)商無關(guān),任何可觀測(cè)系統(tǒng)供應(yīng)商要支持OTel,都必須要按OTel的信號(hào)模型收集、上報(bào)、處理數(shù)據(jù),這是保障高效數(shù)據(jù)關(guān)聯(lián)的關(guān)鍵。
上下文
所有信號(hào)都基于相同的上下文,如:在同一個(gè)服務(wù)中采集的Metric、log、trace具有相同的上下文(如:service.id和service.name)。這其實(shí)就是在空間上建立的數(shù)據(jù)的關(guān)聯(lián)。
敬畏工程
OTel在數(shù)據(jù)層面提供了標(biāo)準(zhǔn)規(guī)范和許多拿來即用的工具,大大方便了構(gòu)建可觀測(cè)平臺(tái),但是真正落地去構(gòu)建適合自己的、全面可擴(kuò)展的、穩(wěn)定可靠的、低成本高效益的可觀測(cè)平臺(tái)是一個(gè)大工程,不是簡(jiǎn)單引入就可以的。這其中涉及到大數(shù)據(jù)引擎、高基數(shù)分析引擎、關(guān)系引擎、AI引擎等系統(tǒng)難題。此外,如何設(shè)計(jì)一個(gè)簡(jiǎn)單、高效、準(zhǔn)確、協(xié)同、專業(yè)的平臺(tái)也不是一撮而就的,需要懂?dāng)?shù)據(jù)也要懂技術(shù)還要懂設(shè)計(jì)。
我把可觀測(cè)平臺(tái)分以下層次:
1. 數(shù)據(jù)展示+人工關(guān)聯(lián)比對(duì)+人工判斷:大多數(shù)傳統(tǒng)觀測(cè)平臺(tái)在這一層。
2. 信息關(guān)聯(lián)展示+人工判斷:部分觀測(cè)平臺(tái)通過梳理映射可以做一些相關(guān)性展示,減少人工發(fā)現(xiàn)的時(shí)間成本。
3. 信息判斷 x 人工判斷:極少部分觀測(cè)平臺(tái)做了數(shù)據(jù)的高度標(biāo)準(zhǔn)化,可以根據(jù)相關(guān)性給出見解和建議。
4. 信息判斷+行動(dòng):沒有觀測(cè)工具能只依靠工具做判斷。
博睿在數(shù)據(jù)采集層有十多年的技術(shù)積累,探針穩(wěn)定可靠,部署簡(jiǎn)單。在數(shù)據(jù)處理方面也經(jīng)受住了大業(yè)務(wù)量的客戶考驗(yàn),技術(shù)上不斷創(chuàng)新形成了極具優(yōu)勢(shì)的架構(gòu)。在數(shù)據(jù)標(biāo)準(zhǔn)化、結(jié)構(gòu)化設(shè)計(jì)方面也形成了自己的體系??梢哉f我們剛跨越了第2層來到第3層,我們將從觀測(cè)廣度和深度兩個(gè)方面豐富標(biāo)準(zhǔn)化的數(shù)據(jù),基于此同時(shí)不斷深化數(shù)據(jù)相關(guān)性,加上我們自研的SwiftAI中臺(tái)賦能,未來將給出更多更精準(zhǔn)的信息判斷,幫助客戶快速落地高效可持續(xù)的觀測(cè)--判斷--優(yōu)化閉環(huán)。