從前l(fā)eader那邊學(xué)得瓷患,分享給更多的小伙伴
一、異乘懿可預(yù)警:
一個基本要求是竹祷,SDE應(yīng)該在業(yè)務(wù)方感知到問題之前發(fā)現(xiàn)系統(tǒng)異常,而不是被動等待用戶的投訴再層層傳導(dǎo)到SDE羊苟。
基于此要求塑陵,我們目前的有了各種層次維度的預(yù)警機制和系統(tǒng)、
如監(jiān)控CPU蜡励、Memory令花、IO、Network的zabbix凉倚,falcon系統(tǒng)彭则;業(yè)務(wù)指標監(jiān)控;監(jiān)控異常的ELK占遥。
業(yè)務(wù)異常比較容易忽略俯抖,這類異常一定是業(yè)務(wù)強相關(guān)的,頂多有系統(tǒng)工具幫助發(fā)出報警瓦胎,但是邏輯卻需要自己來寫芬萍。一般導(dǎo)致大面積問題的原因是我們認為不合理的情況尤揣,是小概率事件。類似的這類監(jiān)控非常重要柬祠,需要業(yè)務(wù)積累的人的意識北戏。
二、快速可恢復(fù):
假設(shè)第一點我們做到了漫蛔,系統(tǒng)遇到了問題嗜愈,SDE在業(yè)務(wù)方之前就得到了預(yù)警,系統(tǒng)有故障但是由于發(fā)現(xiàn)及時從時間上看還未對大面積用戶造成很壞的影響莽龟;就需要我們具備系統(tǒng)快速可恢復(fù)的能力蠕嫁,當前階段最重要的服務(wù)快速恢復(fù)可用狀態(tài),而不是找到具體原因或者追究責任毯盈。
對應(yīng)的預(yù)警分類我們有如擴容剃毒,回滾,降級等等方式搂赋,按照級別類型分而治之赘阀。
前期系統(tǒng)建設(shè)以及壓力情況還不涉及到擴容和降級的問題,但是回滾卻是常見的脑奠,不要認為回滾很容易基公,一團隊要有這個意識,一定需要培養(yǎng)宋欺;二技術(shù)層面依然有坑酌媒。如何做到系統(tǒng)的可回滾是我們進行大規(guī)模重構(gòu)升級時必須考慮的。當然回滾可退出的意識一定要貫徹整個研發(fā)過程中迄靠。
三、事后可分析:
假設(shè)問題發(fā)現(xiàn)了喇辽,服務(wù)馬上恢復(fù)了掌挚,接下了就是找到具體的原因,并且FIX掉菩咨;
這就要求系統(tǒng)層面要能夠盡可能的保留當時發(fā)生問題的環(huán)境吠式,要有歷史記錄,如CPU抽米、Memory特占、IO、Network等各種技術(shù)LOG數(shù)據(jù)云茸,業(yè)務(wù)LOG數(shù)據(jù)等是目;常見的問題如忘記Dump出來當時的Java內(nèi)存快照,導(dǎo)致很難查找原因标捺;最好開發(fā)出可以一鍵snapshot的腳本幫助解決重復(fù)勞動的事情懊纳。