程聰 周品秀
摘要:本論文針對傳統(tǒng)的人工運(yùn)維方式的不足,提出依據(jù)現(xiàn)有的專家經(jīng)驗(yàn)和以往積累的已有經(jīng)結(jié)合,實(shí)現(xiàn)自動(dòng)化運(yùn)維的方式。本文首先介紹自動(dòng)化運(yùn)維的整體架構(gòu),通過zookeeper消息發(fā)送實(shí)現(xiàn)指標(biāo)采集入庫,發(fā)現(xiàn)指標(biāo)異常進(jìn)行告警分析,通過任務(wù)調(diào)度平臺(tái)調(diào)用executor執(zhí)行器進(jìn)行對應(yīng)的python腳本自動(dòng)化運(yùn)維診斷,提升運(yùn)維效率,降低成本。
關(guān)鍵詞:oracle;運(yùn)維自動(dòng)化;python;zookeeper
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)07-0190-02
1 引言
隨著互聯(lián)網(wǎng)行業(yè)的迅速發(fā)展,信息系統(tǒng)變得越來越復(fù)雜,設(shè)備數(shù)量急劇增長,相對應(yīng)的系統(tǒng)運(yùn)維難度也逐漸增加。依靠人工分析采集的指標(biāo)進(jìn)行系統(tǒng)診斷的傳統(tǒng)診斷方式占用的成本越來越高。
運(yùn)維自動(dòng)化具有一下優(yōu)點(diǎn):(1)專業(yè)性:行業(yè)具有20年工作經(jīng)驗(yàn)的專家提供的知識(shí)整合,分析流程,通過編碼方式實(shí)現(xiàn)存放在系統(tǒng)中,具有極強(qiáng)的專業(yè)指導(dǎo)。(2)自成長:運(yùn)維人員在掌握python編程的基礎(chǔ)上,學(xué)習(xí)腳本定義結(jié)構(gòu),可將運(yùn)維經(jīng)驗(yàn)積累到系統(tǒng)中,形成豐富的知識(shí)庫,在以后的自動(dòng)化運(yùn)維中發(fā)揮作用,同時(shí)降低對現(xiàn)有人員依賴。(3)自動(dòng)化:根據(jù)采集的指標(biāo)發(fā)現(xiàn)異常,結(jié)合現(xiàn)有的專家經(jīng)驗(yàn)和積累的已有經(jīng)驗(yàn),不需要手工干預(yù),系統(tǒng)自動(dòng)運(yùn)行分析診斷發(fā)現(xiàn)可能存在的問題,給出結(jié)論。
2 可行性分析
在Oracle數(shù)據(jù)庫日常維護(hù)的大部分工作是由檢查數(shù)據(jù)庫警告日志, 檢查數(shù)據(jù)運(yùn)行狀態(tài)、 表空間使用情況,處理數(shù)據(jù)庫無效對象和會(huì)話,檢查操作系統(tǒng)進(jìn)程等組成[1],通過腳本可實(shí)現(xiàn)大部分運(yùn)維工作,Python語言具有簡單,明確,入門快,可移植性和豐富的第三方庫等優(yōu)點(diǎn),因此腳本選用python語言。
3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
邏輯架構(gòu)整體設(shè)計(jì),主要是兩個(gè)模塊:統(tǒng)一采集監(jiān)控模塊,核心運(yùn)維模塊。
3.1 采集與告警設(shè)計(jì)
Zookeeper,簡稱zk,本身可作為消息通知,通過注冊(1)采集節(jié)點(diǎn);(2)返回內(nèi)容節(jié)點(diǎn)并監(jiān)聽節(jié)點(diǎn)變化,進(jìn)行前后端交互,前端將采集信息寫入zk,后端執(zhí)行采集程序,將結(jié)果入庫,并對超過指標(biāo)閾值的指標(biāo)進(jìn)行告警。用戶通過界面可查詢到某臺(tái)oracle數(shù)據(jù)庫實(shí)例當(dāng)前的告警信息,并且可以這些告警的指標(biāo)進(jìn)行相應(yīng)的運(yùn)維經(jīng)驗(yàn)自動(dòng)化分析。采集模塊:腳本通過sql,shell,python三種語言實(shí)現(xiàn)數(shù)據(jù)采集,前端使用java的quartz定時(shí)框架設(shè)置定時(shí)采集,通過任務(wù)調(diào)度平臺(tái)調(diào)用對應(yīng)的executor執(zhí)行采集任務(wù)。
3.2 運(yùn)維經(jīng)驗(yàn)調(diào)度設(shè)計(jì)
(1)簡單的腳本執(zhí)行:后臺(tái)java執(zhí)行對應(yīng)的python腳本,返回腳本執(zhí)行內(nèi)容。
(2)腳本深度執(zhí)行:對于有遞進(jìn)關(guān)系的腳本,后臺(tái)自動(dòng)逐層下鉆,自動(dòng)執(zhí)行,將腳本的執(zhí)行結(jié)果統(tǒng)一返回給前端,界面展示以樹狀結(jié)構(gòu)展示整個(gè)分析流程。
(3)協(xié)議約定:前端封裝固定參數(shù)傳入后臺(tái),例如監(jiān)控?cái)?shù)據(jù)庫信息,操作系統(tǒng)相關(guān)信息。后臺(tái)執(zhí)行腳本返回的的帶有標(biāo)簽的數(shù)據(jù)結(jié)構(gòu),例如標(biāo)題、段落、表格等。
3.3 自動(dòng)化運(yùn)維設(shè)計(jì)
(1)腳本(運(yùn)維經(jīng)驗(yàn))與指標(biāo)之間具有關(guān)聯(lián)關(guān)系,設(shè)置指標(biāo)對應(yīng)的閾值,當(dāng)采集過程中發(fā)現(xiàn)某個(gè)值非正常范圍,及產(chǎn)生告警信息,用戶點(diǎn)擊告警可進(jìn)行自動(dòng)化運(yùn)維分析診斷。
(2)運(yùn)維經(jīng)驗(yàn)的診斷過程,存在進(jìn)一步的深度分析,即腳本之間存在的遞進(jìn)關(guān)系。
(3)用戶自定義的腳本可以通過界面配置到腳本庫中,創(chuàng)建指標(biāo)和腳本即運(yùn)維經(jīng)驗(yàn)的關(guān)聯(lián)關(guān)系整體架構(gòu)圖見圖1。
4 結(jié)語
運(yùn)維知識(shí)自動(dòng)化系統(tǒng)相對傳統(tǒng)的人工運(yùn)維,有著顯著的優(yōu)勢,自動(dòng)化運(yùn)維簡化了運(yùn)維工作,提升了運(yùn)維效率,專家經(jīng)驗(yàn)深入分析系統(tǒng)可能存在的潛在問題。長期的運(yùn)維經(jīng)驗(yàn)幫助運(yùn)維團(tuán)隊(duì)提升整體實(shí)力同時(shí)降低對人員的依賴。
參考文獻(xiàn)
[1]郭吉平,張曉勇,王小星.監(jiān)控Oracle數(shù)據(jù)庫[J].電腦編程技巧與維護(hù),2009,(12):43-46.
[2]吳勇軍.IBM Websphere Application Server中間件運(yùn)維管理的優(yōu)化研究[D].華南理工大學(xué),2016.