Serverless可觀察性的最佳實踐

原文: https://medium.com/adobetech/best-practices-for-serverless-observability-a99d8dc8af5c

WRITTEN BY

Ran Ribenzaft

Co-Founder & CTO @epsagon | AWS Serverless Hero | Entrepreneur, passionate about serverless and microservices.

翻譯:祝坤榮(時序)

現(xiàn)在看起來每個工程師都熟悉serverless這個詞,但離在生產(chǎn)環(huán)境大規(guī)模使用還很遠(yuǎn)蔫饰。意思是,實際上腾供,大部分人在使用serverless時還是沒有經(jīng)驗的,并且由于這個原因姊途,很多最佳實踐還是缺失的作谭。

在這篇文章里,我們會深入可觀察性鸳惯,它是每個工程和運維團(tuán)隊在移動到生產(chǎn)環(huán)境的核心組件。我們會討論每個重要的基礎(chǔ):度量叠萍,日志和分布式追蹤芝发,并提供serverless在真實世界的最佳實踐的例子。


image.png

可觀察性中的度量

傳統(tǒng)簡單直接做監(jiān)控的套路就是去看度量數(shù)據(jù)苛谷。 度量辅鲸, 尤其是度量中體現(xiàn)的趨勢, 可以展示出我們系統(tǒng)的基本統(tǒng)計情況腹殿,比如:

? CPU或內(nèi)存的使用峰值
? 流量和請求的趨勢
? 我們使用的跨服務(wù)的延遲情況


image.png

Google SRE圖書中指出了監(jiān)控分布式系統(tǒng)的4個黃金指標(biāo)是延遲独悴,流量例书,錯誤和飽和度。盡管看起來很簡單刻炒,它仍然需要一些經(jīng)驗和時間來進(jìn)行正確的監(jiān)控决采。這個流程包括:

? 從環(huán)境,應(yīng)用坟奥,資源和服務(wù)上收集所有度量指標(biāo)织狐。這包括,比如筏勒,我們的k8s集群,云資源旺嬉,Java和Node.js應(yīng)用管行,我們的Redis集群。想要記錄這些度量信息每個實體都需要一套不同的處理方法邪媳。
? 將度量信息傳給一個統(tǒng)一平臺捐顷,它要處理正確的量級,聚合所有度量指標(biāo)雨效,展示正確的數(shù)據(jù)(比如迅涮,用百分位替代平均值)。
? 最終徽龟,我們需要為每個應(yīng)用或環(huán)境建一個儀表盤叮姑,并且為其中重要的定義合適的報警。

在serverless化后据悔,CPU和內(nèi)存變得不那么相關(guān)了传透;不要只盯著調(diào)用和錯誤的基本圖表。多看和觀察你的function有的每個動作极颓。你調(diào)用的任何API都需要被監(jiān)控朱盐。

可觀察性中的日志

度量指標(biāo)只能告訴我們’好或壞’。他們不會提供任何信息和一種方式來告訴我們?yōu)槭裁匆粋€應(yīng)用不工作了菠隆。

要定位問題的種類兵琳,我們需要理解我們代碼或服務(wù)的流程。要達(dá)到這個目的我們要打印包括所有從開始到詳細(xì)異常的日志(到一個文件骇径,socket或服務(wù))躯肌。

image.png

Elastic中的日志

每個工程師都熟悉定位問題或bug的場景和要找到正確日志時持續(xù)升高的壓力。這些問題都是由于日志的一些缺陷和固有的問題:

? 它們基本上是手動的破衔。日過你沒有記錄一些事情羡榴,它不會出現(xiàn)(然后你補(bǔ)了日志,部署你的代碼运敢,并且等著問題再次出現(xiàn))校仑。
? 通常忠售,它們沒有上下文。這表示你要找到你想要找的日志迄沫,你需要對發(fā)生在你代碼或服務(wù)的事件的相關(guān)日志進(jìn)行搜索稻扬。
? 在眾多服務(wù)中有很多的日志,這很難在它們之間進(jìn)行導(dǎo)航羊瘩。

想要從日志中得到有效的信息:

? 在你的日志行中填加元數(shù)據(jù)泰佳;例如,服務(wù)/函數(shù)function名稱尘吗,場景逝她,請求ID等。
? 在你使用的代碼中自動化日志事件的處理睬捶。我們會在下面追蹤章節(jié)討論這個黔宛。
? 保證在你的服務(wù)中用正確的方式索引日志,然后你可以使用工具來進(jìn)行分析擒贸。使用工具分析日志(用元數(shù)據(jù)和維度)可以幫助你理解你應(yīng)用中的復(fù)雜趨勢臀晃。
? 記錄自定義的度量指標(biāo)。這也適用于之前的基礎(chǔ)指標(biāo)介劫,但它可以幫你發(fā)現(xiàn)業(yè)務(wù)核心指標(biāo)徽惋。比如,上周用戶注冊的數(shù)量座韵。

可觀察性中的分布式追蹤

追蹤是可觀察性中的重要基礎(chǔ)险绘,它在微服務(wù)和serverless中度量和日志中扮演重要角色。追蹤的目的是收集一次操作的數(shù)據(jù)誉碴,這樣我們可以在不同的服務(wù)中看到流程隆圆。
image.png

在一個運行微服務(wù)和serverless的現(xiàn)代應(yīng)用中,我們需要對追蹤的“分布式”部分有更多的關(guān)注翔烁。追蹤里最流行的標(biāo)準(zhǔn)是OpenTracing(或新的OpenTelemetry)渺氧。分布式追蹤描述了一個框架來收集關(guān)于事件的數(shù)據(jù)(比如,一個DB查詢蹬屹,我們會收集主機(jī)名侣背,表名,持續(xù)時間慨默,操作等)贩耐,這叫做spans與上下文。它也描述了在你的服務(wù)中注入和抽取“追蹤ID”厦取。

有效在代碼中抓取追蹤的一種推薦的方式是進(jìn)行增強(qiáng)instrument(https://epsagon.com/blog/instrumentation-for-better-monitoring-and-troubleshooting/)潮太,所以每個調(diào)用不需要手動。Instrumentation增強(qiáng)修改了一些調(diào)用;比如铡买,每次你調(diào)用HTTP更鲁,它會路由到一個中間件,由其保存追蹤信息奇钞。

由于追蹤是被一種結(jié)構(gòu)化的方式捕捉的澡为,它讓我們可以對日志問一些更有意思的問題;比如景埃,你可以查找所有“insert”操作超過300ms的事件媒至,其被打了一個特定customer ID的標(biāo)簽。

image.png
                    追蹤捕捉了結(jié)構(gòu)化數(shù)據(jù)

要牢記以下幾個關(guān)鍵問題:
? 增強(qiáng)和追蹤你的應(yīng)用是一個非常長的過程谷徙,需要長時間維護(hù)拒啰。如果你選擇自己實現(xiàn)不會快速獲勝。
? 我們只討論了追蹤收集的部分完慧。下一步是傳送它們到一些服務(wù)谋旦。Jaeger(https://www.jaegertracing.io/)可能是展現(xiàn)和搜索追蹤信息的主流服務(wù)。
如果要從追蹤中得到最大的收獲:
? 用標(biāo)簽來充實你的追蹤骗随。標(biāo)簽讓你們可以在你的復(fù)雜系統(tǒng)中精確定位事件,按維度進(jìn)行分析赴叹,比如鸿染,userId=X的一個特定事件有多少次,用了多久乞巧。好的標(biāo)簽可以是user ID涨椒,商品ID,事件類型绽媒,或任何你系統(tǒng)中特定的信息蚕冬。
? 因為追蹤給日志加入了上下文所以它在問題定位中扮演了核心組件。要做到那樣是辕,請考慮下載追蹤里記錄payload囤热。比如,每一個對DB的調(diào)用获三,增加查詢信息旁蔼;每一個HTTP調(diào)用,填加request/reponse的header和body信息疙教。
? 要在沒有任何上下文信息里在成噸的日志或圖表里搜索是很難的棺聊。通過使用追蹤你可以可視化這些在你系統(tǒng)中的復(fù)雜服務(wù)和事務(wù)。

image.png

可視化追蹤和payload信息是一個故障排查的強(qiáng)大工具(Epsagon)

總結(jié)

可觀察性在每個現(xiàn)代應(yīng)用中扮演了很重要的部分贞谓。它需要很多規(guī)劃限佩,繁重的維護(hù)來應(yīng)用最佳實踐。將每個基礎(chǔ)部分分離到不同的工具可以讓工程團(tuán)隊有很大的生產(chǎn)力,強(qiáng)化他們的合作祟同。當(dāng)選擇一個工具來整合一切事物時這很重要作喘。

另外,自動化你的流程以便它們不會對日常工程的工作流產(chǎn)生影響很重要耐亏。選一個受控的解決方案可以有很大的優(yōu)勢徊都,就像你從云供應(yīng)商選擇數(shù)據(jù)庫,消息隊列广辰,或服務(wù)器暇矫。

在Epsagon(https://epsagon.com/),我們在建立一個針對serverless和微服務(wù)的追蹤和監(jiān)控的定制方案择吊。你過你有興趣可以聯(lián)系我們李根。

file

本文來自祝坤榮(時序)的微信公眾號「麥芽面包,id「darkjune_think」
轉(zhuǎn)載請注明几睛。
交流Email: zhukunrong@yeah.net

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末房轿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子所森,更是在濱河造成了極大的恐慌囱持,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焕济,死亡現(xiàn)場離奇詭異纷妆,居然都是意外死亡钻蔑,警方通過查閱死者的電腦和手機(jī)嵌莉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寞忿,“玉大人上鞠,你說我怎么就攤上這事际邻。” “怎么了芍阎?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵世曾,是天一觀的道長。 經(jīng)常有香客問我谴咸,道長度硝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任寿冕,我火速辦了婚禮蕊程,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驼唱。我一直安慰自己藻茂,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辨赐,像睡著了一般优俘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掀序,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天帆焕,我揣著相機(jī)與錄音,去河邊找鬼不恭。 笑死叶雹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的换吧。 我是一名探鬼主播折晦,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沾瓦!你這毒婦竟也來了满着?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤贯莺,失蹤者是張志新(化名)和其女友劉穎风喇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缕探,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡魂莫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了撕蔼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豁鲤。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡秽誊,死狀恐怖鲸沮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锅论,我是刑警寧澤讼溺,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站最易,受9級特大地震影響怒坯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜藻懒,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一剔猿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嬉荆,春花似錦归敬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椅亚。三九已至,卻和暖如春舱污,著一層夾襖步出監(jiān)牢的瞬間呀舔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工扩灯, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留媚赖,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓驴剔,卻偏偏與公主長得像省古,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丧失,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. 基于密鑰認(rèn)證的SSH批量管理原理 企業(yè)級SSHD免密碼批量管理企業(yè)項目案例的實現(xiàn)思想如下圖所示豺妓。 2. 項目...
    阿喪小威閱讀 393評論 0 0
  • 未來職業(yè)變化趨勢:十年后你會失業(yè)嗎? 扎絲特K1 日更20天 3.3672018-12-11 05:35打開App...
    5aceacc51e5b閱讀 432評論 0 0
  • 安裝Apache服務(wù)程序 yum install httpd ![yuminstallhttpd.jpg](htt...
    安炯燮靜安寺閱讀 129評論 0 0
  • 晴轉(zhuǎn)雨 早晨起床三個人都很困難布讹。 基英課做了什么琳拭?刷微博看推理大師背單詞還聽了課。 中間被一些真正的腦殘粉氣到無話...
    Cheryl_ak717閱讀 99評論 0 0
  • 手扯一根風(fēng)箏線描验, 大人小孩仰望天白嘁。 二月春風(fēng)來的早, 歡聲笑語放紙鳶膘流。
    木筆紅玉蘭閱讀 225評論 0 5