龍 煒
(中國石油天然氣運輸公司 信息中心,北京 101320)
自動化運維工具在企業(yè)信息系統(tǒng)管理中的應用
龍 煒
(中國石油天然氣運輸公司 信息中心,北京 101320)
隨著企業(yè)信息化系統(tǒng)的不斷開發(fā)建設,服務器主機、中間件、數(shù)據庫、網絡設備數(shù)量呈逐年遞增趨勢,而商業(yè)定制化的網管系統(tǒng)已經無法滿足當前形勢下的企業(yè)信息系統(tǒng)運維需求。為此,利用Zabbix和Saltstack開源平臺構建了適合本企業(yè)現(xiàn)狀的自動化運維體系,實現(xiàn)了對服務器主機、Web應用的實時監(jiān)控和故障報警自愈處理,大大提高了運維效率,降低了運維人員的工作復雜度。
自動化運維;Zabbix;Saltstack;監(jiān)控報警
近年來,自動化運維工具作為IT基礎設施越來越受到業(yè)內的重視,國內外知名互聯(lián)網公司均推出適應自身發(fā)展需求的自動化集群管理平臺,使得一名運維人員平均可以管理上萬臺服務器。在國內傳統(tǒng)大型企業(yè)中,隨著信息化程度的不斷提高以及大規(guī)模集群的部署應用,運維人員大部分時間和精力都花在處理簡單且重復的問題上,由于故障預警機制不完善,往往是故障發(fā)生后才會進行處理,使運維人員的工作經常處于被動“救火”狀態(tài),不但事倍功半而且常會出現(xiàn)惡性連鎖反應[1]。為此,企業(yè)急需開展針對信息系統(tǒng)自動化運維工具的研究與應用工作,固化運維管理流程,減少重復勞動,提高工作的效率和規(guī)范性[2]。
中國石油天然氣運輸公司信息化建設在過去的五年中飛速發(fā)展,已建成以新疆和北京為核心節(jié)點,覆蓋全國31個省市自治區(qū)的60余條專線鏈路,同時在線運行的應用系統(tǒng)多達16類。運維人員不僅要時刻關注各系統(tǒng)的運行狀況,還要能夠在第一時間處理相應故障報警,這就對整個運維團隊的技術水平和工作效率帶來嚴峻考驗。為將技術人員從日常重復性勞動中解放出來,進而從事高附加值的創(chuàng)新性工作,尋找運維服務新的價值增長點,因此,建設一套實用的、切合自身需求的自動化運維體系顯得尤為必要。通過技術手段實現(xiàn)以機器自動化批量處理代替?zhèn)鹘y(tǒng)人工流程處理的模式,解決運維工作中的時效性和準確性問題,最終實現(xiàn)運維工作的精細化管理和專業(yè)化服務。
自動化運維體系分為監(jiān)測層面和控制層面。監(jiān)測層面以Zabbix[3]平臺為依托,通過讀取實時有效的運維基礎信息來提供高級運維支撐,實現(xiàn)基礎資源管理、信息指標管理、事件管理,進行常規(guī)巡檢、問題報警處理;控制層面以Saltstack[4]平臺為依托,通過編輯Python[5]和Shell[6]腳本參數(shù),實現(xiàn)腳本程序的智能化遠程調度運行。兩個層面相互結合成為一個有機整體,以滿足運維人員實際工作需要,確保能夠對日常運維工作進行自動化的閉環(huán)管理。
Zabbix和Saltstack平臺是整個體系的核心組件,因此在核心數(shù)據中心部署Zabbix主服務器用以接管系統(tǒng)所有客戶服務器的監(jiān)控信息和歷史數(shù)據,同時部署Saltstack主服務器用以集中控制各客戶服務器。在客戶服務器安裝Zabbix-Agent和Saltstack-Agent插件,作為分布式探頭。如圖1所示。
3.1 Zabbix平臺部署
Zabbix是一個分布式的具有系統(tǒng)監(jiān)視以及網絡監(jiān)視功能的企業(yè)級開源解決方案。其能夠監(jiān)視各種網絡參數(shù),保證服務器系統(tǒng)的安全運營,并提供靈活的通知機制以讓系統(tǒng)管理員快速定位、解決存在的各種問題。
Zabbix主服務器底層操作系統(tǒng)為CentOS 6.5,集成安裝LAMP軟件包,在此基礎之上導入Zabbix平臺PHP源碼,編譯生成Web管理界面??蛻舴掌鞣謩e安裝對應版本的Zabbix-Agent插件,并在插件配置文件中定義本服務器名稱以及Zabbix主服務器通信地址。
3.2 Saltstack平臺部署
SaltStack管理工具允許管理員對多個操作系統(tǒng)創(chuàng)建一個一致的管理系統(tǒng),能夠與特定的命令結合使用,遠程管理服務器或者VMware Vsphere環(huán)境。
Saltstack主服務器底層操作系統(tǒng)為CentOS 6.5,集成安裝epel源和Python依賴包,最后安裝salt-master服務??蛻舴掌鞣謩e安裝對應版本的Saltstack-Agent插件,并在插件配置文件中定義本服務器名稱以及Saltstack主服務器通信地址。
對Web服務器監(jiān)控主要是為了保證 Web 服務高可用性和高性能。監(jiān)控實現(xiàn)方式分為基于Web性能的監(jiān)控和基于Web進程的監(jiān)控兩種。
4.1 基于Web性能的監(jiān)控
Web性能所監(jiān)控的指標主要為頁面響應時間和頁面加載速度,通過該兩項指標能夠直觀反映出Web服務的整體運行趨勢,在一定程度上可以實現(xiàn)服務故障預警。
Web性能監(jiān)控設置方式如下:
(1)通過Zabbix平臺設置configure→Web→Create scenario,建立Web頁面監(jiān)控模板;
(2)在監(jiān)控變量中輸入Web登錄用戶的ID和Password字段,如下所示:
{user}=user
{password}=password
(3)定義模擬Web登錄的行為,包含URL字串和登錄回顯字符串。
在系統(tǒng)監(jiān)控展示界面可實時查看Web運行狀態(tài)。如圖2所示。
當Web頁面加載速度為0或者響應時間超過1 000 ms,且該狀態(tài)持續(xù)時間大于5 s時,即可判斷Web服務運行異常,同時Zabbix平臺彈出報警信息。
4.2 基于Web進程的監(jiān)控
Web進程所監(jiān)控的指標為HTTP Service可用性,通過此方式可實時判斷HTTP進程的運行狀況??赏ㄟ^Zabbix平臺內集成的監(jiān)控策略進行進程監(jiān)控:
(1)使用 net.tcp.listen[http]監(jiān)控服務器Http服務端口是否在監(jiān)聽狀態(tài),當返回值為0時,表示端口沒有在監(jiān)聽狀態(tài),即Web進程運行異常;當返回值為1時,表示端口在監(jiān)聽狀態(tài),即Web進程運行正常。
(2)使用 service_state[service]監(jiān)控與 Web 服務相關聯(lián)的關鍵服務狀態(tài),當返回值為0時,表示關鍵進程運行異常;當返回值為1時,表示關鍵進程運行正常。
4.3 Web服務故障自愈的實現(xiàn)
實現(xiàn)Web服務故障自愈需要將Zabbix和Saltstack進行動作關聯(lián),當Zabbix平臺檢測到Web服務異常時,立即調度Saltstack主服務器的腳本程序來執(zhí)行遠程命令,在第一時間重啟Web服務進程。通過該功能實現(xiàn)了應用服務無人值守故障處理。
動作關聯(lián)設置方法如下:
(1)在Zabbix平臺設置并定義動作名稱;
(2)設置Zabbix平臺觸發(fā)器判斷條件;
(3)調用Saltstack主服務器的特定目錄下的遠程控制Shell腳本程序。
遠程控制Shell腳本程序示例如下所示:
salt-N group1 cmd.run 'sudo /etc/init.d/httpd restart'
報警信息推送的時效性直接影響運維績效,在日常工作中運維人員無需時刻緊盯所有信息系統(tǒng)的運行狀況,一切事件信息均通過電子郵件和手持終端進行查看了解。
5.1 以EMAIL形式推送
通過關聯(lián)SMTP系統(tǒng),可以實現(xiàn)報警郵件的實時推送。郵件推送設置方法如下:
(1)設置/etc/mail.rc文件中的SMTP地址和登錄用戶;
(2)在/usr/lib/zabbix/alertscripts/目錄下創(chuàng)建郵件Shell腳本程序;
(3)在Zabbix警示媒介中調用郵件Shell腳本程序。
郵件Shell腳本程序如下所示:
sendmail echo "$3" | mail -s "$2" "$1"
5.2 以微信形式推送
通過綁定企業(yè)微信[7],可以實現(xiàn)報警信息在移動終端上的實時推送。微信推送設置方法如下:
(1)在/usr/lib/zabbix/alertscripts/目錄下創(chuàng)建微信Shell腳本程序;
(2)在Zabbix創(chuàng)建微信接收用戶,關聯(lián)收件人為微信接口Secret編碼字符串;
(3)在Zabbix警示媒介中調用微信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"
針對網絡規(guī)模的不斷擴大,以及服務器數(shù)量的不斷增加,信息系統(tǒng)運行監(jiān)控管理工作變得愈加重要。本文通過對Zabbix和Saltstack平臺的部署和深層次的應用實踐的展開,實現(xiàn)了對Web應用的智能化監(jiān)控和維護,解決了運維工作中諸多實際問題,為加強企業(yè)信息系統(tǒng)自動化、智能化提供了有效的支撐手段。
[1] 毛承國, 張衛(wèi)華, 張進鐸, 等. 大規(guī)模集群運維自動化的探索與實踐[J]. 信息安全與技術, 2014,5(2): 60-63.
[2] 王東紅, 魏廣朝. 信息系統(tǒng)運維基礎[M]. 北京: 北京理工大學出版社, 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自動化運維: 技術與最佳實踐[M]. 北京: 機械工業(yè)出版社, 2014.
[6] NEWHAM C. Learning the Bash Shell[M]. O′Reilly Media, 2005.
[7] 鐘志勇. 微信公眾平臺應用開發(fā)實戰(zhàn)[M]. 北京: 機械工業(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
龍煒.自動化運維工具在企業(yè)信息系統(tǒng)管理中的應用[J].微型機與應用,2017,36(5):102-104.
2016-10-13)
龍煒(1985-),男,本科,技術員,主要研究方向:石油企業(yè)網絡規(guī)劃、信息系統(tǒng)運維、信息安全。