摘取自 云原生網(wǎng)關(guān)的可觀測(cè)性體系實(shí)踐
可觀測(cè)性一詞來源于控制理論,指系統(tǒng)可以由其外部輸出推斷其其內(nèi)部狀態(tài)的程度,隨著 IT 行業(yè)幾十年的發(fā)展,IT 系統(tǒng)的監(jiān)控、告警、問題排查等領(lǐng)域的逐漸成熟,IT 行業(yè)也將其抽象形成了一整套可觀測(cè)性工程體系。目前可觀測(cè)性已不僅僅是一種具體的工具或者技術(shù),它更偏向是一種理念,已成為復(fù)雜分布式系統(tǒng)成功管理的關(guān)鍵組成部分,并對(duì)系統(tǒng)在運(yùn)行時(shí)提供對(duì)其理解、探查以及調(diào)度的能力。
當(dāng)前業(yè)界在可觀測(cè)性能力建設(shè)方面通用的三大支柱:日志事件(Logging),分布式鏈路追蹤(Tracing)以及指標(biāo)監(jiān)控(Metrics)。

1) 指標(biāo)(Metrics),是一段時(shí)間內(nèi)記錄的各個(gè)維度的量化信息,用來觀察系統(tǒng)的某些狀態(tài)和趨勢(shì)
2) 日志(Logs),是對(duì)程序運(yùn)行過程中產(chǎn)生的一些離散事件的記錄
3) 鏈路追蹤(Traces),是對(duì)一次請(qǐng)求從接收到處理完畢整個(gè)生命周期內(nèi)的調(diào)用鏈路的記錄
可觀測(cè)性難點(diǎn)
云原生網(wǎng)關(guān)是阿里云微服務(wù)引擎(MSE)下的一款托管類型網(wǎng)關(guān)產(chǎn)品,其將傳統(tǒng)的流量網(wǎng)關(guān)與微服務(wù)網(wǎng)關(guān)進(jìn)行了整合,本文將講述如何基于云原生網(wǎng)關(guān)去搭建網(wǎng)關(guān)場(chǎng)景的可觀測(cè)性體系。
網(wǎng)關(guān)作為業(yè)務(wù)流量的入口,其可觀測(cè)性建設(shè)與整體業(yè)務(wù)的穩(wěn)定性息息相關(guān),同時(shí)由于網(wǎng)關(guān)的用戶使用場(chǎng)景與功能較多,且網(wǎng)絡(luò)環(huán)境也較為復(fù)雜,這對(duì)網(wǎng)關(guān)可觀測(cè)性建設(shè)也帶來了很多的難點(diǎn)。下面就針對(duì)其中的主要難點(diǎn)分別加以說明。
1) 關(guān)注網(wǎng)關(guān)可觀測(cè)性的角色眾多
可觀測(cè)性的核心在于 通過觀測(cè)數(shù)據(jù)、滿足不同角色、對(duì)于系統(tǒng)狀態(tài)的理解需求,網(wǎng)關(guān)作為流量入口,業(yè)務(wù),研發(fā),SRE 等角色都會(huì)關(guān)注網(wǎng)關(guān)的狀態(tài),需要在深入理解不同角色需求的前提下才能夠完善網(wǎng)關(guān)的可觀測(cè)性體系。
2) 埋點(diǎn)不夠精確,統(tǒng)計(jì)消耗大
點(diǎn)位不夠準(zhǔn)。埋點(diǎn)不難,難的是如何判斷哪些數(shù)據(jù)是符合使用場(chǎng)景的。這就需要設(shè)計(jì)者有豐富的從業(yè)經(jīng)驗(yàn),或者在上線的過程中,不斷迭代打磨。
統(tǒng)計(jì)采集代價(jià)高??捎^測(cè)性的實(shí)現(xiàn),很多時(shí)候往往是時(shí)間、空間、顆粒度三者之間的權(quán)衡。統(tǒng)計(jì)的時(shí)間粒度太密會(huì)造成存儲(chǔ)容量的膨脹,統(tǒng)計(jì)的時(shí)間粒度太粗則不利于定位問題。這都為可觀測(cè)性的實(shí)現(xiàn)帶來了難題。? ?
3) 網(wǎng)絡(luò)環(huán)境復(fù)雜,? 問題排查難度大
在流量網(wǎng)關(guān)場(chǎng)景下,由于公網(wǎng)網(wǎng)絡(luò)環(huán)境復(fù)雜,網(wǎng)關(guān)流量巨大,偶發(fā)問題排查難度巨大。
可觀測(cè)性實(shí)踐
基于業(yè)界可觀測(cè)性實(shí)踐的三大支柱,建設(shè)了云原生網(wǎng)關(guān)基礎(chǔ)的可觀測(cè)性能力。
1) 確定網(wǎng)關(guān)核心指標(biāo),構(gòu)建可觀測(cè)性基礎(chǔ)
核心指標(biāo)即能準(zhǔn)確描述系統(tǒng)內(nèi)部運(yùn)行狀況的指標(biāo),在云原生網(wǎng)關(guān)場(chǎng)景,核心指標(biāo)即為 qps,rt,成功率等能夠準(zhǔn)確描述網(wǎng)關(guān)此時(shí)運(yùn)行狀況的指標(biāo)。云原生網(wǎng)關(guān)同時(shí)集成了 prometheus 與 sls,用戶既可以通過網(wǎng)關(guān)的訪問日志的 etl 處理獲取更加精細(xì)準(zhǔn)確的數(shù)據(jù),也可以通過 prometheus 獲取網(wǎng)關(guān)的實(shí)時(shí)監(jiān)控。
針對(duì)統(tǒng)計(jì)采集消耗大的問題,云原生網(wǎng)關(guān)將部分采集消耗大的指標(biāo)使用 etl 處理訪問日志來減少采集消耗,將更需要實(shí)時(shí)性的統(tǒng)計(jì)指標(biāo)采用程序內(nèi)埋點(diǎn)的方式來保證實(shí)時(shí)性。
針對(duì)不同角色對(duì)網(wǎng)關(guān)可觀測(cè)性的不同需求,云原生網(wǎng)關(guān)提供了不同維度的數(shù)據(jù)表現(xiàn),對(duì)于需要進(jìn)一步精細(xì)分析的企業(yè)用戶,也可以通過 sls 進(jìn)一步進(jìn)行數(shù)據(jù)加工。
2. 劃分系統(tǒng)邊界,快速定位問題
網(wǎng)關(guān)通常請(qǐng)求量龐大,同時(shí)在微服務(wù)場(chǎng)景下,調(diào)用鏈路錯(cuò)綜復(fù)雜,在這樣的條件下想確認(rèn)某一條請(qǐng)求的失敗原因是一件困難的事情,針對(duì)這一場(chǎng)景,云原生網(wǎng)關(guān)對(duì)接了開箱即用的 ARMS 分布式鏈路追蹤服務(wù),同時(shí)也支持將 trace 數(shù)據(jù)投遞到用戶自建的 skywalking,避免云產(chǎn)品鎖定。
對(duì)于未接入鏈路追蹤的用戶,云原生網(wǎng)關(guān)提供日志明細(xì)的詳細(xì)解釋,將請(qǐng)求失敗的原因可視化為具體的圖表,幫助用戶確認(rèn)問題邊界,減少問題排查時(shí)的時(shí)間。
3. 風(fēng)險(xiǎn)管理定時(shí)巡查風(fēng)險(xiǎn)
云原生網(wǎng)關(guān)綜合用戶實(shí)例,規(guī)格,性能等數(shù)據(jù),會(huì)給出目前實(shí)例存在的風(fēng)險(xiǎn),并給出改善建議,極大程度上提高了允原生網(wǎng)關(guān)實(shí)例維護(hù)的自動(dòng)化程度,降低客戶使用成本。