龍 煒
(中國(guó)石油天然氣運(yùn)輸公司 信息中心,北京 101320)
自動(dòng)化運(yùn)維工具在企業(yè)信息系統(tǒng)管理中的應(yīng)用
龍 煒
(中國(guó)石油天然氣運(yùn)輸公司 信息中心,北京 101320)
隨著企業(yè)信息化系統(tǒng)的不斷開發(fā)建設(shè),服務(wù)器主機(jī)、中間件、數(shù)據(jù)庫、網(wǎng)絡(luò)設(shè)備數(shù)量呈逐年遞增趨勢(shì),而商業(yè)定制化的網(wǎng)管系統(tǒng)已經(jīng)無法滿足當(dāng)前形勢(shì)下的企業(yè)信息系統(tǒng)運(yùn)維需求。為此,利用Zabbix和Saltstack開源平臺(tái)構(gòu)建了適合本企業(yè)現(xiàn)狀的自動(dòng)化運(yùn)維體系,實(shí)現(xiàn)了對(duì)服務(wù)器主機(jī)、Web應(yīng)用的實(shí)時(shí)監(jiān)控和故障報(bào)警自愈處理,大大提高了運(yùn)維效率,降低了運(yùn)維人員的工作復(fù)雜度。
自動(dòng)化運(yùn)維;Zabbix;Saltstack;監(jiān)控報(bào)警
近年來,自動(dòng)化運(yùn)維工具作為IT基礎(chǔ)設(shè)施越來越受到業(yè)內(nèi)的重視,國(guó)內(nèi)外知名互聯(lián)網(wǎng)公司均推出適應(yīng)自身發(fā)展需求的自動(dòng)化集群管理平臺(tái),使得一名運(yùn)維人員平均可以管理上萬臺(tái)服務(wù)器。在國(guó)內(nèi)傳統(tǒng)大型企業(yè)中,隨著信息化程度的不斷提高以及大規(guī)模集群的部署應(yīng)用,運(yùn)維人員大部分時(shí)間和精力都花在處理簡(jiǎn)單且重復(fù)的問題上,由于故障預(yù)警機(jī)制不完善,往往是故障發(fā)生后才會(huì)進(jìn)行處理,使運(yùn)維人員的工作經(jīng)常處于被動(dòng)“救火”狀態(tài),不但事倍功半而且常會(huì)出現(xiàn)惡性連鎖反應(yīng)[1]。為此,企業(yè)急需開展針對(duì)信息系統(tǒng)自動(dòng)化運(yùn)維工具的研究與應(yīng)用工作,固化運(yùn)維管理流程,減少重復(fù)勞動(dòng),提高工作的效率和規(guī)范性[2]。
中國(guó)石油天然氣運(yùn)輸公司信息化建設(shè)在過去的五年中飛速發(fā)展,已建成以新疆和北京為核心節(jié)點(diǎn),覆蓋全國(guó)31個(gè)省市自治區(qū)的60余條專線鏈路,同時(shí)在線運(yùn)行的應(yīng)用系統(tǒng)多達(dá)16類。運(yùn)維人員不僅要時(shí)刻關(guān)注各系統(tǒng)的運(yùn)行狀況,還要能夠在第一時(shí)間處理相應(yīng)故障報(bào)警,這就對(duì)整個(gè)運(yùn)維團(tuán)隊(duì)的技術(shù)水平和工作效率帶來嚴(yán)峻考驗(yàn)。為將技術(shù)人員從日常重復(fù)性勞動(dòng)中解放出來,進(jìn)而從事高附加值的創(chuàng)新性工作,尋找運(yùn)維服務(wù)新的價(jià)值增長(zhǎng)點(diǎn),因此,建設(shè)一套實(shí)用的、切合自身需求的自動(dòng)化運(yùn)維體系顯得尤為必要。通過技術(shù)手段實(shí)現(xiàn)以機(jī)器自動(dòng)化批量處理代替?zhèn)鹘y(tǒng)人工流程處理的模式,解決運(yùn)維工作中的時(shí)效性和準(zhǔn)確性問題,最終實(shí)現(xiàn)運(yùn)維工作的精細(xì)化管理和專業(yè)化服務(wù)。
自動(dòng)化運(yùn)維體系分為監(jiān)測(cè)層面和控制層面。監(jiān)測(cè)層面以Zabbix[3]平臺(tái)為依托,通過讀取實(shí)時(shí)有效的運(yùn)維基礎(chǔ)信息來提供高級(jí)運(yùn)維支撐,實(shí)現(xiàn)基礎(chǔ)資源管理、信息指標(biāo)管理、事件管理,進(jìn)行常規(guī)巡檢、問題報(bào)警處理;控制層面以Saltstack[4]平臺(tái)為依托,通過編輯Python[5]和Shell[6]腳本參數(shù),實(shí)現(xiàn)腳本程序的智能化遠(yuǎn)程調(diào)度運(yùn)行。兩個(gè)層面相互結(jié)合成為一個(gè)有機(jī)整體,以滿足運(yùn)維人員實(shí)際工作需要,確保能夠?qū)θ粘_\(yùn)維工作進(jìn)行自動(dòng)化的閉環(huán)管理。
Zabbix和Saltstack平臺(tái)是整個(gè)體系的核心組件,因此在核心數(shù)據(jù)中心部署Zabbix主服務(wù)器用以接管系統(tǒng)所有客戶服務(wù)器的監(jiān)控信息和歷史數(shù)據(jù),同時(shí)部署Saltstack主服務(wù)器用以集中控制各客戶服務(wù)器。在客戶服務(wù)器安裝Zabbix-Agent和Saltstack-Agent插件,作為分布式探頭。如圖1所示。
3.1 Zabbix平臺(tái)部署
Zabbix是一個(gè)分布式的具有系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)開源解決方案。其能夠監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運(yùn)營(yíng),并提供靈活的通知機(jī)制以讓系統(tǒng)管理員快速定位、解決存在的各種問題。
Zabbix主服務(wù)器底層操作系統(tǒng)為CentOS 6.5,集成安裝LAMP軟件包,在此基礎(chǔ)之上導(dǎo)入Zabbix平臺(tái)PHP源碼,編譯生成Web管理界面??蛻舴?wù)器分別安裝對(duì)應(yīng)版本的Zabbix-Agent插件,并在插件配置文件中定義本服務(wù)器名稱以及Zabbix主服務(wù)器通信地址。
3.2 Saltstack平臺(tái)部署
SaltStack管理工具允許管理員對(duì)多個(gè)操作系統(tǒng)創(chuàng)建一個(gè)一致的管理系統(tǒng),能夠與特定的命令結(jié)合使用,遠(yuǎn)程管理服務(wù)器或者VMware Vsphere環(huán)境。
Saltstack主服務(wù)器底層操作系統(tǒng)為CentOS 6.5,集成安裝epel源和Python依賴包,最后安裝salt-master服務(wù)??蛻舴?wù)器分別安裝對(duì)應(yīng)版本的Saltstack-Agent插件,并在插件配置文件中定義本服務(wù)器名稱以及Saltstack主服務(wù)器通信地址。
對(duì)Web服務(wù)器監(jiān)控主要是為了保證 Web 服務(wù)高可用性和高性能。監(jiān)控實(shí)現(xiàn)方式分為基于Web性能的監(jiān)控和基于Web進(jìn)程的監(jiān)控兩種。
4.1 基于Web性能的監(jiān)控
Web性能所監(jiān)控的指標(biāo)主要為頁面響應(yīng)時(shí)間和頁面加載速度,通過該兩項(xiàng)指標(biāo)能夠直觀反映出Web服務(wù)的整體運(yùn)行趨勢(shì),在一定程度上可以實(shí)現(xiàn)服務(wù)故障預(yù)警。
Web性能監(jiān)控設(shè)置方式如下:
(1)通過Zabbix平臺(tái)設(shè)置configure→Web→Create scenario,建立Web頁面監(jiān)控模板;
(2)在監(jiān)控變量中輸入Web登錄用戶的ID和Password字段,如下所示:
{user}=user
{password}=password
(3)定義模擬Web登錄的行為,包含URL字串和登錄回顯字符串。
在系統(tǒng)監(jiān)控展示界面可實(shí)時(shí)查看Web運(yùn)行狀態(tài)。如圖2所示。
當(dāng)Web頁面加載速度為0或者響應(yīng)時(shí)間超過1 000 ms,且該狀態(tài)持續(xù)時(shí)間大于5 s時(shí),即可判斷Web服務(wù)運(yùn)行異常,同時(shí)Zabbix平臺(tái)彈出報(bào)警信息。
4.2 基于Web進(jìn)程的監(jiān)控
Web進(jìn)程所監(jiān)控的指標(biāo)為HTTP Service可用性,通過此方式可實(shí)時(shí)判斷HTTP進(jìn)程的運(yùn)行狀況??赏ㄟ^Zabbix平臺(tái)內(nèi)集成的監(jiān)控策略進(jìn)行進(jìn)程監(jiān)控:
(1)使用 net.tcp.listen[http]監(jiān)控服務(wù)器Http服務(wù)端口是否在監(jiān)聽狀態(tài),當(dāng)返回值為0時(shí),表示端口沒有在監(jiān)聽狀態(tài),即Web進(jìn)程運(yùn)行異常;當(dāng)返回值為1時(shí),表示端口在監(jiān)聽狀態(tài),即Web進(jìn)程運(yùn)行正常。
(2)使用 service_state[service]監(jiān)控與 Web 服務(wù)相關(guān)聯(lián)的關(guān)鍵服務(wù)狀態(tài),當(dāng)返回值為0時(shí),表示關(guān)鍵進(jìn)程運(yùn)行異常;當(dāng)返回值為1時(shí),表示關(guān)鍵進(jìn)程運(yùn)行正常。
4.3 Web服務(wù)故障自愈的實(shí)現(xiàn)
實(shí)現(xiàn)Web服務(wù)故障自愈需要將Zabbix和Saltstack進(jìn)行動(dòng)作關(guān)聯(lián),當(dāng)Zabbix平臺(tái)檢測(cè)到Web服務(wù)異常時(shí),立即調(diào)度Saltstack主服務(wù)器的腳本程序來執(zhí)行遠(yuǎn)程命令,在第一時(shí)間重啟Web服務(wù)進(jìn)程。通過該功能實(shí)現(xiàn)了應(yīng)用服務(wù)無人值守故障處理。
動(dòng)作關(guān)聯(lián)設(shè)置方法如下:
(1)在Zabbix平臺(tái)設(shè)置并定義動(dòng)作名稱;
(2)設(shè)置Zabbix平臺(tái)觸發(fā)器判斷條件;
(3)調(diào)用Saltstack主服務(wù)器的特定目錄下的遠(yuǎn)程控制Shell腳本程序。
遠(yuǎn)程控制Shell腳本程序示例如下所示:
salt-N group1 cmd.run 'sudo /etc/init.d/httpd restart'
報(bào)警信息推送的時(shí)效性直接影響運(yùn)維績(jī)效,在日常工作中運(yùn)維人員無需時(shí)刻緊盯所有信息系統(tǒng)的運(yùn)行狀況,一切事件信息均通過電子郵件和手持終端進(jìn)行查看了解。
5.1 以EMAIL形式推送
通過關(guān)聯(lián)SMTP系統(tǒng),可以實(shí)現(xiàn)報(bào)警郵件的實(shí)時(shí)推送。郵件推送設(shè)置方法如下:
(1)設(shè)置/etc/mail.rc文件中的SMTP地址和登錄用戶;
(2)在/usr/lib/zabbix/alertscripts/目錄下創(chuàng)建郵件Shell腳本程序;
(3)在Zabbix警示媒介中調(diào)用郵件Shell腳本程序。
郵件Shell腳本程序如下所示:
sendmail echo "$3" | mail -s "$2" "$1"
5.2 以微信形式推送
通過綁定企業(yè)微信[7],可以實(shí)現(xiàn)報(bào)警信息在移動(dòng)終端上的實(shí)時(shí)推送。微信推送設(shè)置方法如下:
(1)在/usr/lib/zabbix/alertscripts/目錄下創(chuàng)建微信Shell腳本程序;
(2)在Zabbix創(chuàng)建微信接收用戶,關(guān)聯(lián)收件人為微信接口Secret編碼字符串;
(3)在Zabbix警示媒介中調(diào)用微信Shell腳本程序。
微信Shell腳本程序部分代碼如下所示:
CropID=′wwe2910038f2f2d2c8′
Secret=′9jM1H-fPj1764T3Vg7RwlG_U0AC5xrdiYU7-qOLG3bUARs_L4_bl6bTIETmQZsZK′
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F" ′{print $4}′)
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
針對(duì)網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,以及服務(wù)器數(shù)量的不斷增加,信息系統(tǒng)運(yùn)行監(jiān)控管理工作變得愈加重要。本文通過對(duì)Zabbix和Saltstack平臺(tái)的部署和深層次的應(yīng)用實(shí)踐的展開,實(shí)現(xiàn)了對(duì)Web應(yīng)用的智能化監(jiān)控和維護(hù),解決了運(yùn)維工作中諸多實(shí)際問題,為加強(qiáng)企業(yè)信息系統(tǒng)自動(dòng)化、智能化提供了有效的支撐手段。
[1] 毛承國(guó), 張衛(wèi)華, 張進(jìn)鐸, 等. 大規(guī)模集群運(yùn)維自動(dòng)化的探索與實(shí)踐[J]. 信息安全與技術(shù), 2014,5(2): 60-63.
[2] 王東紅, 魏廣朝. 信息系統(tǒng)運(yùn)維基礎(chǔ)[M]. 北京: 北京理工大學(xué)出版社, 2012.
[3] VACCHE A D,LEE S K. Zabbix network monitoring essentials[M]. Packt Publishing, 2015.
[4] MYERS C. Learning SaltStack[M]. Packt Publishing, 2015.
[5] 劉天斯. Python自動(dòng)化運(yùn)維: 技術(shù)與最佳實(shí)踐[M]. 北京: 機(jī)械工業(yè)出版社, 2014.
[6] NEWHAM C. Learning the Bash Shell[M]. O′Reilly Media, 2005.
[7] 鐘志勇. 微信公眾平臺(tái)應(yīng)用開發(fā)實(shí)戰(zhàn)[M]. 北京: 機(jī)械工業(yè)出版社, 2013.
Application of automatic operation and maintenance tools in the management of enterprise information system
Long Wei
(Information Center, China Petroleum Transportation Corporation, Beijing 101320, China)
With the continuous development and construction of enterprise information system, the amount of server hosts, middlewares, databases, and network devices is increasing annually. However, the customized commercial network management system has been unable to meet the need of the management work in current situation. Therefore, an automatic operation and maintenance system suitable for the enterprise is built based on Zabbix and Saltstack open source software platforms, this system realizes the real-time monitoring and fault self-healing processing to server hosts and Web application. The automatic operation and maintenance system greatly improves the operation and maintenance efficiency, reduces the operational complexity of the operation and maintenance personnel.
automatic maintenance; Zabbix; Saltstack ;monitoring alarm
TP393.0
A
10.19358/j.issn.1674- 7720.2017.05.030
龍煒.自動(dòng)化運(yùn)維工具在企業(yè)信息系統(tǒng)管理中的應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(5):102-104.
2016-10-13)
龍煒(1985-),男,本科,技術(shù)員,主要研究方向:石油企業(yè)網(wǎng)絡(luò)規(guī)劃、信息系統(tǒng)運(yùn)維、信息安全。