圖釋:通過觀測看到表象,通過判斷定位問題,通過優(yōu)化解決問題。

可觀測性描述的就是“觀測-判斷-優(yōu)化-再觀測”這個閉環(huán)的連續(xù)性、高效性。如果只有觀測而無法基于觀測做出判斷,則不能稱其具備可觀測性。如果只有經(jīng)驗判斷而沒有數(shù)據(jù)支撐,也不能稱其具備可觀測性,這樣會導(dǎo)致組織高度依賴個人能力而帶來管理風(fēng)險。如果優(yōu)化之后無法反饋到觀測上,或者因優(yōu)化引入新的技術(shù)而導(dǎo)致無法觀測,則其可觀測性不可持續(xù)。如果在觀測、判斷、優(yōu)化的閉環(huán)中需要付出很高的成本和承擔(dān)很大風(fēng)險,則其可觀測性的價值為負。

所以,當(dāng)我們在談可觀測性的時候,其實更多考慮的是觀測者、管理者的感受,也就是說在我們遇到問題的時候,能否輕而易舉地在觀測平臺找到答案,沒有阻力也沒有困惑,這就是可觀測性。隨著企業(yè)的發(fā)展,組織架構(gòu)(角色、觀測者)和管理對象(系統(tǒng)、被觀測者)都會隨之發(fā)展變化,當(dāng)使用了一堆傳統(tǒng)的觀測工具,卻仍然無法滿足觀測者、管理者新的需求的時候,我們不禁要問:“可觀測性何在?”。

“可觀測”不等于“可觀測性”

下面,我們來看一下我們習(xí)以為常的觀測方式。

圖釋:傳統(tǒng)的觀測工具是垂直的,觀測者需要從多個工具中進行問題判斷。

通常我們會基于自己想要的數(shù)據(jù)去搭建觀測工具。當(dāng)我們想了解掌握基礎(chǔ)設(shè)施的健康狀況的時候,我們會很自然的想到搭建一個儀表盤,實時監(jiān)測各項指標(biāo)。當(dāng)我們想了解業(yè)務(wù)是如何出問題的,我們會很自然的想到搭建一個日志平臺,隨時過濾排查業(yè)務(wù)日志。當(dāng)我們想了解事務(wù)為什么高延遲,我們會很自然的想到搭建一個鏈路監(jiān)測平臺,查詢拓撲依賴和各節(jié)點的響應(yīng)時間。這種模式很好,幫助我們解決了很多問題,以至于我們從不懷疑可觀測性,我們信心滿滿。偶爾遇到大難題,把我們的儀表盤、日志平臺、鏈路平臺打開,所有的數(shù)據(jù)都在這里,我們堅信一定能找到問題的根因。即使花費了很長時間,我們也只是告訴自己要多學(xué)習(xí),多了解掌握自己負責(zé)的系統(tǒng),下一次我一定能更快找到根因。是的,當(dāng)我們想要的數(shù)據(jù)都擺在面前的時候,我們還有什么理由怪罪觀測工具。

圖釋:人腦像一把尺子,根據(jù)經(jīng)驗比對多個指標(biāo)來發(fā)現(xiàn)它們的相關(guān)性。
圖釋:當(dāng)發(fā)現(xiàn)指標(biāo)有毛刺的時候,往往需要在大腦中構(gòu)建復(fù)雜的日志查詢條件,費時不說還容易出錯。

我們會不辭勞苦地在各種指標(biāo)數(shù)據(jù)中尋找可能的關(guān)聯(lián)性,得到關(guān)鍵線索后,我們會在大腦中構(gòu)造出一堆復(fù)雜的日志查詢條件來驗證自己的猜想。就這樣比對、猜想、驗證,同時還要在各種工具中切換,不可否認很充實。

圖釋:系統(tǒng)規(guī)模龐大的時候,人已經(jīng)無法去定位問題了。

傳統(tǒng)的系統(tǒng)相對簡單,上述方式行之有效?,F(xiàn)代IT系統(tǒng)的關(guān)鍵詞是分布式、池化、大數(shù)據(jù)、零信任、彈性、容錯、云原生等,越來越龐大,越來越精細,越來越動態(tài),同時也越來越復(fù)雜。通過人去尋找各種信息的關(guān)聯(lián)性,再根據(jù)經(jīng)驗判斷和優(yōu)化,顯然是不可行的,耗時耗力還無法找到問題根因。

傳統(tǒng)的工具是垂直向的,引入一個新的組件的同時也會引入一個與之對應(yīng)的觀測工具,這樣是保證了數(shù)據(jù)的全面性,但丟失了數(shù)據(jù)的關(guān)聯(lián)性和分析排查的連貫性(換句話說,我們方方面面都監(jiān)控到了,但遇到問題,還是不能很好地發(fā)現(xiàn)和定位)。此時我們很自然的想到做一個統(tǒng)一的數(shù)據(jù)平臺,想象中把所有數(shù)據(jù)放在一個平臺就能解決關(guān)聯(lián)性的問題,但往往實際情況是我們只是把數(shù)據(jù)堆在一個地方,用的時候還是按傳統(tǒng)的方式各看各的。我們只是把無數(shù)根柱子(工具),融合成了三根柱子:一個觀測指標(biāo)、日志、鏈路的統(tǒng)一平臺,數(shù)據(jù)統(tǒng)一了,但關(guān)聯(lián)性還得靠人的知識和經(jīng)驗。

這里邊最關(guān)鍵的其實是解決數(shù)據(jù)關(guān)聯(lián)的問題,把之前需要人去比對、過濾的事交給程序去處理,程序最擅長此類事同時也最可靠,人的時間更多的用在判斷和決策上。這在復(fù)雜系統(tǒng)中,節(jié)省的時間會被放大很多倍,就這點小事就是可觀測性看得見的未來。

圖釋:未來觀測工具需要通過時間和上下文來關(guān)聯(lián)數(shù)據(jù)

那么,如何做數(shù)據(jù)關(guān)聯(lián)呢?說起來很容易,那就是做時間+空間的關(guān)聯(lián)。在我們的統(tǒng)一數(shù)據(jù)平臺上,由于數(shù)據(jù)是來自于各種觀測工具的,雖然我們在數(shù)據(jù)格式上統(tǒng)一成了metric、log、trace,但不同工具的metric、log、trace的元數(shù)據(jù)截然不同,而如果我們在這個統(tǒng)一數(shù)據(jù)平臺上去梳理和映射這些元數(shù)據(jù)的話,這將是龐雜、難維護、不可持續(xù)的。那該如何做呢?答案就是標(biāo)準(zhǔn)化。只有將標(biāo)準(zhǔn)化、結(jié)構(gòu)化的數(shù)據(jù)喂給觀測平臺,觀測平臺才能從中發(fā)現(xiàn)巨大價值。統(tǒng)一數(shù)據(jù)平臺只是在數(shù)據(jù)格式上進行了標(biāo)準(zhǔn)化,而要想將trace、metric、log關(guān)聯(lián)還必須建立context的標(biāo)準(zhǔn)化,context就是數(shù)據(jù)的空間信息,再疊加上時間信息的關(guān)聯(lián)就可以發(fā)揮真正的觀測價值。

Opentelemetry做了什么?

Opentelemetry(以下簡稱:OTel)就是解決數(shù)據(jù)標(biāo)準(zhǔn)化問題的一個項目,OTel由以下幾部分組成:

OTel是開源項目,所有內(nèi)容都可以在Github找到,下面我介紹幾個關(guān)鍵的概念:

屬性

從數(shù)據(jù)的角度看屬性是一個鍵值對,本質(zhì)上屬性描述了空間信息,方便從空間上做數(shù)據(jù)關(guān)聯(lián)。OTel定義了很多通用的屬性,如果定義不明確或數(shù)據(jù)不一致時,是沒法自動關(guān)聯(lián)分析的。下面是Otel定義的K8S的Pod屬性:

資源

從數(shù)據(jù)的角度看資源是一個鍵值對集合,本質(zhì)上資源描述的是觀測對象。相同觀測對象的Metric、log、trace都有相同的資源數(shù)據(jù)(或稱:相同上下文),這樣就可以自動發(fā)現(xiàn)相關(guān)性。

事件

從數(shù)據(jù)的角度看事件是一個時間戳和一組屬性組成的,用來描述某個時間發(fā)生了某件事。本質(zhì)上事件是一個時間+空間的組合。

指標(biāo)

從數(shù)據(jù)的角度看指標(biāo)是事件的聚合,在一個活躍的系統(tǒng)中,相同的事件會不斷發(fā)生,指標(biāo)提供了一個跨時間和空間的總覽。沉浸在細節(jié)不一定有見解,跳出來,從更高的維度鳥瞰可能尋找到靈感。

跨度

從數(shù)據(jù)的角度看跨度由:操作名稱、開始時間、持續(xù)時間、一組屬性組成。跨度(又稱:span)描述的是一個過程,如果說事件是在一個時間點構(gòu)建了時間和空間的相關(guān)性,那么跨度就是在一個時間段上構(gòu)建了時間和空間的相關(guān)性。

信號

信號是對標(biāo)準(zhǔn)遙測數(shù)據(jù)的抽象,相同數(shù)據(jù)模型的數(shù)據(jù)被歸為一個信號。如:一個Metric是一個信號,所有Metric都具有統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù)模型。一個Trace是一個信號,所有Trace都具有統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù)模型。信號有一個重要的特性就是供應(yīng)商無關(guān),任何可觀測系統(tǒng)供應(yīng)商要支持OTel,都必須要按OTel的信號模型收集、上報、處理數(shù)據(jù),這是保障高效數(shù)據(jù)關(guān)聯(lián)的關(guān)鍵。

上下文

所有信號都基于相同的上下文,如:在同一個服務(wù)中采集的Metric、log、trace具有相同的上下文(如:service.id和service.name)。這其實就是在空間上建立的數(shù)據(jù)的關(guān)聯(lián)。

敬畏工程

OTel在數(shù)據(jù)層面提供了標(biāo)準(zhǔn)規(guī)范和許多拿來即用的工具,大大方便了構(gòu)建可觀測平臺,但是真正落地去構(gòu)建適合自己的、全面可擴展的、穩(wěn)定可靠的、低成本高效益的可觀測平臺是一個大工程,不是簡單引入就可以的。這其中涉及到大數(shù)據(jù)引擎、高基數(shù)分析引擎、關(guān)系引擎、AI引擎等系統(tǒng)難題。此外,如何設(shè)計一個簡單、高效、準(zhǔn)確、協(xié)同、專業(yè)的平臺也不是一蹴而就的,需要懂?dāng)?shù)據(jù)也要懂技術(shù)還要懂設(shè)計。

我把可觀測平臺分以下層次:

  1. 數(shù)據(jù)展示+人工關(guān)聯(lián)比對+人工判斷:大多數(shù)傳統(tǒng)觀測平臺在這一層。
  2. 信息關(guān)聯(lián)展示+人工判斷:部分觀測平臺通過梳理映射可以做一些相關(guān)性展示,減少人工發(fā)現(xiàn)的時間成本。
  3. 信息判斷 x 人工判斷:極少部分觀測平臺做了數(shù)據(jù)的高度標(biāo)準(zhǔn)化,可以根據(jù)相關(guān)性給出見解和建議。
  4. 信息判斷+行動:沒有觀測工具能只依靠工具做判斷

博睿數(shù)據(jù)在數(shù)據(jù)采集層有十多年的技術(shù)積累,探針穩(wěn)定可靠,部署簡單。在數(shù)據(jù)處理方面也經(jīng)受住了大業(yè)務(wù)量的客戶考驗,技術(shù)上不斷創(chuàng)新形成了極具優(yōu)勢的架構(gòu)。在數(shù)據(jù)標(biāo)準(zhǔn)化、結(jié)構(gòu)化設(shè)計方面也形成了自己的體系??梢哉f我們剛跨越了第2層來到第3層,我們將從觀測廣度和深度兩個方面豐富標(biāo)準(zhǔn)化的數(shù)據(jù),基于此同時不斷深化數(shù)據(jù)相關(guān)性,加上我們自研的SwiftAI中臺賦能,未來將給出更多更精準(zhǔn)的信息判斷,幫助客戶快速落地高效可持續(xù)的觀測–判斷–優(yōu)化閉環(huán)。

分享到

zhupb

相關(guān)推薦