可觀測(cè)性不是一個(gè)新鮮的名詞,但是近年來隨著云原生技術(shù)的發(fā)展,在帶來效率、可用性提升的同時(shí)也增加了復(fù)雜度,而可觀測(cè)性成為降低這種復(fù)雜度的唯一手段,因此被推到了前所未有的重要地位。Gartner將應(yīng)用可觀測(cè)性(Applied Observability)列為“2023年十大戰(zhàn)略技術(shù)趨勢(shì)”之一,并指出,到2026年,70%成功實(shí)現(xiàn)可觀測(cè)性的企業(yè)機(jī)構(gòu),將能夠降低決策延遲,幫助目標(biāo)業(yè)務(wù)或IT流程建立競(jìng)爭(zhēng)優(yōu)勢(shì)。那么,云原生時(shí)代的可觀測(cè)性有哪些新挑戰(zhàn)和新趨勢(shì)? 云原生帶來可觀測(cè)性變革 可觀測(cè)性,是指通過分析系統(tǒng)的Metrics(指標(biāo))、Traces(鏈路)、Logs(日志)等數(shù)據(jù),構(gòu)建完整的觀測(cè)模型,從而實(shí)現(xiàn)故障診斷、根因分析和快速恢復(fù)。對(duì)此,谷歌有一個(gè)很簡(jiǎn)單的表述,快速排障(troubleshooting),即可觀測(cè)性的核心價(jià)值。盡管近年來可觀測(cè)性頗有一點(diǎn)“網(wǎng)紅”氣質(zhì),但可觀測(cè)性也是由傳統(tǒng)監(jiān)控演進(jìn)而來的。傳統(tǒng)監(jiān)控是面向運(yùn)維視角的,從系統(tǒng)外部視角去觀察系統(tǒng)的運(yùn)行狀態(tài),應(yīng)用規(guī)模普遍較小且服務(wù)之間沒有互相依賴,更多是通過閾值來監(jiān)控單體主機(jī)的日志和性能指標(biāo)。隨著云原生技術(shù)的發(fā)展,基于容器和微服務(wù)化的應(yīng)用規(guī)模更加龐大,服務(wù)之間依賴呈現(xiàn)為網(wǎng)狀結(jié)構(gòu),復(fù)雜的云上環(huán)境以及分布式系統(tǒng)的復(fù)雜性、動(dòng)態(tài)性,使得故障定界、調(diào)用追蹤非常不明朗。例如,雖然很多容器化應(yīng)用上線有著開箱即用、快速發(fā)布的這些好處,但也有很多的網(wǎng)絡(luò)流量抓取不到。在這種情況下,其實(shí)很難通過傳統(tǒng)的方式進(jìn)行網(wǎng)絡(luò)流量抓包分析,云環(huán)境網(wǎng)絡(luò)流量監(jiān)控“黑盒”的短板也逐步暴露了出來。以往的日志、性能指標(biāo)監(jiān)控能力,就需要補(bǔ)充面向云網(wǎng)絡(luò)的流量日志與性能指標(biāo),同時(shí)結(jié)合動(dòng)態(tài)的全鏈路追蹤能力,實(shí)現(xiàn)多維數(shù)據(jù)的關(guān)聯(lián)分析,提供整體應(yīng)用的可靠性保障。因此,云原生可觀測(cè)性被提出來了,要求從系統(tǒng)內(nèi)部出發(fā),基于“白盒化”的思路去監(jiān)測(cè)系統(tǒng)內(nèi)部的運(yùn)行情況,不僅發(fā)現(xiàn)問題,更對(duì)于問題現(xiàn)象背后本質(zhì)給出明晰解釋。而可觀測(cè)性背后的指標(biāo)、日志、事件、鏈路數(shù)據(jù),以及診斷工具的結(jié)合使用,就為事前預(yù)防、事中處理、事后復(fù)盤提供了重要決策依據(jù)。可以說,可觀測(cè)性是基礎(chǔ)設(shè)施自動(dòng)化的基石,優(yōu)秀的可觀測(cè)性是確保云原生紅利高效釋放的前提條件。可觀測(cè)性的三大維度 云原生計(jì)算基金會(huì)CNCF將可觀測(cè)性分解為三個(gè)更具體方向進(jìn)行研究,分別是:事件日志、鏈路追蹤和聚合度量。日志的職責(zé)是記錄離散事件,通過這些記錄事后分析出程序的行為,譬如曾經(jīng)調(diào)用過什么方法,曾經(jīng)操作過哪些數(shù)據(jù)等等。輸出日志的確很容易,但收集和分析日志卻可能會(huì)很復(fù)雜。面對(duì)成千上萬的集群節(jié)點(diǎn),迅速滾動(dòng)的事件信息,數(shù)以TB計(jì)算的文本,傳輸與歸集都并不簡(jiǎn)單。目前,事件日志可觀測(cè)產(chǎn)品已經(jīng)是一片紅海。日志管理方案大都包含日志收集、日志聚合、日志存儲(chǔ)與分析幾個(gè)模塊,具體過程是日志收集工具與應(yīng)用程序容器一起運(yùn)行,并直接從應(yīng)用程序收集消息,然后將消息轉(zhuǎn)發(fā)到中央日志存儲(chǔ)以進(jìn)行匯總和分析。常見的日志管理工具包括ELK Stack、Fluentd、Loki等。其中,Elastic Stack日志解決方案幾乎覆蓋了日志管理的全流程。度量是指對(duì)系統(tǒng)中某一類信息的統(tǒng)計(jì)聚合,主要目的是監(jiān)控和預(yù)警,如某些度量指標(biāo)達(dá)到風(fēng)險(xiǎn)閾值時(shí)觸發(fā)事件,以便自動(dòng)處理或者提醒管理員介入。度量常用的工具包括:Zabbix、Nagios、Prometheus,及相關(guān)高可用部署方案如Prometheus-operator、Thanos。追蹤的主要目的是排查故障如:分析調(diào)用鏈的哪一部分、哪個(gè)方法出現(xiàn)錯(cuò)誤或阻塞,輸入輸出是否符合預(yù)期等等。云原生時(shí)代,追蹤不只局限于調(diào)用棧了,一個(gè)外部請(qǐng)求需要內(nèi)部若干服務(wù)的聯(lián)動(dòng)響應(yīng),這時(shí)候完整的調(diào)用軌跡將跨越多個(gè)服務(wù),同時(shí)包括服務(wù)間的網(wǎng)絡(luò)傳輸信息與各個(gè)服務(wù)內(nèi)部的調(diào)用堆棧信息。因此,分布式系統(tǒng)中的追蹤常被稱為“全鏈路追蹤”。同時(shí),追蹤方面的情況與日志、度量也有所不同。追蹤是與具體網(wǎng)絡(luò)協(xié)議、程序語言密切相關(guān)的,各個(gè)服務(wù)之間是使用HTTP還是gRPC來進(jìn)行通信,會(huì)直接影響追蹤的實(shí)現(xiàn),各個(gè)服務(wù)是使用Java、Golang還是Node.js來編寫,也會(huì)直接影響到進(jìn)程內(nèi)調(diào)用棧的追蹤方式。這決定了追蹤工具本身有較強(qiáng)的侵入性,通常是以插件式的探針來實(shí)現(xiàn),也決定了追蹤領(lǐng)域很難出現(xiàn)一家獨(dú)大的情況,通常要有多種產(chǎn)品來針對(duì)不同的語言和網(wǎng)絡(luò)。近年來各種鏈路追蹤產(chǎn)品層出不窮,市面上主流的工具既有像Datadog這樣的一攬子商業(yè)方案,也有AWS X-Ray和Google Stackdriver Trace這樣的云計(jì)算廠商產(chǎn)品,還有像SkyWalking、Zipkin、Jaeger這樣來自開源社區(qū)的優(yōu)秀產(chǎn)品。總的來說,日志、度量、追蹤三者打通,最大的價(jià)值是能做到全鏈路錯(cuò)誤尋根,即從發(fā)現(xiàn)請(qǐng)求Metric指標(biāo)異常,通過指標(biāo)關(guān)聯(lián)分析,并逐層下鉆到明細(xì)Trace追蹤和具體Error Log,全流程自動(dòng)化從宏觀到明細(xì)的錯(cuò)誤發(fā)現(xiàn)和根因定位。可觀測(cè)性將走向何方? 不難發(fā)現(xiàn),可觀測(cè)性問題相對(duì)復(fù)雜,沒有開箱即用的最佳方案。為了應(yīng)對(duì)云原生場(chǎng)景下復(fù)雜的可觀測(cè)性問題,各大廠商采用了不同的策略。有的采用多種產(chǎn)品組合的方式,針對(duì)不同場(chǎng)景,為客戶提供不同的解決方案,比如AWS有CloudWatch、AMP、AMG等產(chǎn)品組合,阿里云有ARMS、鏈路追蹤、日志服務(wù)SLS等;有的廠商則提供了統(tǒng)一的解決方案,比如Azure monitor,Vmware Tanzu Wavefront,華為云CIE等。隨著各大廠商和開源項(xiàng)目的發(fā)展和推進(jìn),在可預(yù)見的未來,可觀測(cè)領(lǐng)域正在呈現(xiàn)新的趨勢(shì):首先是指標(biāo),Prometheus作為云原生時(shí)代指標(biāo)數(shù)據(jù)標(biāo)準(zhǔn)已經(jīng)形成共識(shí)。鏈路標(biāo)準(zhǔn)也隨著OpenTracing和OpenTelemetry的推行而逐漸占據(jù)主流。OpenTelemetry作為一套由CNCF主導(dǎo)的云原生可觀測(cè)性的標(biāo)準(zhǔn)協(xié)議,目前已經(jīng)是海外企業(yè)在該領(lǐng)域的實(shí)踐標(biāo)準(zhǔn)。反觀國內(nèi),雖未形成類似的標(biāo)準(zhǔn),卻也涌現(xiàn)了諸如 CAT 和 SkyWalking 等一系列國產(chǎn)開源的 APM 系統(tǒng)。得益于對(duì)業(yè)務(wù)代碼無侵入,性能表現(xiàn)優(yōu)秀,社區(qū)活躍,中文文檔齊全等眾多優(yōu)秀特性,SkyWalking在國內(nèi)異?;鸨?/span>在日志領(lǐng)域,雖然其數(shù)據(jù)結(jié)構(gòu)化程度較低難以形成數(shù)據(jù)標(biāo)準(zhǔn),但采集存儲(chǔ)分析側(cè)涌現(xiàn)出Fluentd、Loki等開源新秀;另一方面,Grafana作為可觀測(cè)數(shù)據(jù)展示標(biāo)準(zhǔn)也愈加明朗。可觀測(cè)性比較好的觀測(cè)視角是應(yīng)用視角,以應(yīng)用為單位關(guān)聯(lián)指標(biāo)、鏈路與日志,利用逐漸成熟的eBPF探針技術(shù)快速實(shí)現(xiàn)全局應(yīng)用可觀測(cè),無侵入應(yīng)用探針為主,OpenTelemetry為輔實(shí)現(xiàn)代碼級(jí)可觀測(cè)能力。在“業(yè)務(wù)至上”的時(shí)代,技術(shù)工程師們保障的核心其實(shí)并不是這套IT系統(tǒng)或軟件,核心其實(shí)是業(yè)務(wù)。一筆業(yè)務(wù)可能會(huì)涉及到多個(gè)微服務(wù)系統(tǒng),需要追蹤到整個(gè)API關(guān)聯(lián)的訂單、用戶甚至具體到哪一筆交易,這也是可觀測(cè)性和業(yè)務(wù)結(jié)合的一個(gè)重要發(fā)展趨勢(shì)。“可觀測(cè)性”被定義為是一個(gè)降本增效的好工具,這讓許多開發(fā)者認(rèn)為安裝了可觀測(cè)性平臺(tái),就可以降低成本、為業(yè)務(wù)創(chuàng)造價(jià)值。事實(shí)上,可觀測(cè)性工具從來不是一個(gè)“便宜”的東西,可觀測(cè)性平臺(tái)除了基本的工具投入,還需要有一套完整的數(shù)據(jù)存儲(chǔ)方案,企業(yè)自研一套優(yōu)秀的可觀測(cè)性解決方案投入成本并不低。以美國企業(yè)的可觀測(cè)性相關(guān)投入為例,其占企業(yè)整體IT支出的5%-10%。因此,可觀測(cè)性產(chǎn)品的“降本增效”不是短時(shí)間內(nèi)就可以顯現(xiàn)出來的,而是通過長(zhǎng)時(shí)間的應(yīng)用產(chǎn)生價(jià)值,企業(yè)將做好加大投入的準(zhǔn)備。安全和可觀測(cè)性的合并,已在全球范圍內(nèi)形成一種趨勢(shì)。摩根士丹利《安全分析和可觀測(cè)性》一文中提到,在國外,以DataDog為代表的公司在上市之后發(fā)布的新增功能中有70%都是安全相關(guān)的。這其中的道理非常簡(jiǎn)單,可觀測(cè)性是通過檢查其輸出來衡量系統(tǒng)內(nèi)部狀態(tài)的能力,它收集了系統(tǒng)的方方面面,通過這些數(shù)據(jù)可以分析出系統(tǒng)的故障,自然也就能夠分析出系統(tǒng)有沒有被入侵。比如DataDog就提供了通過分析當(dāng)前訪問請(qǐng)求,區(qū)分哪些可能是黑客在嗅探,或者準(zhǔn)備未來做DDoS攻擊的接口的功能。也就是說,采集的數(shù)據(jù)在安全方面也能夠發(fā)揮作用,而不像傳統(tǒng)安全工具那樣,需要針對(duì)安全場(chǎng)景再進(jìn)行一次數(shù)據(jù)采集。所以,安全和可觀測(cè)性的合并在全球范圍內(nèi)已經(jīng)成為一種趨勢(shì)。針對(duì)攻擊現(xiàn)場(chǎng)的追蹤,比如國內(nèi)的態(tài)勢(shì)感知、SIEM這些安全產(chǎn)品都選擇了和可觀測(cè)性進(jìn)行融合。結(jié)語 總體來說,真正的可觀測(cè)性平臺(tái)應(yīng)該是,能夠?qū)⒏鞣N各樣對(duì)于系統(tǒng)的形態(tài)、實(shí)時(shí)的狀態(tài)進(jìn)行有結(jié)構(gòu)性的收集并提供一系列的觀察、測(cè)量手段的平臺(tái)。就像傳感器一樣,能夠讓開發(fā)者們的開發(fā)、測(cè)試、運(yùn)維過程變的更容易,能夠即時(shí)了解系統(tǒng)的運(yùn)行狀態(tài),而并不是簡(jiǎn)簡(jiǎn)單單的“監(jiān)控”。
|