IT運維人員之痛 如何通過自動化進行系統化解決?(1)
2016-02-20 19:34:11 來源: 韓曉光 StuQ 評論:0 點擊:
大家好,我是韓曉光,現在新華網從事運維工作。很高興與大家交流探討運維工作。
我今天分享的主題如下:
IT運維人員之痛
1.工作繁瑣:采購設備軟硬件,上架貼標簽,系統環境軟硬件部署,統計核實設備信息、復核系統變更情況,搬遷設備,調優系統……如此工作,日復一日,年復一年,會讓人感覺無始無終。
2.鴨梨山大:各種繁瑣工作交織在一塊,在有限時間、精力和繁重工作情況下,我們倍感鴨梨山大。尤其出現各種運維故障時,系統上線、調優、升級、恢復等特殊環境下,我們不僅僅是冷靜地快速解決問題,還要面對背后一幫大佬的監察盤問……
3.設備系統故障:設備系統,尤其是過保的硬件設備,很熱容易出故障。機房的溫度,濕度,業務的讀寫頻繁度,業務人員野蠻地使用,各種因素都會導致設備系統意外故障。意外就是意外,往往出現在不恰當的時間、地點。經常會讓運維人員莫名郁悶。
4.熬夜加班:有沒有別人節假日團圓happy,你卻在苦逼的加班熬夜。有沒有別人吃喝暢聊時,你卻在角落里苦逼的遠程vpn操作,有沒有三更半夜像特務一樣起床打開電腦操作,低聲細語的頻繁打電話?有沒有……?反正我都有……
5.IT消防員:我們就是IT消防員,我們的最高境界就是無我境界,大家都很舒服時,都想不起來我。一旦想起來我,可能IT環境出問題了......我們只有硬著頭皮去結尾,犧牲我一個,幸福一大家。
6.背黑鍋:運維人員有天生背黑鍋的宿命。當你找不出別人的問題時,那就只能背黑鍋,或許找出問題,也可能一起背黑鍋。任何行業工作都有其委屈尷尬的一面,背黑鍋是運維人員成熟歷練的必經之路。
運維體系是運維的基礎和核心。通過運維體系的構建及完善,使我們的運維做到穩定可靠、準確完備和規范科學。
如何解決運維之痛
從人、事、物、流程這四個方面便可以很好地將運維體系進行解構,它們彼此互相作用,共同構建了一個完整實用的運維體系。下面列舉了這四個方面各自的含義及相關內容。
1.人:例如完善崗位職責與職業發展、提高團隊技術水平、完善技能分享與培訓、完善團隊績效考核、規范工作行為規范等。目的是要建成一支工作高效、技術水平高、團結穩定、有職業素養的運維團隊。
2.事:例如做好日常基礎運維工作,保障好生產業務運行。不斷探索新的運維理念與技術,探索優化系統架構。具體可以分為幾大塊,例如運維流程管理,資源架構規劃,應急與故障處理,監控與優化,安全與防護,項目及日常工作等等。目的是要明白運維做什么正確的事,怎么正確地做事,做事有章法,穩定高效能。
3.物:主要是如何管理好系統運維所涉及的各種資源。例如機房環境、辦公設備、服務器、網絡設備、操作系統、應用軟件、工具等各種軟硬件資源。目的要使各類資源配置管理妥當,清楚資源屬性,知道從哪來,現在哪,要去哪。使得物盡其用,物有所值,安置妥當。
4.流程標準:運用流程標準將上述要素(人、事、物)有機地結合,有序科學地流轉、高效穩定地運行。例如資源規劃與采購,各種標準規范、項目規范、軟硬件配置部署規范、安全制度、工作交接等等。
通過實施運維自動化,能夠很好貫穿人、事、物、流程標準。運維體系的好壞影響運維自動化的實施執行,反過來,運維自動化也會推動運維體系的建設。
面對成百上千的機器,人工手工運維顯然是不現實的,這個時候就凸顯自動化運維的優勢了。
自動化運維分擔了我們很多的工作壓力,將重復、乏味的工作交給程序去做。既高效又避免人為錯誤,幫助我們科學有序的管理我們的設備,系統及業務。
標準規范與自動化是當前主流運維成熟進階的必經之路。流程標準很重要,必須要執行與持續完善,這是運維自動化以及公司運營一切的基礎。看過復雜的航空線路圖,航海線路圖,鐵路交通圖吧!是不是會感嘆標準化與自動化的重要性。運維工作也是一樣的道理。
流程規范是最佳實踐方法論,但不是目的。我們沒必要糾結于高大全的標準與自動化,我們需要從我們運維需求出發,痛點出發,持續改進與解決運維實際問題。
怎么運用好自動化,提升運維水平:制度流程戰略 + 自動化戰術+工作責任心素質。
干運維工作,需要很多技能知識,十八班武藝樣樣都得會。精不精,修行在個人。
做運維工作,實施運維自動化,需要具有很多技術、管理、實踐儲備。
1.由開發主導運維自動化系統
通常由開發人員主導運維自動化系統研發,貌似順理成章,但事實情況,很多開發人員可能并不了解運維工作情況,對運維架構體系并不清楚。開發人員他們開發的系統往往帶有開發人員的很多主觀意識。這就造成運維自動化系統并不很適合運維人員日常使用與維護。
2.由運維主導運維自動化系統
運維人員懂運維需求,是應該的,也是職業素養必須具備的。但運維人員往往不懂開發,甚至很多運維人員對shell/perl/python不熟悉,更別說開發一個系統了。自己不懂開發,那么在主導運維自動化系統中就會感覺坡腳乏力。
說到這里,或許有人會說,最好有這么一個團隊,干運維又會開發。這的確是最好不過了,但這種復合人才總是稀缺緊俏的。
正如很多運維團隊,我們也缺乏系統開發經驗。參與運維自動化的同事有:呂四海、彭燃、史影、高浩天、童寧、任勇斌、王天維,還有我韓曉光。
運維不懂開發?我們是這么克服解決的。
我們的路子:
1.自學成才,一切問題的解決首先要靠自己。
2.有目的,有分工的研究學習。比如有的研究python,有的研究Web前端,有的研究數據庫設計。
3.互相分享知識經驗,互相幫助協作。
4.學習研究外界同行、大師的經驗。
5.參加一些大會,沙龍論壇。了解發展大勢。
6.知易行難,知行合一。知道是一回事,更需要邁開步子,逐步執行下去!
通過運維開發,我們獲得的成果與經驗:
1.通過該項目梳理了現有運維資源情況,更加準確掌握了系統資源情況。
2.通過該項目不斷規范了系統管理。使運維工作逐步準確規范化、體系流程化、高效智能化。
3.運維工作從人工高密度轉型到自動化技術高密度,緊跟當前IT運維開發的發展大趨勢。
4.運維人員從原有的基礎系統運維崗位逐步轉型為開發運維復合型人才,職業發展空間更大。
5.探索開拓了運維更大的能動性,逐步建立自動化運維體系,更好地支撐保障業務生產運行。
and so on…
本解決方案立足從三大維度構建,分別是IT運維流程、IT監控平臺整合、IT運維自動化。這三大維度主要具有如下幾大功能模塊。
IT運維流程:資產管理、知識庫管理、安全管理、事件管理、日常事項管理。
IT監控平臺整合:監控報警管理、日志管理、性能管理、報表管理。
IT運維自動化:應用管理、配置管理、程序運行管理。
基于ITIL理論的事件流程圖設計
系統功能框圖
本解決方案使用的開發語言及工具:
◆后端及系統客戶端開發主要通過Python、Shell等程序語言實現。
◆信息采集寫入MySQL數據庫。
◆前端Web展示以及與后臺數據層、應用層的邏輯交互通過Django框架實現。
◆界面修飾美化使用Bootstrap等框架工具。
如圖所示在全局查詢里,可以輸入任意要查詢的關鍵字。該模塊主要是基于數據庫表的查詢,而不是對于日志的查詢。該模塊會基于關鍵字,模糊遍歷所有的關鍵庫表,然后將查詢結果自動組織后再反饋到Web展示。
如下圖所示是系統性能信息圖表。該模塊主要使用echarts前端繪圖工具,后端邏輯處理使用了django restframework框架模塊進行信息序列化。性能數據來自系統客戶端采集入庫信息。
如圖所示是基于ELK深度定制的日志監控模塊。基于各類日志信息進行監控與統計。
如圖所示是系統服務狀態監控信息。由client客戶端抓取系統服務狀態信息,然后反饋給服務器端進行統計與展示。
在各種監控配置方面,一方面采取服務器端主動抓取監控信息(如上述的網址監控),另一方面,由客戶端程序主動抓取當前系統的監控信息(如系統賬號、文件系統、配置、服務等),并通過C/S架構發(數據以json格式為主)給服務器端接收。
如圖所示是自動化管理中的系統自動部署模塊,具有批量查詢IP使用情況、派發客戶端、部署與配置系統等功能。自動化部署主要基于kvm、Saltstack等開發而實現。
如圖所示是事件信息模塊。本模塊基于ITIL流程理念。系統平臺一些重要的事件信息會自動觸發事件流程,并需要人為交互去響應處理不同類型級別的事件。對于不同類型的事件,在處理時,所觸發的流程也有所不同。
這是系統服務狀態監控與展示模塊。這是怎么開發出來的呢?
在django中,使用的是MVC開發模式。如圖所示,在url匹配中,我們基于app模塊對url路徑分門別類進行邏輯處理與響應。
1.首先通過前端頁面,根據指定的url的name名匹配找到url鏈接
2.在urls.py,根據url匹配鏈接名字,找到后臺邏輯處理層(這里通過Django CBV方式實現)
3.邏輯處理結果將數據集提交渲染給template模板
4.模板(html)根據數據集內容,進行加工渲染,也就是我們最后可以看到的對號、叉號。
在后臺,系統服務狀態信息獲取方面,采用的CS方式。
1.在終端系統中部署client程序,定期采集信息。
2.采集完畢的信息,通過socket傳輸給Sever服務器端 ,進行加工處理、入庫表。
相關代碼如圖所示。
想了解IT運維更多內容,請參閱:《系統運維全面解析:技術、管理與實踐》
空間門戶: http://xhnetops.home.news.cn/
【編輯推薦】
