SRE(Site Reliability Engineering)即站點可靠(kào)性工程,最初由Google公司提(tí)出,通過將開(kāi)發、運維等多方麵進行整合,協同推進係統可靠性,從而確保業務服務能夠持久(jiǔ)運行。
這是一種新的模式,與傳統的運維相比,更加強調服務於目標的多維(wéi)因素整合,通過開發自動化、智能化工具、實時監測等(děng)手段,從根本上解決係統穩定性和可(kě)靠性問題。
數字經濟(jì)的發展日新月異,雲計算(suàn)已經成為企轉(zhuǎn)數(shù)改的重(chóng)要(yào)支撐和推動力量。雲計算的優勢無須多講,隨之而至的管理問題亦令人酸爽,本文以雲計算平台管理為(wéi)目標進展案例性分析。
環境複雜:從雲主機、存儲、數據庫、中間件等主(zhǔ)要類型(xíng)向大數據、人工智能、容器、超(chāo)算、智算等(děng)服務及雲原生類產品(pǐn)衍生;其分散多樣性以及規模都在不斷增長。
可靠性要求高:作為應用係統的基礎設施,承載了大(dà)量的業務;運維的目標就是保障業務安全運行的連續性,杜絕係(xì)統崩潰或者服務不可用。
維護成本高:不斷演進的不僅僅(jǐn)是應用,各種雲(yún)平台版本和服務(wù)類型也(yě)需要相應提升。運維團隊及係統的知識、能力和經驗需要快(kuài)速更迭,才能滿足運維目標要求。
運維協同難:平台服務(wù)日益(yì)複雜的應用環(huán)境,支撐工作日益繁(fán)雜的知識領域,運維團隊日益壯大,運維協同日趨艱難。
《SRE Google運維解密》一書中給出了SRE的(de)經典核心原則,就不再贅述,本(běn)文以其為基(jī)礎,抽象了幾個核心關鍵點(diǎn)。
可靠(kào)性:可靠性應該(gāi)被賦予與安全等同的重要(yào)性,對於每一個(gè)服務的設計都是以可靠性為首要(yào)目標。
自動化:通過(guò)自動化工具和流程來(lái)替代手動操作,提高效率(lǜ)和準確性,降低(dī)人為錯誤和重複性工作的發生。
監控和告警:對(duì)係統(tǒng)進行全麵、實時的監控,通過監(jiān)測關鍵指標輔助SRE團隊快(kuài)速發現問題,降低故障的影響。
故障演(yǎn)練和容量規劃:通過分析曆史數(shù)據,預測係統的資源(yuán)需(xū)求,並進行容量規(guī)劃;避免係統出現資(zī)源瓶頸。
借鑒行業優秀實踐,並(bìng)結合雲計算業務場景與特性,可以進一步提煉為以下4個核心(xīn)原則,來組(zǔ)織日常運維工作。

可監控(kòng):通過采集業務指(zhǐ)標、日誌、性能、告警等數據,快速(sù)分析(xī)與定位問題;準確識別故障,並及時采取措施(shī)解決問題。
可預測:通過故障預測來提(tí)高係統的可靠性和穩定性。預(yù)測故障可以幫助SRE團隊比較早(zǎo)的了解到潛在的問(wèn)題(tí)並及時采取措施(shī)。SRE通常會(huì)通過數據分析、模擬測試來預測故障。
可協同:將運維操作手冊化(huà)、流程化,以(yǐ)便確保運維作業的一致性;提供線上協(xié)同工具(jù),當出現問(wèn)題時(shí)能(néng)夠快速召集運維專家(jiā)協同(tóng)處理問題。
自動化:自動化是SRE方法論的核心,SRE強調盡可能的自動化來提高(gāo)服(fú)務可靠(kào)性和生(shēng)產率。自動化可以減(jiǎn)少人為錯誤,提(tí)高一致性和重複性,並釋放人力資源進行更有價值的工作。
SRE的核(hé)心原則(zé)不僅(jǐn)是構建高可靠性、可擴展性和彈性的係統關鍵能力要素,也是塑造運(yùn)維工作方(fāng)式的重要基(jī)礎。通過遵循SRE的核心原則,能夠快速發現(xiàn)、定(dìng)位、響應和協(xié)同處理(lǐ)問題,同時也能夠主(zhǔ)動預防性(xìng)維護和持續優化,提升係統的運行質量和穩(wěn)定性。
SRE 的方(fāng)法固然重要,但沒有強有力的工具鏈來作為支(zhī)撐,在執(zhí)行麵將麵臨步步維艱,因此,建設一套適合自身業務服務(wù)場景的SRE工具鏈,是讓SRE實踐(jiàn)得以高效運轉的關鍵。
本文基於SRE 的核心原則,即在“事前”發現潛(qián)在問題,“事(shì)中”快速定位、處理問題,“事後”持續優化來規避(bì)問題。通過實時監控和分析數據,並采用自動化工具套(tào)件來減少手動操作,從(cóng)而縮短故障處理時間,排除潛在故障點,並持續優化服務穩定性。
在雲計算環(huán)境中,算力(lì)服務的運行監控至關重要。開發/運(yùn)維人員時常麵臨以下典型(xíng)的問題:
監控指標無體係,監控指標覆蓋不全,可配置化程度低。
告警風暴導致預警混亂,分不清需要處理的預警,甚至忽視重要預(yù)警。
告警被(bèi)動響應,無法及時、可信地推送關鍵告警和故障信息,導致故障處理不及(jí)時。
預警(jǐng)能力弱,無法提前對潛在的風險或(huò)異(yì)常(cháng)行為進行識別和(hé)報警。
SRE穩定性治理(lǐ)很重要的一部分就是預警治理,通過監控分層、統一預警配置、統一預警優化配置策略等措施來實(shí)現主(zhǔ)動預警。從規則驅動向內生(shēng)智能驅動轉變,提升(shēng)監控準確性,及時發現隱患。
建立一套全麵覆蓋的運維指標體係,通過指標分級的方式,提供豐富的業務監控指標,保障能夠及時的發(fā)現(xiàn)問題。

根據對大量指標(biāo)的(de)分析,定義一套全麵覆蓋(gài)的指標度量體係。並根據指標的權重、關係以及對應運維人員的(de)權責進行劃(huá)定。設計指標時采取場景分類的方法:
脫管、中斷類,定義為核心(xīn)指標;如設備(bèi)或(huò)者雲服務宕機(jī)、網絡不可達等。就是關鍵業務(wù)及服務指標異常代表業(yè)務不可用。通過抓主要矛盾的方法(fǎ),關注核心(xīn)路(lù)由器、IDC出口、資源池出入口(kǒu)等。
資源過載類,定義為關(guān)鍵指標;關鍵指標(biāo)代表業務(wù)運行狀態的健康度(dù),如受到網絡攻擊,對應的網絡流量、資源會(huì)發生指標的變(biàn)化、產生告(gào)警,通過這類指標快速發現問題。
運行質量類,定義為重要指標;重要指標代表業務運行質量狀態,如端口抖動、時延造成業(yè)務(wù)質(zhì)量不達標等,關注事件的關聯及變化。
告警的內容過於簡單,會讓處(chù)理告警的過程變成一個猜(cāi)迷遊戲,往(wǎng)往需(xū)要運維人員重新通過多種手段驗證與推測後,才能確定問題所在。這也是處理(lǐ)告警(jǐng)耗時最多(duō)的地方。
影響資(zī)源:單機、集群(qún)、資源池、相關(guān)依賴;
影響業(yè)務:核(hé)心業務(wù)、旁路(lù)業務、非(fēi)核心(xīn)業;
關聯trace:給出預警問題的一條trace鏈路,相當(dāng)於把現場還原;
關聯日誌:詳細的錯誤日誌link能定位到具體代碼和當時的堆(duī)棧信息(xī);
關聯告警:關聯的預警信息,方便快速判斷(duàn)是否由其它關聯問(wèn)題(tí)引起;
異常檢測:通過從推理速度、準確(què)性和參數調整的變異(yì)性等多個維度驗證,Matrix Profile算法能夠極大的(de)提高告警的準確度;
智能基線:兼顧多個(gè)指標波動變化,預測動態安全區間,準確發現異常。
從(cóng)底層物理機到雲主機、到中間件、到客戶業務的全鏈路端到端打通。實(shí)現業務指標全景監測,確保重大事(shì)件及時發現(xiàn)。

通(tōng)信保障屏,對(duì)各類(lèi)重要保(bǎo)障、風險操作、雲主機接入操作(zuò)、IDC機房入場事件進行過程追蹤發現隱患,提供及時預警手段(duàn)。
指(zhǐ)揮調度(dù)屏,當發生重大故障、應急事件時,指揮調度屏(píng)可以一鍵(jiàn)發起聯合作戰。
態勢感知屏,對(duì)資源池運(yùn)行質量進行數據分析,提前預測趨勢避免故障(zhàng)發生。
輿情(qíng)屏(píng),快速識別(bié)火災、交通事故、自然災害等熱(rè)點事件對資源池、業務、客戶的影響度,跟蹤隱患和提前(qián)預案處理。
核心指標屏,核心業務監測指標上屏,發現突發事件、重大故障、網絡(luò)攻擊、宕機、運維人員非法操作時;能夠(gòu)快速的通過大屏做出聲光(guāng)電告警。
SRE倡導通過預測來(lái)提高(gāo)係統的可靠性(xìng)和(hé)穩定性。預警診斷就是把運維專家腦海中的經驗轉化成規則+多種數據間的(de)潛在關(guān)聯(lián)性,通過一些智能化的分(fèn)析手段(duàn)變成結果輸出(chū)。
1) 多維度數據分布鑽取,輔助問題定位
將整個全鏈路的監控數據進行(háng)匯聚並統一呈現,出問題時能夠及時發現;同時(shí)通過(guò)多維度數據分布鑽(zuàn)取,還能輔助問題定位。

2) 基於專家經驗(yàn)構(gòu)建因(yīn)果圖,結合算法根因推斷
結合專家經驗和算法模型,通過構建因果圖實(shí)現根因(yīn)分析,從而識別故障的根本原因。以ECS為例,實例與雲服務(wù)器的網絡(luò)配置、端口(kǒu)通信、防火牆配置、安全組配置等多個環節相(xiàng)關聯。任意一個環節出現問題,都會導致ECS運行實例無法訪問。
ECS訪問異常關聯因素及可能導致的症狀;從客戶端到服務端的整個鏈路上,可(kě)能引發(fā)訪問異常的關聯因素如下:

收集其專家經驗和知識,建立因(yīn)果圖。這些因果關係可能是定性(xìng)的或定量的,以及直(zhí)接或間接的。ECS相關聯因素可能導致的症狀如下(xià):

目標ECS服務器內部環(huán)境可能因目(mù)標服(fú)務器欠費停機、CPU利用率過(guò)高、目標服務器內部配置等(děng)因素導致訪問(wèn)異常。對於ECS訪問異常問題,建立故障因果排查圖:

從(cóng)異常點出發,綜合時間序列相關性分析(xī)、剪技操作,並結合(hé)故障排查圖的(de)因果推斷等算法,輸出根因分析topr排序結果。

根據異常排障因果圖,並結合算法模型以及專家經驗和實際數據,逐步(bù)深入推斷和識別問題的根本原因(yīn)。需要注意的是,該過程中需要對算法模型和異常變量進行精細調整,以提高根本原(yuán)因診斷的準確(què)性和有效性。
當麵對重大故障、風險操作、應急事件時(shí),SRE團(tuán)隊是(shì)否能快速(sù)協(xié)作處(chù)理(lǐ)問題是至關重要的。傳統的(de)處理方法是召開網絡會議,拉(lā)取相關專家人(rén)員參與討論和解決問題。但這種方式存在很多弊端,如任務調度不(bú)清晰、無法進行實時跟蹤和反饋、操作步驟難以留存等等,這些將會影響(xiǎng)處理問題的效率。

協(xié)同作戰的主要思路是將底(dǐ)層數據匯總,通過指(zhǐ)揮調度快速解決問(wèn)題,同時(shí)利用投屏可視化和機器人(rén)入駐作戰室提醒等方式(shì)提高執行效率。
扁鵲見蔡桓公的故事家喻(yù)戶(hù)曉,名醫扁鵲的(de)高超醫術讓我們(men)驚歎。然而,從(cóng)運維的角度思考這個故事,會發現提前預(yù)防,總比(bǐ)治療(liáo)好!最好的措施不是在你生病後采(cǎi)取治療行動,而是(shì)在你身體(tǐ)健康的時候、根據你(nǐ)的日常生活習慣和體貌特征、體驗報告(gào),幫你未病先防(fáng),保護你免受(shòu)病痛困擾。

初始根據提供的指標評分模型,每天定時計算當天的均值、峰值和(hé)標準差,進行分數測算。

通(tōng)過定時任務每天收集日誌,提取日誌文件大小(xiǎo),日誌數量,異常日誌大小(xiǎo),異常日誌數量指標,並通過設定預設的閾值來計算得分(fèn);同時,會對異常日誌進行采樣,並進行聚類(lèi)分析,收集聚類結(jié)果。

除(chú)了(le)設定(dìng)閾值計算得分(fèn)之外,還可以對指標進行多維度(dù)分析,如均值、峰值、標準差(波動性)等,以挖掘更多異常情況。對於每(měi)個指標,係統會(huì)使用相應的算法計算(suàn)得分,異常的概率越大(dà)得分越低。

定期收集設備的存量告警,對於(yú)每個(gè)設(shè)備的告警,會根據(jù)告警(jǐng)等級和數量進(jìn)行扣分,並根據設備告警維度得分計算規則進行計(jì)算。配置設備的告警維度得分計算規則可以設置不同告警等級(jí)的權重值、數量閾值等參數(shù),從而得出每個設備告警得分。


提供健康度監測、性能監測、健康報告,通過展示各類資(zī)源的得(dé)分情(qíng)況,幫助用戶全麵了解運行狀況和健康情況(kuàng)。
