999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Zabbix的網絡監控系統

2018-01-23 07:07:11譚海波王衛東李曉風
計算機技術與發展 2018年1期
關鍵詞:程序系統

趙 哲,譚海波,趙 赫,王衛東,李曉風

(1.中國科學院安徽光學精密機械研究所,安徽 合肥 230031;2.中國科學技術大學,安徽 合肥 230026)

0 引 言

隨著信息技術的不斷發展,要處理的信息量不斷增長,應用的復雜度也在不斷增加。越來越多的互聯網企業采用分布式服務器架構,不同的服務器提供不同服務,或者多臺服務器進行負載均衡,以提高系統的運行速度,為用戶提供更好的體驗[1-2]。然而隨著服務器數量的增加,系統發生故障的可能性隨之增加。在系統發生故障時,人工定位發生故障的機器是不大現實的[3]。如何設計一個安全、可靠、靈活的網絡監控系統,在系統發生故障時,能夠準確地將服務器地址、故障信息發送給系統的管理人員,是大多數互聯網企業都會面臨的問題[4]。

成熟的系統監控解決方案有很多,但商用的服務器監控軟件往往價格昂貴,并且靈活性不夠高。開源軟件具有很好的社區支持,且插件豐富,可擴展性強,企業只需在開源軟件的基礎上進行簡單配置或二次開發即可滿足自身需求,可節省大量的人力和物力。企業常用的開源監控軟件有Zabbix[5]、Nagios[6]、Cacti[7]等。與其他監控系統相比,Zabbix具有更加詳細的開發文檔和更好的中文支持。因此文中在開源Zabbix系統的基礎上設計監控系統,使用Zabbix對服務器主機的軟硬件參數進行監控,然后開發獨立模塊對應用程序運行過程中可能發生的故障進行監控。

1 系統分析

1.1 服務器故障監控模快

服務器監控包括服務器主機的CPU、內存、磁盤等硬件參數和IIS、Apache、MySQL、RabbitMQ等軟件參數的監控,是整個監控系統的核心。出于安全性和性能的考慮,企業中的服務器往往分布在不同地區,并不在同一個子網內。因此,系統監控平臺要能夠監控到分布在不同子網的主機,就需要具備公網IP,由被監控主機向監控平臺主動上傳監控信息。只要被監控主機連接了因特網,就可以通過系統監控平臺的公網IP建立TCP連接,傳輸該主機的硬件、軟件的監控信息。監控平臺通過主機名來標識不同的主機,收到監控信息之后會判斷是否存在相應的告警策略,并分類進行存儲和展示[8]。

1.2 應用程序錯誤監控模塊

除了服務器主機會發生故障,應用程序在運行過程中,也會遇到執行錯誤的情況,因此相關的錯誤監控機制是必須的。傳統的方式是將該錯誤記錄在日志中,待用戶或測試人員發現問題之后,通過分析日志再去定位錯誤。應用程序錯誤監控模塊則能夠在應用程序執行過程中,收集到應用程序運行中的錯誤,直接執行相應的告警策略,將錯誤信息發送給對應的管理人員。與傳統的錯誤處理方式相比,應用程序錯誤監控更加及時有效,能夠更好地保障應用程序的運行。

1.3 穩定性保障模塊

系統監控平臺不但能夠監控服務器故障和應用程序的錯誤,還應該具有一定的穩定性保障,能夠保證自身穩定的運行。系統監控平臺的監控策略應該是雙向的,而不是單向的。不但需要系統監控平臺去監測服務器主機的運行,還需要服務器主機監控系統來監測系統監控平臺的正常運行。此外,還需要設計相關的自檢程序,來保障系統監控平臺中客戶端和服務器的穩定運行。

1.4 告警模塊

監控平臺的告警是非常重要的一步,它直接關系著管理人員能否及時地知悉錯誤的發生。監控平臺應在故障發生時,通過多種渠道通知運維人員,包括短信、郵件、微信、QQ等方式。其中,郵件是較為常用的一種告警方式,可以通過多種方式實現。短信是最為有效的告警方式,需要借助第三方短信運行商,支付費用才能使用。隨著QQ和微信等社交軟件的普及,通過社交軟件告警也成為了一種很好的補充方式,QQ和微信消息的發送可以通過一些開源項目來實現。

2 系統設計

2.1 系統架構設計

如圖1所示,該系統主要分為服務器主機故障和應用程序錯誤監控兩部分。主機監控通過開源的Zabbix監控方案實現,其中Zabbix Server是Zabbix的服務端程序,工作在系統監控平臺服務器;Zabbix Agentd是Zabbix的客戶端程序,工作在被監控服務器。應用程序錯誤監控通過錯誤收集接口來接收應用程序在發生錯誤時發送過來的HTTP請求,然后記錄錯誤信息并執行相應的告警策略。

圖1 系統架構

被監控的主機都需要安裝Zabbix Agentd程序,系統監控平臺則安裝Zabbix Server程序。Zabbix Agentd以一定的頻率向Zabbix Server傳送監控數據[9-10]。為了保障Zabbix系統的運行,還設計了Zabbix Agentd和Zabbix Server自檢程序以及Zabbix Server的遠程監控程序。Zabbix Agentd自檢程序用于監控Zabbix Agentd程序,并在Zabbix Agentd沒有運行時啟動該程序。Zabbix Server自檢程序與之類似,用于檢測本機Zabbix Server的運行。Zabbix Server遠程檢測程序則用于在遠程服務器上監控Zabbix Server的運行狀態。

應用程序錯誤監控用于檢測應用程序運行過程中發生的錯誤。應用程序的開發者在捕捉到程序錯誤信息時,不但可記錄在本地的日志中,還可以通過HTTP請求的方式將錯誤信息發送到錯誤收集接口。接口在收到有效的HTTP請求后,會將錯誤信息記錄在本地數據庫中,并檢查是否存在相關告警策略,如果有的話則發送告警信息。

2.2 系統功能模塊設計

2.2.1 服務器監控模塊設計

Zabbix是一套非常完備的服務器主機監控解決方案,因此通過Zabbix來實現服務器監控模塊。Zabbix Agentd有主動和被動兩種工作方式,其中主動式監控是指Zabbix Agentd通過Zabbix Server的IP地址和端口號與之建立TCP連接,然后傳輸監控的配置信息和被監控主機的信息;被動式監控則是指Zabbix Server通過Zabbix Agentd的IP地址和端口號與之建立TCP連接[11]。為了能夠檢測分布在不同區域、不同網絡環境中的服務器主機,使Zabbix Agentd以主動式的方式運行,只需要保證監控平臺具有公網IP,可被Zabbix Agentd通過IP尋址即可。Zabbix Agentd在被監控主機上運行時,會以一定頻率向Zabbix Server請求需要監控的項目,然后通過監控平臺的10051端口將監控數據傳送給Zabbix Server。Zabbix解決方案提供了基于PHP和MySQL的Web管理站點,通過該站點可以添加被監控的主機,配置需要監控的項目,以及相關的報警聯系人和告警方式及策略等。

2.2.2 穩定性保障模塊設計

穩定性保障模塊用于保證Zabbix Server和Zabbix Agentd程序的正常運行,在檢測到程序沒有運行時,會嘗試啟動程序或發送告警。因為Zabbix Agentd的遠程監控可以通過Zabbix的監控項實現,所以實際上該模塊包括三部分程序。

(1)Zabbix Server自檢程序。

Zabbix Server只能運行在Linux平臺上,并且默認工作在10051端口。因此,可以通過Shell腳本監測本機10051端口是否開啟,進而判斷Zabbix Server的運行狀態,并且檢測到Zabbix Server沒有運行時啟動該程序。通過shell腳本實現的Zabbix Server自檢程序需要以一定的頻率執行,可使用Crontab程序來實現。

(2)Zabbix Agentd自檢程序。

Zabbix Agentd與Zabbix Server的自檢程序設計思路是類似的。與之不同的是,Zabbix Agentd可運行在Linux平臺和Windows平臺,默認工作在本機的10050端口。在Windows操作系統中,Zabbix Agentd是以系統服務的形式運行的,可以使用C#語言編寫自檢程序,用于檢測Zabbix Agentd服務的運行狀態,并且在沒有運行時啟動該程序。在Windows平臺,使用C#語言編寫的Zabbix Agentd自檢程序,可以通過定時器實現定期的檢測[12]。

(3)Zabbix Server遠程監測程序。

Zabbix Server通過監控平臺的10051端口來收集Zabbix Agentd發送過來的監控數據。因此可以在其他的服務器上通過與監控平臺的10051端口建立TCP的方式,來檢測Zabbix Server運行狀態。如圖2所示,每2分鐘檢測一次,如果連續三次向監控平臺的10051端口建立TCP連接失敗,則認為Zabbix Server程序已停止。出于安全性考慮,遠程服務器不具備啟動Zabbix Server的權限,僅發送告警,通知管理人員處理。

圖2 Zabbix Server遠程監測程序流程圖

2.2.3 應用程序監控模塊設計

應用程序監控模塊通過錯誤收集接口的形式對外開放,可以通過HTTP請求的方式調用。該模塊相對獨立,不依賴Zabbix的功能,使用PHP和MySQL進行開發,但為了統一管理界面,將該模塊合并到Zabbix的管理站點。如圖3所示,錯誤收集接口在收到有效的HTTP請求后會檢查是否存在相關的告警策略,如果有則向聯系人發送短信、郵件等通知。發送短信、郵件等操作是比較耗時的,因此為了提高錯誤收集接口的響應速度,只驗證HTTP請求是否有效,對于有效的HTTP請求,將相關參數放入消息隊列中。編寫錯誤信息處理腳本,監聽消息隊列,專門用于執行發送郵件、短信等告警操作。

3 系統實現

3.1 服務器監控模塊的實現

服務器的監控模塊通過Zabbix解決方案實現,需要在系統監控平臺上安裝Zabbix Server程序,在被監控主機安裝Zabbix Agentd程序,并以主動式監控的方式工作。如圖4所示,使用Zabbix Server的Web管理平臺,還需要在系統監控平臺上搭建LNMP運行環境,然后將站點代碼復制到Web服務器目錄。Zabbix Agentd主動式監控配置內容如下:StartAgents=0表示禁用被動模式,ServerActive對應Zabbix Server的IP地址,Hostname用于標識不同的主機[13]。

圖3 HTTP請求處理流程

圖4 Zabbix Server Web管理界面

StartAgents=0

ServerActive=XX.XX.XX.XX

Hostname=host1

工作流程如圖5所示。

圖5 服務器監控模塊工作流程

3.2 穩定性保障模塊的實現

(1)Zabbix Server自檢程序。

通過編寫運行在Linux下的shell腳本,監測本機的10050端口是否已經開啟。如果沒有,則說明Zabbix Server沒有運行,通過shell腳本啟動該服務即可。在編寫完該shell腳本之后,還需要將其添加到Crontab列表中,每分鐘執行一次該腳本。

*/1 * * * * /var/www/Zabbix_Server_Monitor.sh

(2)Zabbix Server遠程監測程序。

Zabbix Server遠程監控程序可運行在被監控服務器上,通過嘗試向Zabbix Server所在的系統監控服務器的10051建立TCP連接,來判斷Zabbix Server程序是否可用。以Windows Server 2012為例,在Windows平臺上可以使用C#編寫Windows服務,具有更好的穩定性。關鍵代碼如下:

clientSocket.Connect(new IPEndPoint(ip,10051));

if(counter>3){

SendMail(server_addr,mailto);

}else{

counter=0;

}

(3)Zabbix Server遠程監測程序。

Zabbix Server遠程監控程序可運行在被監控服務器上,通過嘗試向Zabbix Server所在的系統監控服務器的10051建立TCP連接,來判斷Zabbix Server程序是否可用。以Windows Server 2012為例,在Windows平臺上可以使用C#編寫Windows服務,具有更好的穩定性。關鍵代碼如下:

clientSocket.Connect(new IPEndPoint(ip, 10051));

if(counter > 3){

SendMail(server_addr, mailto);

}else{

counter=0;

}

(4)Zabbix Agentd自檢程序。

Zabbix Agentd自檢程序可運行在Linux和Windows平臺上,Linux下的自檢程序可以編寫shell腳本,通過檢測本機10050端口是否可用來實現;Windows下自檢程序可以使用C#語言編寫服務,檢測Zabbix Agentd服務的運行狀態。使用C#語言編寫Zabbix Agentd自檢服務,每分鐘檢測一次Zabbix Agentd服務的狀態,并設置為開機啟動。

關鍵代碼如下:

var service=new ServiceController("Zabbix Agentd");

string state=service.Status.ToString();

if(state!="Running")

{

service.Start();

service.WaitForStatus(ServiceControllerStatus.Running);

}

3.3 應用程序監控模塊的實現

為了統一管理平臺,應用程序監控模塊在Zabbix的Web站點的基礎上使用PHP語言進行開發,復用Zabbix站點的樣式和用戶登錄模塊。該模塊的主要功能分為錯誤信息收集接口、報警規則設置、錯誤信息處理三部分。為了提高接口的響應速度,只判斷請求是否有效,對于有效的請求,將有效參數以json格式存放到Redis的消息隊列中。錯誤信息處理腳本專門用于處理Redis隊列中的內容,執行發送郵件、短信等操作。錯誤信息收集接口驗證數字簽名的關鍵代碼如下:

$tmp_arr=$_REQUEST;

$request_sign=strtolower($tmp_arr['sign']);

unset($tmp_arr['sign']);

ksort($tmp_arr);

$tmp_str=implode($tmp_arr);

$real_sign=md5($tmp_str.$skey);

if($real_sign!=$request_sign){

printJson(2003,'數字簽名驗證失敗');

}

錯誤收集接口將有效的HTTP請求內容以及其告警規則存放在Redis中,錯誤處理腳本從Redis中取出告警規則和請求內容,并執行發送短信、郵件等操作。Redis隊列使用其發布/訂閱機制實現,錯誤處理腳本使用Subscribe方法訂閱頻道errorList,然后Web API在收到合法請求時,使用Publish方法向頻道errorList發送數據。

//錯誤收集接口向消息隊列中存入數據

$json_data=json_encode($valid_data);

$redis->publish("errorList",$json_data);

//錯誤處理腳本從消息隊列中取出數據

$redis->subscribe(array("errorList"),"handleFun");

//錯誤信息錯誤函數

functionhandleFun($redis, $chan, $msg){};

工作流程如圖6所示。

圖6 應用程序監控模塊工作流程

3.4 告警模塊的實現

(1)郵件發送模塊的實現。

郵件發送模塊通過TCP連接SNMP郵件服務器發送郵件的方式實現。使用PHP或C#語言與郵件服務器通過Socket建立TCP連接后,通過SNMP協議實現郵件的發送。C#可以通過.NET中的MailMessage類來發送郵件,PHP則可以借助第三方類庫SendMail發送郵件[14]。

(2)短信發送模塊的實現。

短信發送模塊一般是通過向第三方提供的URL發送GET/POST請求,并攜帶用戶認證和短信內容等參數實現的,不同的第三方提供的URL和所需參數有所不同。C#語言可以使用HttpWebRequest實現發送HTTP請求,PHP語言則可以利用CURL擴展實現[15]。

(3)QQ消息發送模塊的實現。

QQ消息的發送可以通過Mojo-Webqq實現,Mojo-Webqq是基于Perl語言實現的開源項目,它默認運行在本機的5000端口,支持HTTP調用方式,使用方法與短信發送類似。微信消息告警可基于Mojo-Weixin開源項目實現,使用方法與QQ消息告警類似。

4 結束語

隨著服務器數量的不斷增多和應用程序復雜度的增加,傳統的人工管理方式已不再適用,網絡監控系統則成為一種新的趨勢。文中設計的基于Zabbix的網絡監控系統,高效、穩定、自動化運行,有效解決了服務器故障和應用程序錯誤監控的問題,具有很好的普遍性。該系統通過Zabbix Server的自檢程序和遠程監測程序一定程度上保障了系統的穩定性,但還是存在單點故障的隱患。在未來的工作中,將致力于系統監控平臺的負載均衡和系統災備等工作,以更好地保障監控系統的穩定性[16]。

[1] 吳夫丹.基于云平臺的服務器監控系統設計[D].西安:西安工業大學,2014.

[2] 董 波,沈 青,肖德寶.云計算集群服務器系統監控方法的研究[J].計算機工程與科學,2012,34(10):68-72.

[3] 朱瑞斌.服務器集群監控系統的設計與實現[D].北京:北京交通大學,2015.

[4] 張俊杰.服務器狀態監控系統設計[D].西安:西安電子科技大學,2014.

[5] TADER P.Server monitoring with Zabbix[J].Linux Journal,2010,2010(195):7.

[6] 王 帆.基于Nagios的服務器監控平臺構建與實現[J].實驗室研究與探索,2010,29(12):51-57.

[7] 岑銳堅.使用Cacti監測系統與網絡性能[J].開放系統世界,2006(7):68-72.

[8] 徐 葉,袁 敏,李國軍.嵌入式Web服務器遠程監控系統的設計與實現[J].計算機與現代化,2013(2):94-98.

[9] 郭曉慧,李潤知,張 茜,等.基于Zabbix的分布式服務器監控應用研究[J].通信學報,2013,34:94-98.

[10] 李朝陽.利用Zabbix進行系統和網絡管理[J].計算機時代,2008(10):19-22.

[11] VLADISHEV A. Open source enterprise monitoring with Zabbix[C]//OpenSource data center conference.[s.l.]:[s.n.],2009.

[12] 杜 鵑.飛信機器人系統的設計與實現[D].北京:北京郵電大學,2010.

[13] 周 萌,林國策,楊厚云.CENTOS下ZABBIX的配置與使用[J].北京信息科技大學學報:自然科學版,2015,30(1):90-94.

[14] 李艷霞,劉乃嘉,王 鑫.高校信息系統自動監控報警平臺的研發與應用[J].實驗技術與管理,2011,28(3):101-103.

[15] 楊 磊.基于Linux系統的監控工具與其自動化測試的設計與實現[D].成都:電子科技大學,2012.

[16] ANDREOLINI M,COLAJANNI M,PIETRI M.A scalable architecture for real-time monitoring of large information systems[C]//Second symposium on network cloud computing and applications.[s.l.]:IEEE,2012:143-150.

猜你喜歡
程序系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
半沸制皂系統(下)
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
主站蜘蛛池模板: 亚洲精品你懂的| 亚洲国产欧美目韩成人综合| 午夜日本永久乱码免费播放片| 九色在线视频导航91| 日韩av无码精品专区| 中文纯内无码H| 久久国产精品嫖妓| 免费福利视频网站| 国产成人高清亚洲一区久久| 亚洲黄色视频在线观看一区| 99久久亚洲精品影院| 亚洲精品男人天堂| 欧美三级自拍| 中文字幕第1页在线播| 欧美乱妇高清无乱码免费| 亚洲福利片无码最新在线播放| 国产手机在线观看| 国产精品一区二区在线播放| 无码国产偷倩在线播放老年人| 日韩欧美国产成人| 欧美成人精品在线| 99久久精品免费看国产免费软件| 欧美在线视频不卡| 午夜激情福利视频| 精品第一国产综合精品Aⅴ| 亚洲浓毛av| 亚洲不卡av中文在线| 91毛片网| 国产精品白浆无码流出在线看| 亚洲经典在线中文字幕| 亚洲日本中文字幕天堂网| 国产综合精品日本亚洲777| 大香网伊人久久综合网2020| 日本不卡在线播放| 亚洲中文无码h在线观看| 91精品伊人久久大香线蕉| 日韩 欧美 国产 精品 综合| 国产人妖视频一区在线观看| 亚洲欧美成人综合| 尤物国产在线| 国产自在自线午夜精品视频| 最近最新中文字幕在线第一页| 国产亚洲精品无码专| 麻豆AV网站免费进入| 亚洲国产系列| 国产爽爽视频| 日本在线欧美在线| 一级做a爰片久久毛片毛片| 欧美成人A视频| 亚洲午夜天堂| 99视频精品在线观看| 国产视频自拍一区| 亚洲人成影院午夜网站| 日本欧美视频在线观看| 亚洲日本韩在线观看| 国产成人精品综合| 欧美黑人欧美精品刺激| 97久久人人超碰国产精品| lhav亚洲精品| 天堂网国产| 婷婷综合色| 99精品热视频这里只有精品7| 91人妻日韩人妻无码专区精品| 国产人成午夜免费看| 午夜日b视频| 国产免费久久精品99re不卡| 丁香婷婷综合激情| 88国产经典欧美一区二区三区| 思思热精品在线8| 免费又黄又爽又猛大片午夜| 永久免费AⅤ无码网站在线观看| 99久久精品国产自免费| 国产成人亚洲日韩欧美电影| 一级做a爰片久久免费| 日韩欧美91| 国产日韩欧美一区二区三区在线| 天堂成人在线| 欧美亚洲国产精品久久蜜芽| 毛片网站在线看| 九九热精品免费视频| 亚洲国内精品自在自线官| 巨熟乳波霸若妻中文观看免费 |