本文來自微信公眾號“twt企業(yè)IT社區(qū)”,作者/鄭金輝。
一、什么是可觀測性
從去年下半年開始一直到現(xiàn)在,在IT運維領域有一個詞一直熱度不減,甚至一度超過了當初的AIOps,那就是“可觀測性”??捎^測性(Observability)本來是一個自動控制領域的一個術語,在控制論中,可觀測性是指系統(tǒng)可以由其外部輸出,來推斷其內(nèi)部狀態(tài)的程度,系統(tǒng)的可觀測性越強,我們對系統(tǒng)的可控制性就越強。2018年CNCF把這個概念引入了IT運維領域,稱其是云原生時代最重要的系統(tǒng)能力。這個觀點雖然跟CNCF的定位有關,但也絕不是危言聳聽,至少可觀測性是2022年最熱的IT話題之一。
可觀測性的核心是什么,其實就是度量,度量你的從基礎設施、平臺、應用、數(shù)據(jù)和業(yè)務,了解他們是如何運行的,系統(tǒng)狀態(tài)從黑盒專向白盒。
二、為何需要可觀測性
管理學大師彼得德魯克曾經(jīng)說過“你如果無法度量它,就無法管理它”(“If you can’t measure it,you can’t manage it”)。要想有效管理,就難以繞開度量的問題。
IT也是一樣,近些年IT架構和技術棧發(fā)生了非常大的變化,新技術的應用以前所未有的速度吞噬著傳統(tǒng)IT勢力。隨著容器、微服務、中臺的迅速流行,使得系統(tǒng)間的訪問越來越復雜,在云內(nèi)、云間可能會運數(shù)千個進程和服務,服務的調(diào)用用傳統(tǒng)的點對點和點對多點演變成網(wǎng)狀,使用傳統(tǒng)的監(jiān)控技術和手段很難跟蹤這些分布式架構中的數(shù)據(jù)流、調(diào)用鏈和相互依賴關系,系統(tǒng)內(nèi)部的可見性就變得非常重要。
可觀測性工具和系統(tǒng)可以有效的幫助運維團隊實現(xiàn)對復雜系統(tǒng)的監(jiān)測和控制,協(xié)助團隊有效的從紛繁復雜的原始監(jiān)控數(shù)據(jù)中,找到線路,追溯到故障原因,進行有效的根因分析。
三、可觀測性與監(jiān)控的關系
1、可觀測性概念分析
我們談可觀測性這個概念,更多的是站在管理者的視角在看問題,如果管理者可以輕易的從可觀工具上得到想要的數(shù)據(jù)和答案,沒有阻力和沒有困惑,這就是我們滿意的可觀測性。比如我們想看了解基礎設施的狀態(tài),我們有儀表盤。我們想看查看系統(tǒng)延遲的原因,我們有服務調(diào)用鏈追蹤。我們的需求都可以被各種不同的工具滿足。
但是系統(tǒng)原來越復雜,管理者和被管理對象都發(fā)生了很大變化,原有的可觀測工具不再滿足日益增長的需求,于是我們建立了越來越多的工具豎井,我們的運維系統(tǒng)和IT監(jiān)控重新陷入了混亂。
我們在這種“一亂一治”中消耗著我們的熱情和成本。
現(xiàn)在正在被熱捧的可觀測性,把上面的那些豎井和柱子整合了三大要素,日志(Log)、指標(Metric)和追蹤(Trace)。
1)日志:記錄了特定時間發(fā)生的各種離散事件的信息,用于檢測系統(tǒng)中無法預知的行為。
2)指標:指標是根據(jù)隨時間變化的數(shù)據(jù),是在?段時間內(nèi)測量的數(shù)值。與?志不同,指標在默認情況下是結構化的,這使得查詢和優(yōu)化存儲變得更加容易,讓您能夠?qū)⑺鼈儽A舾?時間。
3)追蹤:請求通過分布式系統(tǒng)從端到端的過程。
這三大支柱密不可分,從發(fā)現(xiàn)指標異常,到指標關聯(lián)分析,從逐層下鉆到明細trace追蹤和具體的錯誤日志,進而實現(xiàn)全鏈路自動化根因定位??捎^測性有核心是檢測、排障和分析,檢測是依據(jù)是Metric,排障的依據(jù)Trace,分析的依據(jù)是Log。
以上三大要素不是我杜撰的,是CNCF在OpenTelemetry開源項目中正式提出的。OpenTelemetry是CNCF的一個可觀測性項目,旨在提供可觀測性領域的標準化方案,解決觀測數(shù)據(jù)的數(shù)據(jù)模型、采集、處理、導出等的標準化問題,提供與三方vendor無關的服務。
2、可觀測性跟監(jiān)控的關系
從上面的分析可以看出來,可觀測性跟監(jiān)控有著密不可分的關系。監(jiān)控的概念比可觀測性要更早,有了監(jiān)控為什么還需要客觀性呢?
現(xiàn)有的監(jiān)控工具無法適應云環(huán)境,只能標記問題,無法自動調(diào)整,對問題和故障也是無法追蹤溯源。傳統(tǒng)的監(jiān)控工具無法適應現(xiàn)在和未來的軟件架構和軟件系統(tǒng),其技術和工具很難跟蹤當前的分布式架構中的許多通信路徑和相互依賴關系??捎^測性可以更好地控制復雜系統(tǒng),可以更好的通過可觀測性控制系統(tǒng)的穩(wěn)定性。因此可以說可觀測性是在監(jiān)控的基礎上做了更深、更廣的發(fā)展。
從故障管理的角度來說,監(jiān)控更關注特點的指標,能夠回答什么時候什么地方正在發(fā)生什么;可觀測性通過三個指標的融合和分析判斷,重點在于根因分析和協(xié)助排障,不僅能回答監(jiān)控的問題,還能回答為什么會發(fā)生。
監(jiān)控更關注基于指標的告警和狀態(tài)概況;而可觀測性,除了這些以外,還關注故障排除、根因分析和趨勢預測。從這個角度說,監(jiān)控是可觀測性的子集和功能,可觀測性是監(jiān)控的超集和延展。換句話而言,一個系統(tǒng)只有在可觀測的情況下才能被監(jiān)控。
四、可觀測性是智慧運維的重要思路和方向
三大要素是可觀測性的重要組成部分,但不是全部,除此之外可觀測性還依賴于其他一些能力,公認的有SRE方法論和AIOps,此外還有不少聲音認為應該加上業(yè)務,也就是對業(yè)務的理解和相關知識,我更贊成后者。
SRE方法論很容易理解,Google這一方法論對運維的統(tǒng)制地位是大家公認的,至于SLO方法如何指導運維和智慧運維層面落地,不用在這里細說。
AIOps在這里指的是狹義的概念,說的是智慧運維分析,針對Metric、Trace和Log等數(shù)據(jù),利用AI的手段,進行建模分析,用專門的算法來應對支持。
除了這個另個核心能力以外,對業(yè)務的理解以及業(yè)務架構,也是可觀測性的核心和關鍵。不同的業(yè)務,需要設定不同的業(yè)務指標,業(yè)務指標如何分解成系統(tǒng)的里面的各種參數(shù),這是業(yè)務的范疇。同樣,復雜的調(diào)用關系只有用業(yè)務的語言才能解釋。
對業(yè)務場景及業(yè)務架構的理解程度,決定了SRE和AIOps可以發(fā)揮的效果如何,也最終決定了落地的效果。
大家可能會有疑問,為啥之前沒人提可觀測性,技術的應用和落地到了一定程度,自然需要更高的應用和業(yè)務訴求去指引,這樣的信息化才能不斷的向數(shù)字化和智能化發(fā)展。