01. 運(yùn)維挑戰(zhàn)加劇
新時(shí)代技術(shù)背景下,運(yùn)維面臨的挑戰(zhàn)加劇:
1)業(yè)務(wù)數(shù)量日益增加、業(yè)務(wù)規(guī)模日益龐大
隨著科技發(fā)展進(jìn)步、民眾生活富足,線(xiàn)下業(yè)務(wù)線(xiàn)上化、線(xiàn)上業(yè)務(wù)復(fù)雜化趨勢(shì)愈演愈烈,各行各業(yè)投入巨大人力物力財(cái)力進(jìn)行企業(yè)IT建設(shè)。隨之而來(lái)的是線(xiàn)上業(yè)務(wù)數(shù)量的爆炸式增加與業(yè)務(wù)規(guī)模的劇烈擴(kuò)張,這對(duì)企業(yè)IT運(yùn)維人員提出了全局把控能力的重大挑戰(zhàn)。
2)云原生、微服務(wù)技術(shù)應(yīng)用
伴隨著業(yè)務(wù)增長(zhǎng),IT架構(gòu)領(lǐng)域提出了云原生、微服務(wù)的構(gòu)建理念,將傳統(tǒng)的大體量、高耦合應(yīng)用系統(tǒng)拆分為微型化、可拆卸的分布式模塊。這種高可用性、高靈活度的部署架構(gòu)使得運(yùn)維人員更難了解系統(tǒng)全貌,在日常監(jiān)控和故障現(xiàn)場(chǎng)還原時(shí)難度極大。
3)容器技術(shù)的大規(guī)模實(shí)踐落地
與此同時(shí),在資源調(diào)度層面,為應(yīng)對(duì)上述現(xiàn)狀帶來(lái)的業(yè)務(wù)快速迭代、運(yùn)行保障維穩(wěn)需求,容器技術(shù)在各企業(yè)內(nèi)部快速落地推廣。容器對(duì)基礎(chǔ)資源的弱依賴(lài)、Pod/Container頻繁起滅的特性都給運(yùn)維工作帶來(lái)了難以估量的復(fù)雜度提升,人力沒(méi)有算力快的“弱勢(shì)”日益凸顯。
綜上所述,在當(dāng)今企業(yè)內(nèi)部,運(yùn)維工作越來(lái)越需要工具的協(xié)助,傳統(tǒng)人工式的運(yùn)維方案,已無(wú)法應(yīng)對(duì)科技發(fā)展帶來(lái)的挑戰(zhàn)要求。
02. 企業(yè)應(yīng)用觀測(cè)建設(shè)路徑
面對(duì)上述挑戰(zhàn),企業(yè)常常會(huì)踏上構(gòu)建可觀測(cè)性工具體系的征途,而在融合ITIM基礎(chǔ)監(jiān)控之后,針對(duì)應(yīng)用的可觀測(cè)能力補(bǔ)充往往在中間階段進(jìn)行建設(shè)落地。
03. 企業(yè)應(yīng)用觀測(cè)建設(shè)思路
1)總體定位
鏈路追蹤的工具,即前面提到的APM,因?yàn)槠渥詣?dòng)化生成了一系列數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,在整個(gè)可觀測(cè)體系中是一個(gè)類(lèi)似中樞的存在。
這張圖概括了鏈路追蹤在整個(gè)可觀測(cè)體系建設(shè)中的定位以及與其他工具的關(guān)聯(lián)關(guān)系:
另外鏈路追蹤本身也是可以進(jìn)行一些指標(biāo)提取的,經(jīng)典指標(biāo)例如請(qǐng)求量、請(qǐng)求成功率、各種分位的時(shí)延,這些指標(biāo)在配置了一定的告警規(guī)則后,也都可以直接作為告警來(lái)源。產(chǎn)生異常后主動(dòng)觸達(dá)運(yùn)維人員。
由此可見(jiàn),在構(gòu)建全面的可觀測(cè)性體系時(shí),孤立地看待與應(yīng)用性能管理(APM)工具的建設(shè)是一種偏頗的思路。不少企業(yè)曾嘗試獨(dú)立為APM工具設(shè)立項(xiàng)目并推進(jìn)實(shí)施,然而最終這些工具并未能實(shí)現(xiàn)廣泛的采納與應(yīng)用,項(xiàng)目所帶來(lái)的實(shí)際效益遠(yuǎn)低于初始預(yù)期。究其根本,是因?yàn)閱我坏腁PM工具所能覆蓋的問(wèn)題場(chǎng)景極為有限。我們應(yīng)當(dāng)將APM盡可能和各類(lèi)其他觀測(cè)工具做串聯(lián)打通,通過(guò)APM建立起基于業(yè)務(wù)實(shí)際請(qǐng)求流量的“橋梁”,有目標(biāo)性地拉通各個(gè)觀測(cè)工具和不同類(lèi)型的觀測(cè)數(shù)據(jù),實(shí)現(xiàn)完整有效的觀測(cè)效果。
接下來(lái)我們就具體的串聯(lián)打通場(chǎng)景提出一些具體實(shí)踐供各位讀者參考。
① 前端到后端串聯(lián)排障
當(dāng)具備對(duì)用戶(hù)終端數(shù)據(jù)進(jìn)行采集的能力,那就可以結(jié)合這種前端監(jiān)控工具(RUM)和鏈路追蹤工具(APM)通過(guò)一些機(jī)制來(lái)實(shí)現(xiàn)前端到后端的串聯(lián)排障。
圖中可以解釋這一過(guò)程的原理,用戶(hù)在移動(dòng)應(yīng)用或者Web瀏覽器網(wǎng)頁(yè)上訪(fǎng)問(wèn)時(shí),會(huì)生成一個(gè)Session被記錄,一個(gè)Session中記錄了一個(gè)用戶(hù)的完整操作流程,包括他依次打開(kāi)了哪些頁(yè)面,在每個(gè)頁(yè)面上進(jìn)行了怎樣的操作,觸發(fā)了哪些后臺(tái)請(qǐng)求。當(dāng)產(chǎn)生了一個(gè)具體的后臺(tái)請(qǐng)求后,RUM工具可以按照APM工具定義的Trace標(biāo)識(shí)規(guī)則(TraceID的生成規(guī)則),來(lái)對(duì)這個(gè)請(qǐng)求進(jìn)行標(biāo)記,這樣在后端也可以完整跟蹤到這個(gè)請(qǐng)求在后端系統(tǒng)具體經(jīng)過(guò)了哪些服務(wù),在哪個(gè)服務(wù)上處理消耗的時(shí)間過(guò)長(zhǎng)或者出現(xiàn)了報(bào)錯(cuò)。
② 鏈路跟蹤與日志關(guān)聯(lián)
對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),直接將問(wèn)題定位到代碼級(jí)別是最高效的。但告警信息的有限以及指標(biāo)類(lèi)數(shù)據(jù)的高度抽象,使得運(yùn)維人員在很多時(shí)候其實(shí)無(wú)法給出這么詳細(xì)的信息,無(wú)法有效輔助開(kāi)發(fā)人員進(jìn)行問(wèn)題定位和解決。這時(shí),鏈路追蹤和日志關(guān)聯(lián)的方式就給出了一種有效的解決手段。
具體的實(shí)現(xiàn)方式如下圖所示:
可能會(huì)有工程師擔(dān)心這種方式對(duì)代碼侵入性很大,很難實(shí)踐,但其實(shí)不然,業(yè)界有非常多好用的日志框架來(lái)幫你解決這個(gè)問(wèn)題,我們只需要額外生成一份日志輸出的配置文件做批量下發(fā)即可。
以下就用Logback日志框架配合Skywalking探針(一種業(yè)界流行的開(kāi)源APM探針)來(lái)做個(gè)例子,其中關(guān)鍵的修改點(diǎn)在于:
在這個(gè)過(guò)程中,業(yè)務(wù)并不會(huì)有很大感知,只是會(huì)發(fā)現(xiàn)他們輸出的日志中增加了Skywalking注入的TraceID等信息。接下來(lái)我們?cè)?/span>日志解析過(guò)程中就可以提取這些Trace信息,便于后續(xù)直接根據(jù)這些Trace信息進(jìn)行關(guān)聯(lián)檢索和分析。
③ 鏈路追蹤下鉆到資源層監(jiān)控
這里會(huì)進(jìn)一步分為三種不同類(lèi)型的場(chǎng)景:
APM所捕獲到的調(diào)用數(shù)據(jù)中,有一部分是對(duì)組件或數(shù)據(jù)庫(kù)的調(diào)用。這種調(diào)用可以將系統(tǒng)所用到的組件和數(shù)據(jù)庫(kù)直觀地呈現(xiàn)在拓?fù)鋱D和某一條具體的調(diào)用鏈中,如果相關(guān)的組件或數(shù)據(jù)庫(kù)出現(xiàn)了問(wèn)題,大概率會(huì)在這種可視化的形式中有所體現(xiàn),例如拓?fù)鋱D上的狀態(tài)呈現(xiàn)以及調(diào)用鏈瀑布圖中的長(zhǎng)條。當(dāng)然,這里只是解決了發(fā)現(xiàn)的問(wèn)題,我們只能在APM中判斷這些組件或者數(shù)據(jù)庫(kù)的故障對(duì)上游調(diào)用者產(chǎn)生了影響,但至于為何產(chǎn)生以及這些組件及數(shù)據(jù)庫(kù)的真實(shí)運(yùn)行狀態(tài),我們?nèi)匀恍枰柚渌O(jiān)控工具來(lái)呈現(xiàn)和分析。
此時(shí)APM可以在調(diào)用信息中提取出對(duì)應(yīng)組件或數(shù)據(jù)庫(kù)的資源標(biāo)識(shí),這可能是IP地址,或是域名鏈接,再通過(guò)這些標(biāo)識(shí)信息去對(duì)應(yīng)的組件監(jiān)控或數(shù)據(jù)庫(kù)監(jiān)控中獲取到這些資源的核心監(jiān)控指標(biāo)信息及相關(guān)日志,通過(guò)同一個(gè)平臺(tái)的頁(yè)面跳轉(zhuǎn)或者嵌入來(lái)實(shí)現(xiàn)一套連貫的排障流程,提升此類(lèi)場(chǎng)景的排障效率。
當(dāng)我們?cè)谙到y(tǒng)中通過(guò)APM探針或者SDK按照規(guī)范要求上報(bào)了Trace信息,一般都會(huì)攜帶對(duì)應(yīng)服務(wù)所在的主機(jī)或者容器集群信息,最常見(jiàn)的就是主機(jī)的IP地址以及容器的ContainerID,這兩種信息會(huì)作為我們?nèi)で笃渌O(jiān)控工具時(shí)對(duì)主機(jī)和容器監(jiān)控的索引,從而能夠在識(shí)別到某個(gè)服務(wù)節(jié)點(diǎn)故障后,對(duì)其所在的主機(jī)或者容器進(jìn)行下鉆,查看到主機(jī)和容器層級(jí)上更加精確的指標(biāo)數(shù)據(jù)或者容器數(shù)據(jù)。
我們知道,計(jì)算機(jī)網(wǎng)絡(luò)其實(shí)底層有七層協(xié)議,而我們平時(shí)大多數(shù)情況會(huì)將這七層協(xié)議轉(zhuǎn)化抽象成單次請(qǐng)求。但不排除,有時(shí)我們的故障發(fā)生在比較深的網(wǎng)絡(luò)層面,在APM調(diào)用鏈中只能得知某一段span的耗時(shí)增加、返回碼錯(cuò)誤或者無(wú)響應(yīng)斷鏈,無(wú)法進(jìn)一步排查深層次的網(wǎng)絡(luò)問(wèn)題。這時(shí)就可以通過(guò)這一進(jìn)程將請(qǐng)求的span獲取到內(nèi)核態(tài)的 sys span ,再?gòu)膕ys span映射到網(wǎng)絡(luò)監(jiān)控中的具體net span,然后就可以從專(zhuān)業(yè)的網(wǎng)絡(luò)監(jiān)控中獲取到這次網(wǎng)絡(luò)請(qǐng)求在各個(gè)環(huán)節(jié)的詳細(xì)信息。
通常某次請(qǐng)求出現(xiàn)網(wǎng)絡(luò)問(wèn)題的概率還是比較小的,往往是短時(shí)間大面積出現(xiàn)網(wǎng)絡(luò)問(wèn)題,這個(gè)時(shí)候我們也可以從APM的某些樣本請(qǐng)求中獲取一個(gè)大致的范圍,接下來(lái)按一定條件跳轉(zhuǎn)到專(zhuān)業(yè)的網(wǎng)絡(luò)監(jiān)控,查看相應(yīng)的指標(biāo)趨勢(shì)(例如丟包數(shù)量、丟包率、CRC校驗(yàn)通過(guò)率等)。
04. 結(jié)語(yǔ)
以上,我們介紹了比較成熟理想的企業(yè)應(yīng)用觀測(cè)中樞建設(shè)方案。總的來(lái)說(shuō),應(yīng)用觀測(cè)領(lǐng)域目前尚處于快速發(fā)展、落地探索階段,各企業(yè)在建設(shè)應(yīng)用觀測(cè)中樞的過(guò)程中不應(yīng)操之過(guò)急。企業(yè)內(nèi)部從一個(gè)試點(diǎn)出發(fā),以點(diǎn)帶面,逐漸推廣是比較理想且穩(wěn)妥的建設(shè)節(jié)奏。其最終實(shí)現(xiàn)的觀測(cè)能力也將會(huì)對(duì)企業(yè)內(nèi)部的系統(tǒng)維穩(wěn)及代碼調(diào)優(yōu)起到極大的助力作用。
SRE轉(zhuǎn)型:銀行SRE模式推廣策略
查看詳細(xì)
從設(shè)備到數(shù)據(jù):存儲(chǔ)監(jiān)控的關(guān)鍵與實(shí)踐
查看詳細(xì)
AI破圈爆火!殊不知運(yùn)維才是幕后“定海神針”!
查看詳細(xì)
AI賦能DevOps:智能排錯(cuò)、代碼修復(fù)與需求生成,打造高效開(kāi)發(fā)新范式!
查看詳細(xì)
LLMOps+DeepSeek:大模型升級(jí)一體化運(yùn)維
查看詳細(xì)
DeepSeek賦能企業(yè)研發(fā):DevOps+AI 新時(shí)代再升級(jí)!
查看詳細(xì)
申請(qǐng)演示