《微服務(wù)設(shè)計(jì)》閱讀筆記八

《微服務(wù)設(shè)計(jì)》,Building Microservices孽鸡,作者Sam Newman蹂午,譯者崔力強(qiáng)栏豺、張駿,人民郵電出版社豆胸,2016年奥洼。

筆記中有些內(nèi)容直接引用原書。

================================================================

第八章監(jiān)控

微服務(wù)系統(tǒng)出了問題晚胡,要通過服務(wù)的監(jiān)控灵奖、日志的篩選、網(wǎng)絡(luò)延遲的判斷等各方面去發(fā)現(xiàn)問題估盘,要處理的點(diǎn)很多瓷患,該如何辦?答案是:監(jiān)控小的服務(wù)遣妥,然后聚合起來看整體擅编。

1.單一服務(wù),單一服務(wù)器

首先監(jiān)控主機(jī):CPU箫踩、內(nèi)存等沙咏。可以使用監(jiān)控軟件Nagios或者像New Relic這樣的托管服務(wù)來幫助監(jiān)控主機(jī)班套。接著查看服務(wù)器日志肢藐,可以使用命令行工具掃描日志,使用logrotate移除舊的日志吱韭。最后監(jiān)控應(yīng)用程序本身吆豹,至少要監(jiān)控服務(wù)響應(yīng)時(shí)間±砼瑁可以通過查看運(yùn)行服務(wù)的Web服務(wù)器或者服務(wù)日志完成痘煤。進(jìn)一步可以追蹤報(bào)告中錯(cuò)誤出現(xiàn)的次數(shù)。

2.單一服務(wù)猿规,多個(gè)服務(wù)器

仍然要監(jiān)控每個(gè)主機(jī)的資源使用情況衷快,需要聚合各主機(jī)的信息來分析,也需要對單個(gè)主機(jī)信息進(jìn)行深入分析姨俩≌喊危可以采用Nagios。對于日志环葵,如果只有幾個(gè)主機(jī)调窍,可以用像ssh-multiplexers這樣的工具,在多個(gè)主機(jī)上運(yùn)行相同的命令张遭。用一個(gè)大顯示屏邓萨,運(yùn)行g(shù)rep “Error” app.log來定位錯(cuò)誤。對于響應(yīng)時(shí)間,可以在負(fù)載均衡器中跟蹤缔恳,負(fù)載均衡器本身也需要跟蹤宝剖。

3.多個(gè)服務(wù),多個(gè)服務(wù)器

通過日志和應(yīng)用程序指標(biāo)的集中收集和聚合來定位問題歉甚。

4.日志诈闺,日志,更多的日志

可以用logstash铃芦,解析多種日志格式雅镊,發(fā)送到下游系統(tǒng)。Kibana是基于ElasticSearch查看日志的系統(tǒng)刃滓。

5.多個(gè)服務(wù)的指標(biāo)跟蹤

需要長時(shí)間收集系統(tǒng)運(yùn)行指標(biāo)仁烹,以了解其模式,從而判斷異常咧虎∽跨郑可以用Graphite來方便地從新的主機(jī)收集指標(biāo),查看聚合后的數(shù)據(jù)砰诵。

6.服務(wù)指標(biāo)

Linux上安裝collectd并指向Graphite時(shí)征唬,會有大量的指標(biāo)。像Nginx或Varnish這樣的支撐子系統(tǒng)茁彭,也會提供很多信息总寒,如響應(yīng)時(shí)間、緩存命中率理肺。對于應(yīng)用程序摄闸,強(qiáng)烈建議公開自己服務(wù)的基本標(biāo)準(zhǔn)。這樣可以:了解系統(tǒng)各個(gè)功能的使用情況妹萨;了解用戶如何使用我們的系統(tǒng)年枕,從而得知如何改進(jìn);我們永遠(yuǎn)不知道哪些數(shù)據(jù)是有用的乎完,因此要暴露一切數(shù)據(jù)熏兄,通過指標(biāo)系統(tǒng)來處理。Codahale的Metrics庫(運(yùn)行于JVM)可以存儲指標(biāo)树姨,并能將數(shù)據(jù)發(fā)送給Graphite摩桶。

7.綜合監(jiān)控

對于系統(tǒng)服務(wù)的監(jiān)控,可以采用合成事務(wù)的方式娃弓,確保系統(tǒng)行為在語義上的正確性典格,這種技術(shù)因此常被稱為語義監(jiān)控岛宦。創(chuàng)建假事件給系統(tǒng)處理台丛,監(jiān)控處理行為就是一個(gè)合成事務(wù)的例子。

實(shí)現(xiàn)語義監(jiān)控⊥烀梗可以采用針對指定服務(wù)或整個(gè)系統(tǒng)的端到端測試進(jìn)行語義監(jiān)控防嗡。但要確保測試的數(shù)據(jù)和實(shí)時(shí)的數(shù)據(jù)相匹配,還要確保不會產(chǎn)生副作用侠坎。

8.關(guān)聯(lián)標(biāo)識

要能夠像查看堆棧一樣查看由請求引起的調(diào)用鏈蚁趁。可以使用關(guān)聯(lián)標(biāo)識(ID)实胸,在觸發(fā)第一個(gè)調(diào)用時(shí)他嫡,生成一個(gè)GUID,然后將其傳遞給所有的后續(xù)調(diào)用庐完,日志中保存該關(guān)聯(lián)標(biāo)識钢属,就能通過查看日志進(jìn)行跟蹤。每個(gè)服務(wù)都應(yīng)知道傳遞關(guān)聯(lián)標(biāo)識门躯∠常可用Zipkin進(jìn)行跨多個(gè)系統(tǒng)邊界跟蹤調(diào)用。Zipkin有點(diǎn)重讶凉,需要自定義客戶端并且支持收集系統(tǒng)染乌。傳遞關(guān)聯(lián)標(biāo)識需要在所有服務(wù)中保持一致,可以通過統(tǒng)一的庫來進(jìn)行懂讯,實(shí)現(xiàn)該庫時(shí)需要盡量減少其依賴荷憋。

9.級聯(lián)

級聯(lián)故障很危險(xiǎn),監(jiān)控系統(tǒng)之間的集成點(diǎn)非常關(guān)鍵褐望。每個(gè)服務(wù)應(yīng)該追蹤和顯示其下游服務(wù)的健康狀態(tài)台谊,然后將這些信息匯總,整合到一個(gè)畫面譬挚」Γ可以用庫實(shí)現(xiàn)一個(gè)斷路器網(wǎng)絡(luò)調(diào)用,幫助你更優(yōu)雅地處理級聯(lián)故障和功能降級减宣。如JVM上的Hystrix盐须,提供了挺好的監(jiān)控功能。

10.標(biāo)準(zhǔn)化

監(jiān)控領(lǐng)域的標(biāo)準(zhǔn)化很關(guān)鍵漆腌,可以利用工具贼邓,例如提供預(yù)配置的虛擬機(jī)鏡像,鏡像內(nèi)置logstash和collectd闷尿,還有一個(gè)公用的應(yīng)用程序庫塑径,使其與Graphite容易交互。

11.考慮受眾

不同的人對于數(shù)據(jù)進(jìn)行深入分析的需求不一樣填具。需要考慮:他們現(xiàn)在需要知道什么统舀,他們之后想要什么匆骗,他們?nèi)绾蜗M(fèi)數(shù)據(jù)。定量信息的圖形化顯示可以參考Stephen Few的《Information Dashboard Design: Displaying Data for At-a-Glance Monitoring》一書誉简。

12.未來

存儲業(yè)務(wù)指標(biāo)的系統(tǒng)通常無法直接碉就、實(shí)時(shí)地訪問,而存儲運(yùn)營指標(biāo)的系統(tǒng)卻可以闷串。如果能有通用的事件路由系統(tǒng)瓮钥,使兩者能聚合用于生成報(bào)告,則整體架構(gòu)會更加簡單烹吵。Riemann是一個(gè)事件服務(wù)器碉熄,允許高級的聚合和事件路由。Netflix開源的Suro類似肋拔。聚合的數(shù)據(jù)可以分發(fā)到不同的系統(tǒng)具被,如Storm、Hadoop或Kibana只损。

13.總結(jié)

對每個(gè)服務(wù):跟蹤請求響應(yīng)時(shí)間一姿、錯(cuò)誤率和應(yīng)用程序級指標(biāo);跟蹤所有下游服務(wù)的健康狀態(tài)跃惫,如調(diào)用時(shí)間叮叹、錯(cuò)誤率;標(biāo)準(zhǔn)化如何收集和存儲指標(biāo)爆存;以標(biāo)準(zhǔn)格式講日志記錄到一個(gè)標(biāo)準(zhǔn)位置蛉顽;監(jiān)控底層操作系統(tǒng)。

對系統(tǒng):聚合CPU等主機(jī)層級的指標(biāo)和程序級指標(biāo)先较;確保指標(biāo)存儲工具可以在系統(tǒng)和服務(wù)級別做聚合携冤,也能查看單臺主機(jī)信息;指標(biāo)存儲工具允許維護(hù)數(shù)據(jù)足夠長時(shí)間闲勺,以了解趨勢曾棕;使用單個(gè)可查詢工具對日志進(jìn)行聚合和存儲;強(qiáng)烈考慮標(biāo)準(zhǔn)化關(guān)聯(lián)標(biāo)識的使用菜循;了解什么樣的情況需要行動翘地,并構(gòu)造警報(bào)和儀表盤;調(diào)查對各種指標(biāo)聚合和統(tǒng)一化的可能性癌幕。

更多通用事件處理系統(tǒng)的內(nèi)容可參考作者的書《Lightweight Systems for Realtime Monitoring》衙耕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市勺远,隨后出現(xiàn)的幾起案子橙喘,更是在濱河造成了極大的恐慌,老刑警劉巖胶逢,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厅瞎,死亡現(xiàn)場離奇詭異饰潜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)磁奖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門囊拜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來某筐,“玉大人比搭,你說我怎么就攤上這事∧咸埽” “怎么了身诺?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抄囚。 經(jīng)常有香客問我霉赡,道長,這世上最難降的妖魔是什么幔托? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任穴亏,我火速辦了婚禮,結(jié)果婚禮上重挑,老公的妹妹穿的比我還像新娘嗓化。我一直安慰自己,他們只是感情好谬哀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布刺覆。 她就那樣靜靜地躺著,像睡著了一般史煎。 火紅的嫁衣襯著肌膚如雪谦屑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天篇梭,我揣著相機(jī)與錄音氢橙,去河邊找鬼。 笑死恬偷,一個(gè)胖子當(dāng)著我的面吹牛充蓝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喉磁,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼谓苟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了协怒?” 一聲冷哼從身側(cè)響起涝焙,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孕暇,沒想到半個(gè)月后仑撞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赤兴,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年隧哮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桶良。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沮翔,死狀恐怖陨帆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情采蚀,我是刑警寧澤疲牵,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站榆鼠,受9級特大地震影響纲爸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妆够,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一识啦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧神妹,春花似錦颓哮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腰鬼,卻和暖如春嵌赠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背熄赡。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工姜挺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彼硫。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓炊豪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拧篮。 傳聞我的和親對象是個(gè)殘疾皇子词渤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

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