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