偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何做好一名穩(wěn)定性SRE?

開(kāi)發(fā) 開(kāi)發(fā)工具
近兩年來(lái),穩(wěn)定性不再僅僅局限于之前的大促保障和平時(shí)的穩(wěn)定性輪值,越來(lái)越體系化,在保障體系、監(jiān)控體系、資源體系、質(zhì)量保障、變更管控等多個(gè)方面,越來(lái)越系統(tǒng)。阿里的各個(gè)事業(yè)部,也紛紛成立專職的SRE安全生產(chǎn)團(tuán)隊(duì)。

 ????穩(wěn)定性目前不再局限于大促時(shí)的保障和平時(shí)的穩(wěn)定性輪值,越來(lái)越體系化。本文基于作者在業(yè)務(wù)團(tuán)隊(duì)工作過(guò)程中的沉淀,以及在盒馬兩年SRE的實(shí)戰(zhàn)經(jīng)驗(yàn),從穩(wěn)定性心態(tài)、監(jiān)控體系、故障應(yīng)急體系、資源體系、大促保障機(jī)制、日常保障機(jī)制等幾個(gè)層面,就如何做好SRE的工作進(jìn)行了分享。

前言

2013年,當(dāng)我第一次接觸穩(wěn)定性的時(shí)候,我是有些懵的,當(dāng)時(shí)完全不知道穩(wěn)定性是什么,也不清楚要做什么。在接下來(lái)的8年里,我先后在菜鳥(niǎo)、天貓、盒馬從事中間件、業(yè)務(wù)系統(tǒng)、架構(gòu)等方面的工作,期間一直穿插著負(fù)責(zé)穩(wěn)定性和大促的保障工作。我的心態(tài),大致經(jīng)歷過(guò)以下幾個(gè)階段:

  • low:完全不懂,覺(jué)得穩(wěn)定性就是做別人安排好的一些表格和梳理,不知道自己該做啥,穩(wěn)定性好low。
  • 煩:各種重復(fù)的會(huì)議,做好了是應(yīng)該的,做不好就是責(zé)任,很煩很焦慮。
  • 知道該做什么,但是累:各種報(bào)警和風(fēng)險(xiǎn),每天需要擔(dān)心,想要不管又過(guò)不了自己心里那關(guān);大促時(shí)候天天熬夜,各種壓測(cè),最終自己累得夠嗆。
  • 發(fā)現(xiàn)結(jié)合點(diǎn):發(fā)現(xiàn)在采用系統(tǒng)化思維之后,穩(wěn)定性與系統(tǒng)自身的結(jié)合變得緊密,穩(wěn)定性成為一種基線,找到了穩(wěn)定性中的關(guān)鍵點(diǎn)和重點(diǎn)。
  • 主動(dòng)驅(qū)動(dòng):發(fā)現(xiàn)線上業(yè)務(wù)和線下業(yè)務(wù)的穩(wěn)定性差別,理解并主動(dòng)調(diào)整在不同業(yè)務(wù)團(tuán)隊(duì)采取的穩(wěn)定性策略,探究在穩(wěn)定性中的自動(dòng)化、工具化,系統(tǒng)化建立穩(wěn)定性機(jī)制。
  • 形成體系:形成穩(wěn)定性體系化思考,明確穩(wěn)定性每一個(gè)點(diǎn)在業(yè)務(wù)團(tuán)隊(duì)大圖中的位置,探究系統(tǒng)彈性建設(shè)。

近兩年來(lái),穩(wěn)定性不再僅僅局限于之前的大促保障和平時(shí)的穩(wěn)定性輪值,越來(lái)越體系化,在保障體系、監(jiān)控體系、資源體系、質(zhì)量保障、變更管控等多個(gè)方面,越來(lái)越系統(tǒng)。阿里的各個(gè)事業(yè)部,也紛紛成立專職的SRE安全生產(chǎn)團(tuán)隊(duì)。然而仍有很多人和業(yè)務(wù)團(tuán)隊(duì),對(duì)于穩(wěn)定性的理解和認(rèn)知未形成一個(gè)體系化的機(jī)制,下面就結(jié)合我在業(yè)務(wù)團(tuán)隊(duì)系統(tǒng)穩(wěn)定性上的認(rèn)識(shí),以及最近2年在盒馬的一些思考,做一個(gè)分享。

什么是SRE

SRE(Site Reliability Engineering,站點(diǎn)可靠性/穩(wěn)定性工程師),與普通的開(kāi)發(fā)工程師(Dev)不同,也與傳統(tǒng)的運(yùn)維工程師(Ops)不同,SRE更接近是兩者的結(jié)合,也就是2008年末提出的一個(gè)概念:DevOps,這個(gè)概念最近也越來(lái)越流行起來(lái)。SRE模型是Google對(duì)Dev+Ops模型的一種實(shí)踐和拓展(可以參考《Google運(yùn)維解密》一書),SRE這個(gè)概念我比較喜歡,因?yàn)檫@個(gè)詞不簡(jiǎn)單是兩個(gè)概念的疊加,而是一種對(duì)系統(tǒng)穩(wěn)定性、高可用、團(tuán)隊(duì)持續(xù)迭代和持續(xù)建設(shè)的體系化解決方案。

那么要如何做好一個(gè)SRE呢,這是本文要探討的話題。

一 心態(tài)&態(tài)度

1 誰(shuí)適合做穩(wěn)定性?

就像前言里我做穩(wěn)定性前期的心態(tài)一樣,穩(wěn)定性最初上手,是提心吊膽、不得其門而入的,所以想要做好穩(wěn)定性,心態(tài)最重要,業(yè)務(wù)團(tuán)隊(duì)想要找到合適做穩(wěn)定性的人,態(tài)度也很重要。對(duì)于業(yè)務(wù)團(tuán)隊(duì),要如何挑選和培養(yǎng)團(tuán)隊(duì)中最合適做穩(wěn)定性的人呢?

必須選擇負(fù)責(zé)任的人

負(fù)責(zé)任是第一要素,主動(dòng)承擔(dān),對(duì)報(bào)警、工單、線上問(wèn)題、風(fēng)險(xiǎn)主動(dòng)響應(yīng),不怕吃苦;一個(gè)不負(fù)責(zé)任的人,遇到問(wèn)題與我無(wú)關(guān)的人,邊界感太強(qiáng)的人,難以做好穩(wěn)定性的工作。

原則上不要選擇新人

對(duì)于團(tuán)隊(duì)leader而言,“用新人做別人不愿意做的工作”,這個(gè)決定比較容易做出,但是這也相當(dāng)于是把團(tuán)隊(duì)的穩(wěn)定性放在了一定程度的風(fēng)險(xiǎn)上,用新人做穩(wěn)定性,其實(shí)只是用新人占了穩(wěn)定性的一個(gè)坑而已。新人不熟悉業(yè)務(wù),不了解上下游,最多只能憑借一腔熱血,對(duì)業(yè)務(wù)和系統(tǒng)感知不足,容易導(dǎo)致線上風(fēng)險(xiǎn)無(wú)法被快速發(fā)現(xiàn)、故障應(yīng)急無(wú)法迅速組織。

不要用過(guò)于"老實(shí)"的人

這里的“老實(shí)”的定義是不去主動(dòng)想優(yōu)化的辦法,不主動(dòng)出頭解決問(wèn)題,但是很能吃苦,任勞任怨,也很能忍耐系統(tǒng)的腐爛和低效;這樣的人平時(shí)很踏實(shí),用起來(lái)也順手,但是卻無(wú)法主動(dòng)提高系統(tǒng)穩(wěn)定性,有的時(shí)候反而會(huì)給系統(tǒng)穩(wěn)定性造成傷害(穩(wěn)定性就像大堤,不主動(dòng)升級(jí),就早晚會(huì)腐爛)。

2 業(yè)務(wù)團(tuán)隊(duì)如何支持穩(wěn)定性SRE人員

給資源

穩(wěn)定性從來(lái)不只是穩(wěn)定性負(fù)責(zé)人的事情,而是全團(tuán)隊(duì)的事情,穩(wěn)定性負(fù)責(zé)人要做的是建立機(jī)制,主動(dòng)承擔(dān),但是穩(wěn)定性意識(shí),要深入到團(tuán)隊(duì)所有人腦子里,穩(wěn)定性的事情,要能夠調(diào)動(dòng)團(tuán)隊(duì)一切資源參與。

給空間

做穩(wěn)定性的人,往往面臨一個(gè)尷尬場(chǎng)景:晉升困難,主要是因?yàn)樵诩夹g(shù)深度和業(yè)務(wù)價(jià)值兩個(gè)方面,很容易被挑戰(zhàn),對(duì)于業(yè)務(wù)團(tuán)隊(duì),一定要留給做穩(wěn)定性的人足夠的思考和上升空間,將穩(wěn)定性與團(tuán)隊(duì)的技術(shù)架構(gòu)升級(jí)、業(yè)務(wù)項(xiàng)目結(jié)合起來(lái),共同推動(dòng)。經(jīng)過(guò)集團(tuán)安全生產(chǎn)團(tuán)隊(duì)的推動(dòng),目前在阿里,SRE已經(jīng)有了自己專門的晉升體系。

區(qū)分責(zé)任

當(dāng)出現(xiàn)故障時(shí),區(qū)分清楚責(zé)任,到底是穩(wěn)定性工作沒(méi)有做到位,還是做到位了,但是團(tuán)隊(duì)同學(xué)疏忽了,還是說(shuō)只是單純的業(yè)務(wù)變化。

3 開(kāi)發(fā)和SRE的區(qū)別

都是做技術(shù)的,很多開(kāi)發(fā)剛剛轉(zhuǎn)向負(fù)責(zé)穩(wěn)定性時(shí),有些彎轉(zhuǎn)不過(guò)來(lái)。

舉個(gè)例子:對(duì)于“問(wèn)題”,傳統(tǒng)的開(kāi)發(fā)人員更多的傾向于是“bug/錯(cuò)誤”,而SRE傾向于是一種“風(fēng)險(xiǎn)/故障”,所以,兩者對(duì)“問(wèn)題”的處理方法是不一樣的:

  • 開(kāi)發(fā):了解業(yè)務(wù) -> 定位問(wèn)題 -> 排查問(wèn)題 -> 解決問(wèn)題
  • SRE:了解業(yè)務(wù)歸屬 -> 快速定位問(wèn)題范圍 -> 協(xié)調(diào)相關(guān)人投入排查 -> 評(píng)估影響面 -> 決策恢復(fù)手段

可見(jiàn),開(kāi)發(fā)人員面對(duì)問(wèn)題,會(huì)首先嘗試去探究根因,研究解決方案;而SRE人員首先是評(píng)估影響,快速定位,快速止損恢復(fù)。目標(biāo)和側(cè)重點(diǎn)的不同,造成了SRE思考問(wèn)題的特殊性。

所以,成為一名SRE,就一定要從態(tài)度和方式上進(jìn)行轉(zhuǎn)變,切換到一個(gè)“團(tuán)隊(duì)穩(wěn)定性負(fù)責(zé)人”的角度上去思考問(wèn)題。

4 SRE心態(tài)上的一些釋疑

下面這些疑惑,有很多是我最初做穩(wěn)定性的時(shí)候面臨的問(wèn)題,這里給大家分享和解釋一下我的解決方法:

疑惑1:做好了是應(yīng)該的,出了問(wèn)題就要負(fù)責(zé)任

不出問(wèn)題,就是穩(wěn)定性的基線,也是SRE的基本目標(biāo),所以這個(gè)話雖然殘酷,但是也不能說(shuō)錯(cuò),關(guān)鍵在于:你要如何去做。

如果抱著一個(gè)“背鍋” / “打雜”的思想去做穩(wěn)定性,那么“做好沒(méi)好處、做不好背鍋”這句話就會(huì)成為擊垮心理防線的最重的稻草。

應(yīng)對(duì)這種心態(tài)的最關(guān)鍵一點(diǎn),在于“做好”不出問(wèn)題這條基線,要從下面3個(gè)方面去做:

(1)及時(shí)、快速的響應(yīng)

這是最關(guān)鍵的一點(diǎn),作為一個(gè)SRE,能夠及時(shí)、快速的響應(yīng)是第一要?jiǎng)?wù),遇到報(bào)警、工單、線上問(wèn)題,能夠第一時(shí)間沖上去,不要去問(wèn)是不是自己的,而是要問(wèn)這個(gè)事情的影響是什么,有沒(méi)有坑,有沒(méi)有需要優(yōu)化的風(fēng)險(xiǎn)?這是對(duì)自己負(fù)責(zé);

同時(shí),快速的響應(yīng),還需要讓你的老板第一時(shí)間知悉,這個(gè)不是在老板面前愛(ài)表現(xiàn)拍馬屁,而是要讓你的老板第一時(shí)間了解風(fēng)險(xiǎn)的發(fā)生,一個(gè)好的團(tuán)隊(duì)leader,一定是對(duì)質(zhì)量、穩(wěn)定性和風(fēng)險(xiǎn)非常敏感的leader,所以,你要將風(fēng)險(xiǎn)第一時(shí)間反饋。這是對(duì)老板負(fù)責(zé)。

反饋也是有技巧的,不僅僅是告知這么簡(jiǎn)單,你需要快速的說(shuō)明以下幾個(gè)信息:

  • 盡快告知當(dāng)前告警已經(jīng)有人接手,是誰(shuí)接手的,表明問(wèn)題有人在處理了(這一步叫“響應(yīng)”)。
  • 組織人員,快速定位問(wèn)題,告知問(wèn)題初步定位原因。(這一步叫“定位”)
  • 初步影響范圍是什么?給出大致數(shù)據(jù)。(這一步方便后面做決策)
  • 有哪些需要老板、產(chǎn)品、業(yè)務(wù)方?jīng)Q策的?你的建議是什么?(這一步很關(guān)鍵,很多時(shí)候是:兩害相權(quán)取其輕,你的評(píng)估和建議,直接影響老板的決策)
  • 當(dāng)前進(jìn)展如何,是否已經(jīng)止血?(這一步是“恢復(fù)”,要給出“進(jìn)展”,讓決策者和業(yè)務(wù)方了解情況)

需要注意的是:如果你響應(yīng)了,但是沒(méi)有及時(shí)的同步出來(lái),等于沒(méi)響應(yīng),默默把事情做了,是開(kāi)發(fā)者(Dev)的思維,作為SRE,風(fēng)險(xiǎn)和進(jìn)展的及時(shí)組織和通報(bào),才是你應(yīng)該做的。

當(dāng)然,你的通報(bào)要注意控制范圍,最好優(yōu)先同步給你的主管和產(chǎn)品進(jìn)行評(píng)估,避免范圍過(guò)大引起恐慌,要根據(jù)事情的嚴(yán)重程度來(lái)共同決定,這是對(duì)團(tuán)隊(duì)負(fù)責(zé)。

及時(shí)、快速的響應(yīng),是保證不出問(wèn)題的關(guān)鍵,也是SRE人員贏得領(lǐng)導(dǎo)、業(yè)務(wù)方、產(chǎn)品和其他合作方信任的關(guān)鍵,贏得信任,是解決“做好沒(méi)好處、做不好背鍋”的基石。

(2)把機(jī)制建立好,切實(shí)落地

前面已經(jīng)說(shuō)過(guò),“穩(wěn)定性從來(lái)不只是穩(wěn)定性負(fù)責(zé)人的事情”,這一點(diǎn),要深入到團(tuán)隊(duì)每個(gè)人的心里,更要深入到SRE自己心里,一人抗下所有,不是英雄的行為,在SRE工作中,也不值得贊許,很多時(shí)候一人抗下所有只會(huì)讓事情變得更糟糕。

作為一個(gè)SRE,想做到“不出問(wèn)題”這個(gè)基線,關(guān)鍵還是要靠大家,如何靠大家呢?就是要落地一套穩(wěn)定性的機(jī)制體系,用機(jī)制的嚴(yán)格執(zhí)行來(lái)約束大家,這套機(jī)制也必須得到團(tuán)隊(duì)leader的全力支持,不然無(wú)法展開(kāi),這套機(jī)制包括:

  • 穩(wěn)定性意識(shí)
  • 日常值班機(jī)制
  • 報(bào)警響應(yīng)機(jī)制
  • 復(fù)盤機(jī)制
  • 故障演練機(jī)制
  • 故障獎(jiǎng)懲機(jī)制
  • 大促保障機(jī)制

比如,如果總是SRE人員去響應(yīng)報(bào)警和值班,就會(huì)非常疲憊勞累,人不可能永遠(yuǎn)關(guān)注報(bào)警,那怎么辦呢?可以從報(bào)警機(jī)制、自動(dòng)化、值班機(jī)制3個(gè)方面入手:

一方面,讓報(bào)警更加準(zhǔn)確和完善,減少誤報(bào)和漏報(bào),防止大家不必要的介入,另一方面產(chǎn)出自動(dòng)化機(jī)器人,自動(dòng)進(jìn)行一些機(jī)器重啟,工單查詢,問(wèn)題簡(jiǎn)單排查之類的工作,還有就是建立值班輪班,讓每個(gè)人都參與進(jìn)來(lái),既能讓大家熟悉業(yè)務(wù),又能提高每個(gè)人的穩(wěn)定性意識(shí)。

對(duì)于SRE來(lái)說(shuō),指定機(jī)制并且嚴(yán)格落地,比事必躬親更加重要。上面這些機(jī)制,將在后面的章節(jié)中詳細(xì)論述。

(3)主動(dòng)走到最前線

SRE工作,容易給人一種錯(cuò)覺(jué):“是做后勤保障的”,如果有這種思想,是一定做不好的,也會(huì)把“做好沒(méi)好處、做不好背鍋”這個(gè)疑惑無(wú)限放大。作為SRE人員,一定要主動(dòng)走到最前線,把責(zé)任擔(dān)起來(lái),主動(dòng)做以下幾個(gè)事情:

  • 梳理。主動(dòng)梳理團(tuán)隊(duì)的業(yè)務(wù)時(shí)序、核心鏈路流程、流量地圖、依賴風(fēng)險(xiǎn),通過(guò)這個(gè)過(guò)程明確鏈路風(fēng)險(xiǎn),流量水位,時(shí)序冗余;
  • 治理。主動(dòng)組織風(fēng)險(xiǎn)治理,將梳理出來(lái)的風(fēng)險(xiǎn),以專項(xiàng)的形式治理掉,防患于未然。
  • 演練。把風(fēng)險(xiǎn)化成攻擊,在沒(méi)有故障時(shí)制造一些可控的故障點(diǎn),通過(guò)演練來(lái)提高大家響應(yīng)的能力和對(duì)風(fēng)險(xiǎn)點(diǎn)的認(rèn)知。這一點(diǎn)將在后面詳述。
  • 值班。不能僅僅為了值班而值班,值班不止是解決問(wèn)題,還要能夠發(fā)現(xiàn)風(fēng)險(xiǎn),發(fā)現(xiàn)問(wèn)題之后,推動(dòng)上下游解決,減少值班中的重復(fù)問(wèn)題,才是目標(biāo)。
  • 報(bào)警。除了前面說(shuō)過(guò)的主動(dòng)響應(yīng)之外,還要經(jīng)常做報(bào)警保險(xiǎn)和機(jī)制調(diào)整,保證報(bào)警的準(zhǔn)確度和大家對(duì)報(bào)警的敏感度。同時(shí)也要做到不疏忽任何一個(gè)點(diǎn),因?yàn)槭韬龅狞c(diǎn),就可能導(dǎo)致問(wèn)題。

疑惑2:穩(wěn)定性總是做擦屁股的工作

這么想,是因?yàn)闆](méi)有看到穩(wěn)定性的前瞻性和價(jià)值,如果你走在系統(tǒng)的后面,你能看到的就只有系統(tǒng)的屁股,也只能做擦屁股的工作,如果你走到了系統(tǒng)的前面,你就能看到系統(tǒng)的方向,做的也就是探索性的工作。

所以,要讓穩(wěn)定性變成不“擦屁股”的工作,建議從下面2個(gè)方面思考:

(1)不能只做當(dāng)下,要看到未來(lái)的風(fēng)險(xiǎn),善于總結(jié)

暖曰:“ 王獨(dú)不聞魏文王之問(wèn)扁鵲耶?曰:‘子昆弟三人其孰最善為醫(yī)?’扁鵲曰:‘長(zhǎng)兄最善,中兄次之,扁鵲最為下?!何暮钤唬骸傻寐勑?’扁鵲曰:‘長(zhǎng)兄于病視神,未有形而除之,故名不出于家。中兄治病,其在毫毛,故名不出于閭。若扁鵲者,镵血脈,投毒藥,副肌膚,閑而名出聞?dòng)谥T侯?!何暮钤唬骸?。使管子行醫(yī)術(shù)以扁鵲之道,曰桓公幾能成其霸乎!’凡此者不病病,治之無(wú)名,使之無(wú)形,至功之成,其下謂之自然。故良醫(yī)化之,拙醫(yī)敗之,雖幸不死,創(chuàng)伸股維?!?/p>

——《鶡冠子·卷下·世賢第十六》

與扁鵲三兄弟一樣,如果想要讓穩(wěn)定性有價(jià)值,SRE同學(xué)一定不能站到系統(tǒng)的屁股后面等著擦屁股,必須走到前面,看到未來(lái)的風(fēng)險(xiǎn)。既要在發(fā)生問(wèn)題時(shí)快速解決問(wèn)題(做扁鵲),也要把風(fēng)險(xiǎn)歸納總結(jié),推動(dòng)解決(做二哥),還要在系統(tǒng)健康的時(shí)候評(píng)估鏈路,發(fā)現(xiàn)隱藏的問(wèn)題(做大哥)。

  1. 做扁鵲大哥:在系統(tǒng)健康時(shí)發(fā)現(xiàn)問(wèn)題
  2. 做扁鵲二哥:在系統(tǒng)有隱患時(shí)發(fā)現(xiàn)問(wèn)題
  3. 做扁鵲:在系統(tǒng)發(fā)生問(wèn)題時(shí)快速解決問(wèn)題

(2)自動(dòng)化、系統(tǒng)化、數(shù)據(jù)化

SRE不是在做一種收尾型、擦屁股的工作,而是在做一種探索性、前瞻性的工作,但SRE不可避免的,會(huì)面對(duì)很多重復(fù)性的工作,所以除了要在組織和機(jī)制上做好分工,讓恰當(dāng)?shù)娜俗銮‘?dāng)?shù)氖轮?,SRE人員要經(jīng)常思考產(chǎn)品的系統(tǒng)化和彈性化,要常常思考下面幾個(gè)問(wèn)題:

  • 常常思考產(chǎn)品和系統(tǒng)哪里有問(wèn)題,如何優(yōu)化,如何體系化?
  • 常常思考有沒(méi)有更好的辦法,有沒(méi)有提高效率的辦法?
  • 常常思考如何讓穩(wěn)定性本身更加有價(jià)值,有意義?

這3個(gè)問(wèn)題,我覺(jué)得可以從3個(gè)方面著手:

(1)自動(dòng)化

這里自動(dòng)化,包括自動(dòng)和自助2個(gè)部分。自動(dòng)是指能夠系統(tǒng)能夠?qū)σ恍┊惓W詣?dòng)恢復(fù)、自動(dòng)運(yùn)維,這部分,也可以叫做“彈性”,它一方面包括兜底、容災(zāi),另一方面也包括智能化、機(jī)器人和規(guī)則判斷。比如,對(duì)一些可能導(dǎo)致問(wèn)題的服務(wù)失敗,能夠自動(dòng)走兜底處理邏輯,能夠建立一個(gè)調(diào)度任務(wù),自動(dòng)對(duì)這部分?jǐn)?shù)據(jù)進(jìn)行調(diào)度處理;對(duì)一些機(jī)器的load飚高、服務(wù)抖動(dòng)等,能自動(dòng)重啟,自動(dòng)置換機(jī)器。

自助是讓你的客戶自己動(dòng)手,通過(guò)提供機(jī)器人,自動(dòng)識(shí)別訂單類型,自動(dòng)排查訂單狀態(tài)和節(jié)點(diǎn),自動(dòng)告知服務(wù)規(guī)則特征,自動(dòng)匹配問(wèn)題類型給出排查結(jié)果或排查過(guò)程等。

Google SRE設(shè)置了一個(gè)50%的上限值,要求SRE人員最多只在手工處理上花費(fèi)50%的時(shí)間,其他時(shí)間都用來(lái)編碼或者自動(dòng)化處理。這個(gè)可以供我們參考。

(2)系統(tǒng)化

系統(tǒng)化,可以體現(xiàn)在SRE工作的方方面面,我覺(jué)得,可以主要在“監(jiān)控、鏈路治理、演練” 3方面入手。這3個(gè)方面也正好對(duì)應(yīng)著“發(fā)現(xiàn)問(wèn)題、解決風(fēng)險(xiǎn)、因事修人” 3個(gè)核心。通過(guò)系統(tǒng)化,目的是讓我們SRE的工作形成體系,不再是一個(gè)個(gè)“點(diǎn)”的工作,而是能夠連成“面”,讓SRE工作不再局限于“后期保障/兜底保障”,而是能夠通過(guò)監(jiān)控體系、鏈路風(fēng)險(xiǎn)、演練體系發(fā)現(xiàn)問(wèn)題。

監(jiān)控、鏈路治理和演練的系統(tǒng)化,將在后面的章節(jié)中詳細(xì)探討。

(3)數(shù)據(jù)化

穩(wěn)定性工作,如果要拿到結(jié)果,做到可量化,可度量,就一定要在數(shù)據(jù)化上下功夫,這個(gè)數(shù)據(jù)化,包括如下幾個(gè)方面:

  • 數(shù)據(jù)驅(qū)動(dòng):包括日志標(biāo)準(zhǔn)化和錯(cuò)誤碼標(biāo)準(zhǔn)化,能夠?qū)θ罩竞湾e(cuò)誤碼反饋的情況進(jìn)行量化。
  • 數(shù)據(jù)對(duì)賬:包括上下游對(duì)賬、業(yè)務(wù)對(duì)賬,能夠通過(guò)對(duì)賬,保障域內(nèi)數(shù)據(jù)校準(zhǔn)。
  • 軌跡跟蹤:包括變更軌跡和數(shù)據(jù)軌跡,目標(biāo)是實(shí)現(xiàn)數(shù)據(jù)的可跟蹤,和變更的可回溯、可回滾。
  • 數(shù)據(jù)化運(yùn)營(yíng):主要是將穩(wěn)定性的指標(biāo)量化,比如工單解決時(shí)間、工單數(shù)、報(bào)警數(shù)、報(bào)警響應(yīng)時(shí)間、故障風(fēng)險(xiǎn)數(shù)、代碼CR量,變更灰度時(shí)長(zhǎng)等,通過(guò)量化指標(biāo),驅(qū)動(dòng)團(tuán)隊(duì)同學(xué)建立量化意識(shí),并且能給老板一份量化數(shù)據(jù)。

疑惑3:穩(wěn)定性似乎總是新人的垃圾場(chǎng)

雖然前文中說(shuō)過(guò),對(duì)于團(tuán)隊(duì)而言,最好不要讓新人從事穩(wěn)定性工作,但是穩(wěn)定性畢竟是很多希望“專注工作”的開(kāi)發(fā)人員不愿意做的,這個(gè)時(shí)候,團(tuán)隊(duì)leader很容易做出讓一個(gè)剛進(jìn)入團(tuán)隊(duì)的人從事穩(wěn)定性工作,畢竟其他核心開(kāi)發(fā)崗位的人似乎對(duì)團(tuán)隊(duì)更加重要,也不能調(diào)開(kāi)去從事這種“重要不緊急”的工作,不是嗎?

所以這個(gè)時(shí)候,新人被安排了穩(wěn)定性工作,也是敢怒不敢言,充滿抱怨的做已經(jīng)約定好的工作,或者渾渾噩噩的劃劃水,只在需要“應(yīng)急”的時(shí)候出現(xiàn)一下。

這個(gè)現(xiàn)狀要解決,就要涉及到一個(gè)人的“被認(rèn)可度”,也是我們經(jīng)常說(shuō)一個(gè)人的價(jià)值(在個(gè)人自我感知上,我們認(rèn)為這是“成就感”),很多人可能覺(jué)得一個(gè)人是因?yàn)橛袃r(jià)值,才會(huì)被認(rèn)可。而我認(rèn)為,一個(gè)人是因?yàn)楸徽J(rèn)可,才會(huì)覺(jué)得自己有價(jià)值,這樣才會(huì)產(chǎn)生做一件事情的成就感。

畢竟,能一開(kāi)始就找到自己喜歡并且愿意去創(chuàng)造價(jià)值的事情,是很少的。大多數(shù)人是在不情不愿的去做自己并不知道方向也無(wú)所謂成敗的事情。這個(gè)時(shí)候,是做的事情被認(rèn)可,讓自己感覺(jué)有價(jià)值,產(chǎn)生興趣,而不是反過(guò)來(lái),愛(ài)一行做一行是幸運(yùn)的,做一行愛(ài)一行是勇敢的。

那么對(duì)于穩(wěn)定性的新人,如果你“被安排”從事了穩(wěn)定性,那么首先要注意下面3個(gè)點(diǎn):

  • 對(duì)于穩(wěn)定性新人,一定要優(yōu)先考慮如何響應(yīng)問(wèn)題,而不是如何解決問(wèn)題。
  • 穩(wěn)定性從來(lái)都不是簡(jiǎn)單的,他的關(guān)鍵,是要做細(xì),這需要細(xì)心和耐心。
  • 穩(wěn)定性不是一個(gè)人的事情,要團(tuán)結(jié)團(tuán)隊(duì)內(nèi)的同學(xué),上下游的同學(xué)。

在有了上面3點(diǎn)心理建設(shè)之后,要開(kāi)始在自己的心里,構(gòu)建3張圖,3張表:

(1)3張圖

  • 系統(tǒng)間依賴圖(也包括業(yè)務(wù)時(shí)序,熟悉業(yè)務(wù)流程),參考5.4節(jié)系統(tǒng)依賴梳理方法。
  • 流量地圖(知道上下游系統(tǒng),團(tuán)隊(duì)內(nèi)系統(tǒng)的流量關(guān)系和流量水位,也同時(shí)把控系統(tǒng)架構(gòu)),參考5.3節(jié)流量地圖。
  • 系統(tǒng)保障圖(知道穩(wěn)定性保障的步驟和打法),參考5.2節(jié)作戰(zhàn)地圖。

(2)3張表

  • 機(jī)器資源表(做到占用多少資源,了然于胸,團(tuán)隊(duì)需要時(shí)能拿得出來(lái)),參考第4章資源管控。
  • 異常場(chǎng)景應(yīng)急表(出現(xiàn)問(wèn)題時(shí)知道怎么應(yīng)對(duì),演練知道哪里容易出問(wèn)題),參考3.2節(jié)故障場(chǎng)景梳理。
  • 業(yè)務(wù)近30日單量表(知道哪些業(yè)務(wù)影響大,哪些業(yè)務(wù)是重點(diǎn)),參考6.1節(jié)黃金鏈路治理。

心中3張圖,3張表,可以讓自己心中有數(shù),不會(huì)抓瞎,這就像林彪在《怎樣當(dāng)好一個(gè)師長(zhǎng)》一文中寫的那樣,心里要有個(gè)“活地圖”。這樣,一個(gè)新人才能快速熟悉起團(tuán)隊(duì)的業(yè)務(wù)和系統(tǒng),明白風(fēng)險(xiǎn)在哪里,要往哪里打。才能讓自己的工作變得被認(rèn)可,直擊痛點(diǎn),有價(jià)值。

二 監(jiān)控

再牛的SRE,也不可能對(duì)整個(gè)復(fù)雜系統(tǒng)了如指掌,也不可能做到對(duì)每次變更和發(fā)布,都在掌控之內(nèi),所以對(duì)于SRE人員來(lái)說(shuō),就必須要有一雙敏銳的“眼睛”,這雙“眼睛”,無(wú)論是要快速響應(yīng),還是要發(fā)現(xiàn)風(fēng)險(xiǎn),都能快速發(fā)現(xiàn)問(wèn)題,這就是“監(jiān)控”。

從運(yùn)維意義上講,“發(fā)現(xiàn)問(wèn)題”的描述 和 “監(jiān)控”的實(shí)現(xiàn)之間的對(duì)應(yīng)關(guān)系如下:

發(fā)現(xiàn)問(wèn)題的需求描述

監(jiān)控的實(shí)現(xiàn)

減少人力發(fā)現(xiàn)成本

自動(dòng)監(jiān)控、多種報(bào)警手段

及時(shí)、準(zhǔn)確

實(shí)時(shí)監(jiān)控、同比、環(huán)比、對(duì)賬

防止出錯(cuò)

減少誤報(bào)、同比環(huán)比、削峰

不遺漏

減少漏報(bào),多維監(jiān)控

直觀評(píng)估影響面

對(duì)賬&統(tǒng)計(jì)

1 監(jiān)控的5個(gè)維度

監(jiān)控的核心目標(biāo),是快速發(fā)現(xiàn)“異?!薄D侨绾味ㄎ划惓D?是不是低于我們?cè)O(shè)置的閾值的,都是異常?如果要是這么定義的話,你會(huì)發(fā)現(xiàn),報(bào)警非常多,應(yīng)接不暇。

要定義異常,就要考慮一個(gè)問(wèn)題:兼容系統(tǒng)的彈性,也就是系統(tǒng)要有一定的容錯(cuò)能力和自愈能力,不然就會(huì)非常脆弱和敏感。因此,我對(duì)“異常”的定義,是:在服務(wù)(體驗(yàn))、數(shù)據(jù)、資金3個(gè)方面中至少1個(gè)方面出現(xiàn)了損失 或 錯(cuò)誤。我認(rèn)為,一個(gè)系統(tǒng),如果在下面3個(gè)方面沒(méi)有出現(xiàn)問(wèn)題,那么即使中間過(guò)程出現(xiàn)了偏差,或者沒(méi)有按既定路徑達(dá)到最終結(jié)果,我也認(rèn)為沒(méi)有出現(xiàn)“異常”(這也是一種彈性):

  • 在服務(wù)方面沒(méi)有異常(我把服務(wù)錯(cuò)誤造成的用戶體驗(yàn),也認(rèn)為是服務(wù)異常)。
  • 在數(shù)據(jù)上沒(méi)有出錯(cuò)(我把訂單超時(shí)等體驗(yàn),也認(rèn)為是數(shù)據(jù)出現(xiàn)了偏差)。
  • 在資金上沒(méi)有資損(走了兜底邏輯,且按照業(yè)務(wù)可接受的預(yù)定范圍兜底造成的損失,不算資損,如兜底運(yùn)費(fèi))。

所以監(jiān)控一個(gè)系統(tǒng)是否具有健壯性(即:彈性(Resilient),這一點(diǎn)在后面【彈性建設(shè)】中詳細(xì)論述),就要從這3個(gè)最終目標(biāo)去實(shí)現(xiàn),為了達(dá)到這3個(gè)目標(biāo),我們可以從 系統(tǒng)自身、服務(wù)接口、業(yè)務(wù)特征、數(shù)據(jù)、資金對(duì)賬 5個(gè)維度保障監(jiān)控的準(zhǔn)確性。

下圖詳細(xì)解釋了這5個(gè)維度:

??

??

image

2 監(jiān)控大盤

建立監(jiān)控大盤的目的,是在大促等關(guān)鍵時(shí)期,在一張圖上能夠看到所有的關(guān)鍵指標(biāo)。所以大盤的key point應(yīng)該是“直觀簡(jiǎn)潔、指標(biāo)核心、集中聚焦”。在大盤上,我認(rèn)為要包括以下要素:

  • 最核心業(yè)務(wù)入口的qps、rt、錯(cuò)誤數(shù)、成功率,從這個(gè)維度可以看到入口流量的大小和相應(yīng)時(shí)間,成功率。這一點(diǎn),是在知道入口的健康情況。
  • 錯(cuò)誤碼top N,這個(gè)維度可以看到系統(tǒng)運(yùn)行過(guò)程中最核心的錯(cuò)誤,快速直觀定位問(wèn)題原因(這個(gè)需要打通上下游錯(cuò)誤碼透?jìng)?。這一點(diǎn),是在快速知曉問(wèn)題出在哪里。
  • 按業(yè)務(wù)維度(業(yè)務(wù)身份、行業(yè)、倉(cāng)儲(chǔ)、地區(qū)等,根據(jù)實(shí)際需要決定)分類統(tǒng)計(jì)計(jì)算的單量、或分鐘級(jí)下單數(shù)量,用于確定核心業(yè)務(wù)的單量趨勢(shì)。這一點(diǎn),只在知道自身業(yè)務(wù)的健康情況。
  • 核心下游依賴接口、tair、db的qps、rt、錯(cuò)誤數(shù)、成功率,需要注意的是,這個(gè)一般比較多,建議只放最核心、量最大的幾個(gè)。這一點(diǎn),是在知道下游依賴的健康情況。
  • 其他影響系統(tǒng)穩(wěn)定性的核心指標(biāo),如限單量,核心計(jì)數(shù)器等,根據(jù)各個(gè)團(tuán)隊(duì)的核心來(lái)決定。這一點(diǎn),是在個(gè)性化定義關(guān)鍵影響點(diǎn)的監(jiān)控情況。

3 避免監(jiān)控信息爆炸

在SRE的實(shí)踐過(guò)程中,為了保證監(jiān)控的全面,往往會(huì)增加很多報(bào)警項(xiàng),報(bào)警多了之后,就會(huì)像洪水一樣,漸漸的SRE對(duì)于監(jiān)控就不再敏感了,讓SRE比較煩惱的一個(gè)問(wèn)題,就是如何做監(jiān)控報(bào)警瘦身?

目前一般來(lái)說(shuō),我們的監(jiān)控報(bào)警至少包括2種方式:

  1. 推送到手機(jī)的報(bào)警,如電話、短信報(bào)警。
  2. 推送到釘釘?shù)膱?bào)警,如報(bào)警小助手、報(bào)警。

我個(gè)人的建議是:

謹(jǐn)慎使用電話報(bào)警

因?yàn)檫@會(huì)讓人非常疲憊,尤其是夜間,而且容易導(dǎo)致接收者將電話加入騷擾攔截,當(dāng)真正需要電話報(bào)警的時(shí)候,就會(huì)通知不到位;因此電話報(bào)警,一定要設(shè)置在不處理要死人的大面積/關(guān)鍵問(wèn)題上;

設(shè)置專門的唯一的釘釘報(bào)警群

一定一定要建設(shè)專門釘釘報(bào)警群,而且1個(gè)團(tuán)隊(duì)只能建1個(gè)群,中間可以用多個(gè)報(bào)警機(jī)器人進(jìn)行區(qū)分。報(bào)警群的目的只有1個(gè):讓所有的報(bào)警能夠在這個(gè)群里通知出來(lái)。只建一個(gè)群,是為了報(bào)警集中,且利于值班同學(xué)在報(bào)警群中集中響應(yīng)。

報(bào)警留底

所有報(bào)警,一定要能留底,也就是有地方可以查到歷史報(bào)警,所以建議所有報(bào)警,不管最終用什么方式通知,都要在釘釘報(bào)警群里同時(shí)通知一份,這樣大家只看這個(gè)群,也能查到歷史報(bào)警。在進(jìn)行復(fù)盤的時(shí)候,歷史報(bào)警作用非常關(guān)鍵,可以看到問(wèn)題發(fā)現(xiàn)時(shí)間,監(jiān)控遺漏,問(wèn)題恢復(fù)時(shí)間。

日常報(bào)警數(shù)量限制

一般來(lái)說(shuō),如果一段時(shí)間內(nèi),報(bào)警短信的數(shù)量超過(guò)99條,顯示了99+,大家就會(huì)失去查看報(bào)警的興趣,因此,一定要不斷調(diào)整報(bào)警的閾值,使其在業(yè)務(wù)正常的情況下,不會(huì)頻繁報(bào)警。在盒馬履約,我們基本可以做到24小時(shí)內(nèi),報(bào)警群內(nèi)的報(bào)警總數(shù),在不出故障/風(fēng)險(xiǎn)的情況下小于100條;這樣的好處是明顯的,因?yàn)槲覀兓旧峡梢宰龅?個(gè)小時(shí)以上才查看報(bào)警群,只要看到報(bào)警群的新增條數(shù)不多(比如只有10條左右),就能大致判斷過(guò)去的一個(gè)小時(shí)內(nèi),沒(méi)有嚴(yán)重的報(bào)警發(fā)生;減少報(bào)警的方法,可以采用如下手段:

  • 對(duì)于系統(tǒng)監(jiān)控報(bào)警,采用范圍報(bào)警,比如load,設(shè)置集群內(nèi)超過(guò)N %且機(jī)器數(shù)大于M的機(jī)器load都升高了才報(bào)警。畢竟對(duì)于一個(gè)集群而言,偶爾一臺(tái)機(jī)器的load抖動(dòng),是不需要響應(yīng)的。
  • 對(duì)于業(yè)務(wù)報(bào)警,一定要做好同比,不但要同比昨天,還要同比上周,通過(guò)對(duì)比確認(rèn),對(duì)于一些流量不是很大的業(yè)務(wù)來(lái)說(shuō),這一點(diǎn)尤其重要,有些時(shí)候錯(cuò)誤高,純粹是ERROR級(jí)別日志過(guò)度打印,所以只要相對(duì)于昨天和上周沒(méi)有明顯增加,就不用報(bào)警。
  • 對(duì)于qps、rt等服務(wù)報(bào)警,要注意持續(xù)性,一般來(lái)說(shuō),要考慮持續(xù)N分鐘,才需要報(bào)警,偶爾的抖動(dòng),是不用報(bào)警的。當(dāng)然,對(duì)于成功率下跌,異常數(shù)增加,一般要立即報(bào)出來(lái)。
  • 復(fù)合報(bào)警,比如一方面要持續(xù)N分鐘,一方面要同比昨天和上周,這樣來(lái)減少一些無(wú)需報(bào)警的情況。
  • 根據(jù)需要設(shè)置報(bào)警的閾值,避免設(shè)置>0就報(bào)警這種,這種報(bào)警沒(méi)有意義,一般來(lái)說(shuō),如果一個(gè)報(bào)警,連續(xù)重復(fù)報(bào)10條以上,都沒(méi)有處理,一般是這個(gè)報(bào)警的通知級(jí)別不夠,但是如果一個(gè)報(bào)警,重復(fù)10條以上,經(jīng)過(guò)處理人判斷,不需要處理,那就肯定是這個(gè)報(bào)警的閾值有問(wèn)題。

報(bào)警要能夠互補(bǔ)

我們經(jīng)常提到監(jiān)控的覆蓋率,但是覆蓋還是不夠的,因?yàn)楸O(jiān)控可能出現(xiàn)多種可能性的缺失(丟日志、通信異常等),因此要能夠從多個(gè)維度覆蓋,比如,除了要直接用指標(biāo)覆蓋qps,還需要通過(guò)日志來(lái)覆蓋一遍,除了要用日志覆蓋一些訂單趨勢(shì),還要從db統(tǒng)計(jì)上覆蓋一遍,這樣一個(gè)報(bào)警丟失,還至少有另外一個(gè)報(bào)警可以backup。

4 有效發(fā)現(xiàn)監(jiān)控問(wèn)題

作為一個(gè)SRE人員,很容易發(fā)現(xiàn)一個(gè)點(diǎn),如果有幾次線上問(wèn)題或報(bào)警響應(yīng)不及時(shí),就會(huì)被老板和同事質(zhì)疑。同樣的,如果每次線上問(wèn)題都能先于同事們發(fā)現(xiàn)和響應(yīng),就會(huì)贏得大家信任,那要如何做到先于大家發(fā)現(xiàn)呢?我的建議是:像刷抖音一樣刷監(jiān)控群和值班群。

一般來(lái)說(shuō),一個(gè)團(tuán)隊(duì)的穩(wěn)定性問(wèn)題在3類群里發(fā)現(xiàn):BU級(jí)消防群、團(tuán)隊(duì)的監(jiān)控報(bào)警群、業(yè)務(wù)值班群;所以沒(méi)有必要紅著眼睛盯著監(jiān)控大盤,也沒(méi)必要對(duì)每個(gè)報(bào)警都做的好像驚弓之鳥(niǎo),這樣很快自己就會(huì)疲憊厭煩。

我的經(jīng)驗(yàn)是按下面的步驟:

  • 首先當(dāng)然是要監(jiān)控治理,做到監(jiān)控準(zhǔn)確,全面,然后按照前面說(shuō)的,控制報(bào)警數(shù)量,集中報(bào)警群,做到可控、合理。
  • 然后像刷抖音一樣,隔三差五(一般至少1個(gè)小時(shí)要有一次)刷一下報(bào)警群,如果報(bào)警群里的新增條數(shù)在20條以內(nèi),問(wèn)題一般不大,刷一刷就行。
  • 如果突然一段時(shí)間內(nèi)報(bào)警陡增,就要看一下具體是什么問(wèn)題了,小問(wèn)題直接處理,大問(wèn)題分工組織協(xié)調(diào)。
  • 消防群中的問(wèn)題,要及時(shí)同步到團(tuán)隊(duì)中。
  • 值班群中的工單,需要關(guān)注,并有一個(gè)初步的判斷:是否是大面積出現(xiàn)的業(yè)務(wù)反饋,是否有擴(kuò)大的隱患。

要做到“有效”兩個(gè)字,SRE人員,需要有一個(gè)精確的判斷:當(dāng)前報(bào)警是否需要處理?當(dāng)前報(bào)警是否意味著問(wèn)題?當(dāng)前報(bào)警的影響范圍和涉及人員是誰(shuí)?當(dāng)前工單/問(wèn)題是否可能進(jìn)一步擴(kuò)大,不同的判斷,采取的行動(dòng)是不同的。

三 故障應(yīng)急

前面1.4.1中,有提到如何及時(shí)、快速的響應(yīng),這一點(diǎn)是作為SRE人員在故障應(yīng)急時(shí)的關(guān)鍵,也是平時(shí)處理線上問(wèn)題的關(guān)鍵。除此之外,在應(yīng)對(duì)故障方面,還有很多事情需要做。

1 系統(tǒng)可用性的定義

ufried 在2017年的經(jīng)典彈性設(shè)計(jì)PPT:《Resilient software design in a nutshell》中,對(duì)系統(tǒng)可用性的定義如下:

??

??

image

可見(jiàn),影響系統(tǒng)可用性的指標(biāo)包括2個(gè)方面:MTTF(不出故障的時(shí)間)和MTTR(出故障后的恢復(fù)時(shí)間),所以,要提高系統(tǒng)可用性,要從2個(gè)方面入手:

  1. 盡量增加無(wú)故障時(shí)間
  2. 盡量縮短出故障后的恢復(fù)時(shí)間

對(duì)故障應(yīng)急來(lái)說(shuō),也要從這兩個(gè)方面入手,首先要增加無(wú)故障時(shí)間,包括日常的風(fēng)險(xiǎn)發(fā)現(xiàn)和風(fēng)險(xiǎn)治理,借大促機(jī)會(huì)進(jìn)行的鏈路梳理和風(fēng)險(xiǎn)治理。只有不斷的發(fā)現(xiàn)風(fēng)險(xiǎn),治理風(fēng)險(xiǎn),才能防止系統(tǒng)穩(wěn)定性腐爛,才能增加無(wú)故障時(shí)間。

其次,要縮短出故障之后的恢復(fù)時(shí)間,這一點(diǎn)上,首先要把功夫花在平時(shí),防止出現(xiàn)故障時(shí)的慌張無(wú)助。平時(shí)的功夫,主要就是場(chǎng)景梳理和故障演練。

2 場(chǎng)景梳理

故障場(chǎng)景梳理,重點(diǎn)在于要把可能出現(xiàn)故障的核心場(chǎng)景、表現(xiàn)、定位方法、應(yīng)對(duì)策略梳理清楚,做到應(yīng)對(duì)人員爛熟于心,為演練、故障應(yīng)急提供腳本。

業(yè)務(wù)域

關(guān)鍵場(chǎng)景

問(wèn)題表現(xiàn)

問(wèn)題定位

止血措施

預(yù)案執(zhí)行

業(yè)務(wù)影響

上游影響

下游影響

數(shù)據(jù)影響(操作人)

服務(wù)側(cè)、業(yè)務(wù)側(cè)應(yīng)對(duì)策略

產(chǎn)品端應(yīng)對(duì)策略

相關(guān)域,要分別梳理上游和下游

服務(wù)場(chǎng)景,每行列出一個(gè)場(chǎng)景,要列出所有可能的場(chǎng)景

逐條列出當(dāng)前場(chǎng)景的所有可能表現(xiàn)

對(duì)應(yīng)前面的問(wèn)題表現(xiàn),列出每一個(gè)表現(xiàn)的定位方法和指標(biāo)

對(duì)每個(gè)定位的原因,給出快速止血的措施

逐條列出可以執(zhí)行的預(yù)案

逐條列出可能導(dǎo)致的業(yè)務(wù)影響和嚴(yán)重程度、范圍

逐條列出在上游的影響

通過(guò)這種程度的梳理,SRE以及其掌控的故障應(yīng)對(duì)人員,能夠快速的明確發(fā)生問(wèn)題的場(chǎng)景,以及場(chǎng)景下的影響、表現(xiàn)、定位方法、應(yīng)對(duì)策略。當(dāng)然,如果要把這些場(chǎng)景牢記,做到快速應(yīng)對(duì),就需要依靠:演練。

3 故障演練

演練對(duì)故障應(yīng)急無(wú)比重要,但是,我個(gè)人十分反對(duì)把演練作為解決一切問(wèn)題的手段。演練本身,應(yīng)該是驗(yàn)證可行性和增加成熟度的方式,只能錦上添花,而不能解決問(wèn)題,真正解決問(wèn)題的應(yīng)該是方案本身。

不要進(jìn)行無(wú)場(chǎng)景演練

有些演練,不設(shè)置場(chǎng)景,純粹考察大家的反應(yīng),這種演練,上有政策下有對(duì)策,表面上是在搞突然襲擊,其實(shí)已經(jīng)預(yù)設(shè)了時(shí)間段,預(yù)設(shè)了參加的域,不太可能做到完全毫無(wú)準(zhǔn)備,到了演練的時(shí)間點(diǎn),大家可以通過(guò)死盯著報(bào)警群,調(diào)整各種報(bào)警閾值的方式,更快的發(fā)現(xiàn)問(wèn)題;而且完全無(wú)場(chǎng)景的演練,一般只能演練如fullGC,線程池滿,機(jī)器load高,接口注入異常,對(duì)于一些數(shù)據(jù)錯(cuò)誤,消息丟失,異步任務(wù)積壓等場(chǎng)景,很難演練。

針對(duì)性的,我建議多進(jìn)行場(chǎng)景演練,各域要提前進(jìn)行3.2節(jié)這種詳細(xì)的場(chǎng)景梳理,通過(guò)場(chǎng)景攻擊,提高大家的應(yīng)對(duì)成熟度。事實(shí)上,現(xiàn)在橫向安全生產(chǎn)團(tuán)隊(duì)不對(duì)各個(gè)業(yè)務(wù)團(tuán)隊(duì)進(jìn)行場(chǎng)景攻擊的原因,也是因?yàn)闄M向安全生產(chǎn)團(tuán)隊(duì)自己也不熟悉各個(gè)業(yè)務(wù)團(tuán)隊(duì)的業(yè)務(wù)場(chǎng)景,這個(gè)就需要加強(qiáng)對(duì)業(yè)務(wù)場(chǎng)景攻擊方式的規(guī)范化,橫向安全生產(chǎn)團(tuán)隊(duì)也要加強(qiáng)機(jī)制建設(shè),讓縱向業(yè)務(wù)團(tuán)隊(duì)能夠產(chǎn)出場(chǎng)景,而不是每次都在線程池、fullGC、磁盤空間這些方面進(jìn)行攻擊。

不要無(wú)意義的提速演練

演練本身雖然確實(shí)有一個(gè)重要目的是提高應(yīng)對(duì)熟練度,但是不同的業(yè)務(wù)是有區(qū)別的,有些業(yè)務(wù)的發(fā)現(xiàn)本身,就不止1分鐘(比如某些單據(jù)積壓場(chǎng)景,消息消費(fèi)場(chǎng)景),這些場(chǎng)景,如果不參加評(píng)比,或者流于形式了,就會(huì)讓攻擊本身沒(méi)有意義。

針對(duì)性的,我建議各個(gè)業(yè)務(wù)根據(jù)各自的特點(diǎn),定制演練。如:普通電商業(yè)務(wù),關(guān)注下單成功率,有大量的實(shí)時(shí)同步調(diào)用;新零售業(yè)務(wù),關(guān)注單據(jù)履約效率,有大量的異步調(diào)度;每個(gè)業(yè)務(wù),根據(jù)實(shí)際場(chǎng)景和業(yè)務(wù)需要,制定“有各自特色的要求”的演練標(biāo)準(zhǔn),演練不一定要千篇一律,但是一定要達(dá)到業(yè)務(wù)的需求標(biāo)準(zhǔn)。這樣也更加有利于演練場(chǎng)景的落地,有利于藍(lán)軍針對(duì)性的制定攻擊策略。

各個(gè)SRE同學(xué),不管大的政策怎么樣,還是要關(guān)注團(tuán)隊(duì)內(nèi)部的場(chǎng)景本身:

  • 對(duì)于系統(tǒng)性故障注入(load、cpu、fullGC、線程池等),直接套用集團(tuán)的mk注入即可。
  • 對(duì)于服務(wù)型故障注入(下游異常、超時(shí),接口超時(shí)、限流),mk也有比較好的支持。
  • 對(duì)于訂單異常型故障注入,要自主開(kāi)發(fā)較好的錯(cuò)誤訂單生成工具,注入異常訂單,觸發(fā)故障報(bào)警。
  • 對(duì)于調(diào)度、積壓型故障注入,要關(guān)注schedulex、異步消息的故障注入方式,同時(shí)防止積壓阻塞正常訂單影響真正的線上業(yè)務(wù)。

同時(shí),在演練前后,要注意跟老板的溝通,要讓老板理解到你組織的演練的目標(biāo)和效果,不然就不是演習(xí),而是演戲了。要和老板的目標(biāo)契合,在演練過(guò)程中,通過(guò)演練提高大家對(duì)業(yè)務(wù)場(chǎng)景的理解深度和對(duì)問(wèn)題的應(yīng)對(duì)速度,增加大家的穩(wěn)定性意識(shí),達(dá)到“因事修人”的目的。

4 故障應(yīng)急過(guò)程

如果不幸真的產(chǎn)生了故障,作為SRE,要記得如下信息:

  • 冷靜。作為SRE,首先不能慌,沒(méi)有什么比盡快定位和止損更重要的事情。
  • 拉電話會(huì)議同步給大家信息。記住,在出現(xiàn)故障時(shí),沒(méi)什么比電話會(huì)議更加高效的溝通方式了。
  • 參考前面1.4.1節(jié)中的SRE人員快速響應(yīng)流程,在電話會(huì)議中同步給大家:
  • 盡快告知當(dāng)前告警已經(jīng)有人接手,是誰(shuí)接手的,表明問(wèn)題有人在處理了。(這一步叫“響應(yīng)”)
  • 組織人員,快速定位問(wèn)題,告知問(wèn)題初步定位原因(這一步叫“定位”)。
  • 初步影響范圍是什么?給出大致數(shù)據(jù)(這一步方便后面做決策)
  • 有哪些需要老板、產(chǎn)品、業(yè)務(wù)方?jīng)Q策的?你的建議是什么?(這一步很關(guān)鍵,很多時(shí)候是:兩害相權(quán)取其輕,你的評(píng)估和建議,直接影響老板的決策)
  • 當(dāng)前進(jìn)展如何,是否已經(jīng)止血?(這一步是“恢復(fù)”,要給出“進(jìn)展”,讓決策者和業(yè)務(wù)方了解情況)
  • 組織大家按照故障場(chǎng)景梳理的應(yīng)對(duì)方案進(jìn)行應(yīng)對(duì),如果沒(méi)有在故障場(chǎng)景列表中,一定要組織最熟練的人員進(jìn)行定位和恢復(fù)。
  • 故障過(guò)程中,對(duì)外通信要跟團(tuán)隊(duì)和老板統(tǒng)一評(píng)估過(guò)再說(shuō);
  • 處理故障過(guò)程中,要隨時(shí)組織同學(xué)們進(jìn)行影響數(shù)據(jù)撈取和評(píng)估,撈出來(lái)的數(shù)據(jù),要優(yōu)先跟老板、業(yè)務(wù)熟練的同學(xué)一起評(píng)估是否有錯(cuò)漏。
  • 在處理完故障后,要及時(shí)組織復(fù)盤(不管GOC是不是統(tǒng)一組織復(fù)盤,內(nèi)部都要更加深刻的復(fù)盤),復(fù)盤流程至少包括:詳細(xì)的時(shí)間線,詳細(xì)的原因,詳細(xì)的定位和解決方案,后續(xù)action和改進(jìn)措施,本次故障的處理結(jié)果。

我個(gè)人其實(shí)不太贊同預(yù)案自動(dòng)化和強(qiáng)運(yùn)營(yíng)的故障應(yīng)急方案,這一點(diǎn)也是給安全生產(chǎn)同學(xué)的建議,比如預(yù)案自動(dòng)化,有很強(qiáng)的局限性,只有在明確預(yù)案的執(zhí)行肯定不會(huì)有問(wèn)題、或者明顯有優(yōu)化作用的情況下,才能自動(dòng)執(zhí)行。否則都應(yīng)該有人為判斷。

強(qiáng)運(yùn)營(yíng)類的工作,會(huì)導(dǎo)致人走茶涼,比如GOC上自動(dòng)推送的預(yù)案,故障場(chǎng)景關(guān)聯(lián)的監(jiān)控這種,一方面應(yīng)該盡量減少?gòu)?qiáng)運(yùn)營(yíng)的工作,另一方面應(yīng)該定期組織維護(hù)一些必要預(yù)案。

5 與兄弟團(tuán)隊(duì)的關(guān)系

如果兄弟團(tuán)隊(duì)發(fā)生故障,一定注意:

  1. 不能嘲笑別人,看笑話。
  2. 不能當(dāng)沒(méi)事人,高高掛起,要檢查自身。
  3. 不能話說(shuō)的太滿,比如說(shuō)我肯定沒(méi)故障。

尤其是1和3,非常邪性,嘲笑別人的團(tuán)隊(duì),或者覺(jué)得自己萬(wàn)事大吉,很容易沾染故障。(其實(shí)本身是由科學(xué)依據(jù)的,嘲笑別人的,一般容易放松警惕)

4 資源管控

作為一個(gè)SRE,在資源管控領(lǐng)域,一定要保證自己域有足夠的機(jī)器,同時(shí)又不會(huì)浪費(fèi)太多。我個(gè)人的建議是,核心應(yīng)用,應(yīng)該控制load在1-1.5左右(日常峰值或A級(jí)活動(dòng)場(chǎng)景下),控制核心應(yīng)用在10個(gè)以內(nèi),非核心應(yīng)用,應(yīng)該控制load在1.5-2左右(日常峰值或A級(jí)活動(dòng)場(chǎng)景下)。目前集團(tuán)很多應(yīng)用load不到1,甚至只有0.幾,其實(shí)很浪費(fèi)的。

同時(shí),一個(gè)團(tuán)隊(duì)的SRE,至少隨時(shí)手上應(yīng)該握有20%左右的空余額度buffer,方便隨時(shí)擴(kuò)容,或者應(yīng)對(duì)新業(yè)務(wù)增長(zhǎng)。這些額度,目前按照集團(tuán)的預(yù)算策略,只要不真的擴(kuò)容上去,都是不收費(fèi)的,所以應(yīng)當(dāng)持有。

除了機(jī)器以外,tair、db、消息、精衛(wèi)等,也要如上操作,除了年初準(zhǔn)備好一年的預(yù)算,還要額外準(zhǔn)備20%左右的buffer。

SRE要自己梳理一份資源表,表中一方面要明確有哪些資源,余量多少,另一方面要明確資源的當(dāng)前水位、壓力。

比如機(jī)器資源,要關(guān)注當(dāng)前機(jī)器數(shù)、額度、load,如:

??

??

再比如對(duì)數(shù)據(jù)庫(kù)資源,要關(guān)注數(shù)據(jù)庫(kù)的配置、空間、日常和峰值qps、單均訪問(wèn)量(創(chuàng)建一個(gè)訂單,要讀和寫DB多少次,這一點(diǎn)很關(guān)鍵)。

??

??

【本文為51CTO專欄作者“阿里巴巴官方技術(shù)”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

??戳這里,看該作者更多好文??

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2025-02-06 11:44:56

2023-04-26 18:36:13

2022-12-13 07:32:46

2024-12-12 09:18:21

2022-05-19 08:47:31

ITCIO企業(yè)

2022-05-12 18:09:18

Kubernetes公有云

2023-06-30 08:43:36

2022-09-15 08:33:27

安全生產(chǎn)系統(tǒng)Review

2021-03-10 09:36:34

App開(kāi)發(fā)者崩潰率

2016-10-18 13:31:23

CronPaxos服務(wù)

2022-05-17 12:19:05

實(shí)踐性能運(yùn)營(yíng)

2020-07-28 08:07:14

ElasticSear

2011-08-01 11:03:15

2020-07-13 08:10:13

軟件設(shè)計(jì)系統(tǒng)

2011-12-21 09:46:46

程序員

2009-07-27 10:08:14

2011-07-28 16:06:13

MongoDBAutoShardinReplication

2015-03-05 09:31:32

無(wú)線組網(wǎng)/華三

2010-09-27 10:30:56

無(wú)線網(wǎng)絡(luò)穩(wěn)定性

2023-03-01 18:32:16

系統(tǒng)監(jiān)控數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)