以產(chǎn)品設(shè)計(jì)理念剖析企業(yè)建設(shè)故障自動(dòng)化處理方案的思路
人工處理告警,一直是運(yùn)維心中的痛。大年初一拜年、結(jié)婚、和老婆孩子外出過(guò)周末等美好時(shí)光,作為運(yùn)維的你,好像一直心系IT系統(tǒng),保持與筆記本的安全距離。
為什么這么多年過(guò)去了,還是這么苦逼,不是說(shuō)運(yùn)維行業(yè)轉(zhuǎn) AIOps了,我竟然還在手工處理告警,我該怎么辦?
今天就和大家聊聊實(shí)現(xiàn)故障自愈要攻克的3個(gè)問(wèn)題,以及獻(xiàn)上開(kāi)箱即用的方案。
1. 故障自愈的基本流程
自動(dòng)化的要點(diǎn)是什么?把人的經(jīng)驗(yàn)抽象、固化為程序處理,工業(yè)(第3次工業(yè)革命)或互聯(lián)網(wǎng)都是如此。
舉個(gè)例子,磁盤(pán)出現(xiàn)告警,運(yùn)維首先想到的是登陸服務(wù)器清理磁盤(pán)。
(人工處理告警的流程)
接下來(lái),我們拆解背后的邏輯。
1.1 抽象告警處理流程
1)拉取磁盤(pán)告警
2) 編寫(xiě)磁盤(pán)清理的腳本或作業(yè)任務(wù)
3) 設(shè)計(jì)模塊:把拉取到的磁盤(pán)告警,與調(diào)用腳本的模塊串起來(lái)
(故障自愈流程 簡(jiǎn)化版V1)
1.2 通過(guò)CMDB做資源清洗
不同模塊的磁盤(pán)清理方案不一樣,如何解決呢?
這時(shí)需要引入CMDB(設(shè)備、人、業(yè)務(wù)的映射關(guān)系),通過(guò)CMDB把IP清洗為模塊,這樣就解決了接入層 和 邏輯層、存儲(chǔ)層的告警使用對(duì)應(yīng)的磁盤(pán)清理方案。
(故障自愈流程 簡(jiǎn)化版V2)
1.3 對(duì)接企業(yè)內(nèi)部網(wǎng)關(guān)
故障自愈可能會(huì)處理失敗,這時(shí)需要通知用戶。故障自愈的處理方式除了調(diào)用作業(yè)外,還可能需要調(diào)用企業(yè)內(nèi)部的網(wǎng)關(guān),比如服務(wù)器重啟、申請(qǐng)服務(wù)器等。
使用PaaS層的ESB是一種解決思路,通過(guò)ESB封裝企業(yè)內(nèi)部網(wǎng)關(guān),解決權(quán)限校驗(yàn)、頻率控制、訪問(wèn)統(tǒng)計(jì)、路由分發(fā)以及自助接入等功能,不要直接調(diào)用裸接口了。
(故障自愈的通知方案)
經(jīng)過(guò)這一輪的探索,故障自愈的架構(gòu)就是下面這個(gè)樣子。
(故障自愈的流程)
1.4 對(duì)接企業(yè)內(nèi)部監(jiān)控產(chǎn)品
等等,好像還沒(méi)說(shuō)如何對(duì)接企業(yè)內(nèi)部的監(jiān)控產(chǎn)品,以Zabbix、Open-Falcon為例。
1.4.1 對(duì)接Zabbix
《當(dāng)Zabbix遇見(jiàn)故障自愈》介紹了拉取Zabbix告警的方案,通過(guò) ActionScript 調(diào)用腳本,把 Zabbix 告警推送至自愈的告警拉取模塊。
推送(或叫回調(diào))可以保證告警拉取的實(shí)時(shí)性。
(Zabbix推送告警示例)
(Zabbix調(diào)用推送告警的腳本)
對(duì)接Zabbix 的落地案例可以參考陳亮撰寫(xiě)的那些年我們想做的無(wú)人值守。
除Zabbix外,Open-Falcon在國(guó)內(nèi)的社區(qū)熱度也不錯(cuò),所以也介紹拉取其告警的方案。
1.4.2 對(duì)接Open-falcon
方案類似Zabbix,不過(guò)Open-falcon 直接提供了callback功能,簡(jiǎn)化了流程。
(Open-Falcon配置Callback地址)
收到了Open-Falcon 推送的告警后,解析對(duì)應(yīng)的字段即可。
如果企業(yè)內(nèi)部的CMDB以IP來(lái)標(biāo)識(shí)主機(jī),需要再做一層轉(zhuǎn)換,因?yàn)镺pen-Falcon 的資源標(biāo)識(shí)endpoint默認(rèn)是主機(jī)名,那么就需要使用CMDB的自動(dòng)發(fā)現(xiàn)功能自動(dòng)上報(bào)主機(jī)名,同時(shí)提供把主機(jī)名清洗為IP的功能。
下面是Nginx模塊磁盤(pán)告警的自愈示例,匹配Nginx模塊的磁盤(pán)清理套餐,清理Nginx模塊的日志文件,整個(gè)過(guò)程不到30秒。
(磁盤(pán)告警的自愈示例)
2. 故障自愈的兩面性
故障自動(dòng)處理就像一把刀,有其兩面性。
因?yàn)橐_保告警的真實(shí)性,一旦把假告警也自動(dòng)處理了,就很悲催了…
舉個(gè)例子。網(wǎng)絡(luò)波動(dòng),批量出現(xiàn)PING告警。實(shí)際上服務(wù)器運(yùn)行正常,這時(shí)你把服務(wù)器都重啟了,那就GG了。
如何解決呢?分析事物的規(guī)律。
批量出現(xiàn)告警,那可以在告警拉取模塊后面,增加一個(gè)收斂模塊。
比如,在X時(shí)間內(nèi)出現(xiàn)Y個(gè)告警,打電話給運(yùn)維審批。
X時(shí)間內(nèi)同一主機(jī)出現(xiàn)使用相同套餐的告警,則收斂時(shí)間窗口中后面的告警則跳過(guò),比如同時(shí)收到進(jìn)程告警 和 端口告警,就不用拉2次進(jìn)程了。
還有就是,原有監(jiān)控系統(tǒng)沒(méi)有收斂能力,那么可以借用這個(gè)功能來(lái)做告警匯總,因?yàn)槭諗窟壿嬕粯樱皇鞘諗康奶幚矸绞接胁町悺?/p>
3. 復(fù)雜告警的處理方案 - 組合套餐
上面提到的技術(shù)方案是用來(lái)處理邏輯簡(jiǎn)單的告警,那么故障替換這種復(fù)雜的場(chǎng)景如何解決呢?
舉個(gè)例子,A模塊是重要模塊,出現(xiàn)PING不可達(dá)告警,首先要校驗(yàn)A模塊是否真的故障,如果真的故障,接下來(lái)是從資源池中獲取備機(jī) … 故障替換等等,期間每個(gè)環(huán)節(jié)都有可能出錯(cuò),那就要考慮異常分支的場(chǎng)景。
樹(shù)結(jié)構(gòu)可以解決該問(wèn)題,二叉樹(shù)足以滿足大部分場(chǎng)景(成功、失敗兩種分支)。
( 組合套餐的示例)
上面這張圖,是一個(gè)自愈處理方案,可以稱之為組合套餐。
這里同時(shí)引入了原子的概念,通過(guò)組裝原子來(lái)滿足各種需求場(chǎng)景, 和資源編排說(shuō)的是同一個(gè)理兒。
注:如果你想使用三叉樹(shù),其實(shí)可以把組合套餐也作為一個(gè)原子套餐(節(jié)點(diǎn))。
4. 故障自愈的技術(shù)架構(gòu)
經(jīng)過(guò)前面對(duì)故障自愈的基本流程、故障自愈的兩面性、復(fù)雜的故障處理方案的層層梳理,我們有了一張故障自愈的技術(shù)架構(gòu)圖。
相信這次以經(jīng)行業(yè)驗(yàn)證的故障自愈做技術(shù)剖析,能對(duì)大家建設(shè)企業(yè)內(nèi)部的故障自動(dòng)處理方案提供參考思路。
5. 收尾
當(dāng) AIOps大行其道的時(shí)候,我們需要克制,優(yōu)先解決主要矛盾,而不是構(gòu)建高大上的空中樓閣。
如同產(chǎn)品路線圖,優(yōu)先解決可用性,接下來(lái)是體驗(yàn),最后才是可擴(kuò)展性和生態(tài),依次落地。
最后,希望廣大的運(yùn)維兄弟姐妹能盡早脫離原始運(yùn)維的苦海,抓住行業(yè)發(fā)展趨勢(shì),掌握核心技術(shù),在變革中實(shí)現(xiàn)自身價(jià)值!
-
故障處理
+關(guān)注
關(guān)注
2文章
21瀏覽量
9480 -
CMDB
+關(guān)注
關(guān)注
0文章
7瀏覽量
6735
原文標(biāo)題:故障自愈:解決運(yùn)維的主要矛盾才能AIOps
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論