自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圍繞Zabbix打造面向應(yīng)用的自動(dòng)監(jiān)控系統(tǒng)

原創(chuàng)
運(yùn)維 系統(tǒng)運(yùn)維
本文結(jié)合某公司的IT基礎(chǔ)架構(gòu),通過對(duì)Zabbix監(jiān)控系統(tǒng)實(shí)施二次開發(fā)和改造,實(shí)現(xiàn)了對(duì)部分應(yīng)用系統(tǒng)可用性狀態(tài)的實(shí)時(shí)監(jiān)控,對(duì)具體的改造方法和思路進(jìn)行了詳細(xì)闡述,并給出了改造后的自動(dòng)監(jiān)控系統(tǒng)的運(yùn)行效果,希望對(duì)各位同行在企業(yè)IT基礎(chǔ)設(shè)施監(jiān)控方面有所啟發(fā)。

目前開源網(wǎng)絡(luò)監(jiān)控系統(tǒng)Zabbix在不少企業(yè)得到了應(yīng)用,但是Zabbix自身所能監(jiān)控的粒度和深度都難以滿足企業(yè)運(yùn)維管理的深層次需求,特別是對(duì)于應(yīng)用系統(tǒng)的可用性監(jiān)控方面存在較大的缺陷。本文結(jié)合某公司的IT基礎(chǔ)架構(gòu),通過對(duì)Zabbix監(jiān)控系統(tǒng)實(shí)施二次開發(fā)和改造,實(shí)現(xiàn)了對(duì)部分應(yīng)用系統(tǒng)可用性狀態(tài)的實(shí)時(shí)監(jiān)控;本文對(duì)具體的改造方法和思路進(jìn)行了詳細(xì)闡述,并給出了改造后的自動(dòng)監(jiān)控系統(tǒng)的運(yùn)行效果,希望對(duì)各位同行在企業(yè)IT基礎(chǔ)設(shè)施監(jiān)控方面有所啟發(fā)。

一.背景

Zabbix是一個(gè)較為成熟的基于WEB界面的提供分布式系統(tǒng)監(jiān)控以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)開源解決方案。相信了解Linux和開源監(jiān)控系統(tǒng)的運(yùn)維管理人員對(duì)Zabbix并不陌生,由于Zabbix部署的靈活性以及開源的特征,目前不少企業(yè)已經(jīng)部署Zabbix來對(duì)自身的IT基礎(chǔ)設(shè)施的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控;筆者所在的公司也不例外,兩年前就已經(jīng)嘗試部署Zabbix,目前已經(jīng)將公司大部分服務(wù)器和網(wǎng)絡(luò)設(shè)備納入了Zabbix監(jiān)控范圍,使Zabbix成為運(yùn)維管理人員最為倚仗的故障監(jiān)控利器。

但是目前Zabbix僅僅只能對(duì)一些比較常規(guī)的CPU利用率、端口狀態(tài)、流量、進(jìn)程使用等項(xiàng)目進(jìn)行監(jiān)控,難以針對(duì)應(yīng)用和服務(wù)的可用性進(jìn)行實(shí)時(shí)監(jiān)控,即使是最新的2.2版本,面向應(yīng)用的監(jiān)控方面仍然沒有大的改進(jìn)。而當(dāng)前隨著各類應(yīng)用復(fù)雜性的提高,導(dǎo)致各類應(yīng)用出現(xiàn)故障的原因越來越難以排查,如果和過去一樣,僅僅只是針對(duì)服務(wù)器的CPU、內(nèi)存、進(jìn)程等常規(guī)項(xiàng)目實(shí)施監(jiān)控,在某些情況下就難以發(fā)現(xiàn)應(yīng)用的異常,不能起到實(shí)時(shí)監(jiān)控的效果;因?yàn)橐粋€(gè)應(yīng)用出現(xiàn)異常,很多時(shí)候并不是CPU、內(nèi)存等一些常規(guī)問題所引起的,而是系統(tǒng)自身的BUG或負(fù)載有限等一些隱秘的原因所引起的,所以有時(shí)候Zabbix顯示常規(guī)的監(jiān)控項(xiàng)目狀態(tài)都正常,但是應(yīng)用實(shí)際已經(jīng)不可用,這樣就失去了自動(dòng)監(jiān)控的意義。

為了彌補(bǔ)Zabbix針對(duì)應(yīng)用監(jiān)控方面的不足,本文圍繞Zabbix監(jiān)控系統(tǒng)做了深入的研究,結(jié)合運(yùn)維自動(dòng)化的思想,開發(fā)出一套能夠支持部分常見應(yīng)用的自動(dòng)監(jiān)控系統(tǒng);該系統(tǒng)是在已有Zabbix系統(tǒng)的基礎(chǔ)上進(jìn)行二次開發(fā)所形成的,并不影響之前針對(duì)服務(wù)器和網(wǎng)絡(luò)設(shè)備的監(jiān)控效果。該系統(tǒng)已經(jīng)在本公司范圍內(nèi)得到應(yīng)用,目前能夠針對(duì)DHCP、Radius認(rèn)證、Wins以及SSLVPN系統(tǒng)實(shí)施可用性的自動(dòng)監(jiān)控。

二.系統(tǒng)設(shè)計(jì)思路

既然傳統(tǒng)的Zabbix監(jiān)控項(xiàng)目難以反映出各類應(yīng)用系統(tǒng)是否正常,只有親自使用系統(tǒng)才能真正判斷出應(yīng)用系統(tǒng)是否可用,但是要做到實(shí)時(shí)監(jiān)控,就必須用到運(yùn)維自動(dòng)化的相關(guān)技術(shù)了,否則單憑人工操作是無法保證監(jiān)控的時(shí)效性的。本文正是利用運(yùn)維自動(dòng)化的核心技術(shù)-腳本編程技術(shù)來實(shí)現(xiàn),我們采用腳本程序來模擬客戶端或用戶訪問應(yīng)用系統(tǒng)的流程,將該流程自動(dòng)化、程序化,利用Zabbix監(jiān)控系統(tǒng)的接口將系統(tǒng)狀態(tài)傳遞給Zabbix,通過Zabbix系統(tǒng)的Trigger判斷,將應(yīng)用系統(tǒng)的可用狀態(tài)的變更以頁面、郵件或者短信的方式展示給運(yùn)維管理人員,以達(dá)到實(shí)時(shí)監(jiān)控的目的。

本監(jiān)控系統(tǒng)可分為兩大模塊:模擬用戶行為模塊和應(yīng)用狀態(tài)感知模塊。這兩大模塊彼此關(guān)聯(lián)協(xié)作,由模擬用戶行為模塊不斷循環(huán)獲取應(yīng)用的狀態(tài),然后將狀態(tài)傳遞給應(yīng)用狀態(tài)感知模塊,應(yīng)用狀態(tài)感知模塊經(jīng)過判斷,將狀態(tài)信息以多種方式展示給運(yùn)維管理人員。下面將對(duì)這兩大模塊分別進(jìn)行介紹。

1. 模擬用戶行為模塊

該模塊會(huì)根據(jù)提取出的用戶操作流程,將用戶使用應(yīng)用系統(tǒng)的一系列操作利用程序來自動(dòng)實(shí)現(xiàn),然后將程序的操作結(jié)果記錄下來,提供給后續(xù)的應(yīng)用狀態(tài)感知模塊進(jìn)行判斷,下圖1為該模塊的詳細(xì)流程圖:

圖1 模擬用戶行為模塊流程圖

2. 應(yīng)用狀態(tài)感知模塊

該模塊接受模擬用戶行為模塊所傳遞的應(yīng)用系統(tǒng)狀態(tài)的信息,分析該狀態(tài)信息,然后將信息展示給運(yùn)維管理人員;若出現(xiàn)服務(wù)狀態(tài)的變更,還會(huì)以短信、郵件等多種方式實(shí)時(shí)通知管理員。該模塊的功能均由Zabbix監(jiān)控系統(tǒng)自身承擔(dān);下圖2即為應(yīng)用狀態(tài)感知模塊的詳細(xì)流程圖:

圖2 應(yīng)用狀態(tài)感知模塊流程圖

三.系統(tǒng)的具體實(shí)現(xiàn)

本系統(tǒng)目前已經(jīng)實(shí)現(xiàn)了對(duì)公司的DHCP、Radius認(rèn)證、Wins服務(wù)及SSLVPN應(yīng)用系統(tǒng)的可用性的實(shí)時(shí)監(jiān)控,下面將分別進(jìn)行闡述。

1. DHCP應(yīng)用狀態(tài)的監(jiān)控

本公司所使用的DHCP服務(wù)是由Windows server 2003下提供的,自動(dòng)實(shí)時(shí)監(jiān)控DHCP服務(wù)的關(guān)鍵在于程序需要不停去模擬用戶利用DHCP服務(wù)器獲取IP地址的過程,這個(gè)過程可以利用兩條BAT命令"ipconfig /release"和"ipconfig /renew"來表示,即釋放IP和重新獲取IP,如果DHCP應(yīng)用出現(xiàn)故障,那么主機(jī)將無法通過上述兩條命令獲取IP地址,那么其他同網(wǎng)段的主機(jī)將無法ping通該主機(jī)。我們采用一臺(tái)Windows server 2003的主機(jī)來作為運(yùn)行腳本程序的測(cè)試主機(jī),該程序采用BAT腳本實(shí)現(xiàn),起到模擬用戶行為的作用,具體BAT腳本程序如下所示:

  1. @echo off 
  2. :des 
  3. ipconfig /release 
  4. ipconfig /renew 
  5. echo "程序正在運(yùn)行,勿關(guān)閉此窗口!" 
  6. choice /c yn /n /t 10 /d y 
  7. goto des 

上述程序代碼將每隔10秒循環(huán)執(zhí)行"ipconfig /release"和"ipconfig /renew"去重新從DHCP服務(wù)器獲取IP地址,那么測(cè)試主機(jī)能否獲得正確的IP地址就代表了DHCP應(yīng)用是否可用,下一步就需要將該狀態(tài)信息傳遞給應(yīng)用狀態(tài)感知模塊,即Zabbix監(jiān)控系統(tǒng)。

在Zabbix監(jiān)控系統(tǒng)中我們將會(huì)做如下幾步工作:

(1)將DHCP服務(wù)器納入監(jiān)控,安裝Zabbix agent,然后在DHCP server的items中添加一項(xiàng)監(jiān)控項(xiàng),各屬性設(shè)置如下:Name為"DHCP service test",Key為"icmpping[測(cè)試主機(jī)的IP,3]",Interval設(shè)置為10秒,其他的時(shí)間屬性可按照自己的需求進(jìn)行設(shè)置,該監(jiān)控項(xiàng)的意思是每隔10秒Zabbix服務(wù)器將會(huì)向測(cè)試主機(jī)發(fā)送3個(gè)icmpping包,以此來確認(rèn)能否與該主機(jī)通訊,如果能夠ping通,則返回值為1,否則返回值為0 ;這樣就能判斷該主機(jī)是否獲得了正確的IP地址,也就實(shí)現(xiàn)了對(duì)于DHCP應(yīng)用狀態(tài)的實(shí)時(shí)監(jiān)控。

(2)設(shè)置一個(gè)Trigger,用于判斷DHCP應(yīng)用狀態(tài)是否發(fā)生變化,如果發(fā)生變化,將在頁面展示報(bào)警信息;Trigger屬性設(shè)置如下:Name為"DHCP service on DHCPSVR is down"Expression為"{DHCPSVR:icmpping[測(cè)試主機(jī)的IP,3].last(0)}=0&{DHCPSVR:icmpping[測(cè)試主機(jī)的IP,3].prev(0)}=0",表示如果程序連續(xù)兩次探測(cè)DHCP應(yīng)用均不可用的話,則可以判定DHCP應(yīng)用出現(xiàn)故障,通過將兩次檢測(cè)結(jié)果進(jìn)行與操作,可以有效減少誤報(bào)的概率。

(3)設(shè)置一個(gè)Action,用于設(shè)置當(dāng)event觸發(fā)Trigger時(shí),Zabbix應(yīng)該做出的動(dòng)作,包括給運(yùn)維管理人員發(fā)送郵件、短信等。Action的主要屬性設(shè)置如下:Name為"DHCP Service monitoring",觸發(fā)條件Conditions為前面所設(shè)置的Trigger"DHCPSVR:DHCP service on DHCPSVR is down",Operations為"Send message to users:管理員",Delay為"Immediately"。該Action的意思是當(dāng)觸發(fā)對(duì)應(yīng)Trigger時(shí),立即向管理員發(fā)送報(bào)警短信,短信的內(nèi)容也可以自己定制,在此不再贅述。

2.Radius認(rèn)證應(yīng)用狀態(tài)的監(jiān)控

Radius認(rèn)證服務(wù)在很多公司有廣泛應(yīng)用,用于應(yīng)用系統(tǒng)和設(shè)備登錄的AAA認(rèn)證;本公司的Radius服務(wù)的一項(xiàng)重要應(yīng)用就是網(wǎng)絡(luò)設(shè)備的登錄認(rèn)證。實(shí)現(xiàn)Radius認(rèn)證應(yīng)用狀態(tài)的自動(dòng)實(shí)時(shí)監(jiān)控的關(guān)鍵點(diǎn)仍然是提取出用戶使用Radius應(yīng)用的流程,然后以腳本程序去實(shí)現(xiàn)該流程,然后將檢測(cè)結(jié)果傳遞給Zabbix。本文采用基于SecureCRT平臺(tái)的VBScript語言編寫模擬用戶登錄Cisco交換機(jī)行為的腳本程序,登錄后會(huì)先后出現(xiàn)輸入username和password的提示,利用程序控制輸入合法的用戶名和密碼,,然后回車,如果Radius應(yīng)用正常,則會(huì)進(jìn)入交換機(jī)的配置頁面,如果Radius應(yīng)用出現(xiàn)故障,則會(huì)在一段時(shí)間后出現(xiàn)"time out"的提示。我們?nèi)匀焕蒙鲜瞿桥_(tái)Windows server 2003的主機(jī)作為測(cè)試機(jī),具體的VBScript腳本程序如下所示:

  1. # $language = "VBScript" 
  2. # $interface = "1.0" 
  3. '該腳本用于探測(cè)公司Radius服務(wù)的狀態(tài) 
  4. Sub Main 
  5. Dim fso,f1 
  6. Set fso=CreateObject("Scripting.FileSystemObject") 
  7. Do While (1) 
  8.  crt.Screen.Synchronous=True 
  9.  crt.Session.Connect("/telnet 172.19.39.248") 
  10.  crt.Screen.WaitForString "Username:" 
  11.  crt.Screen.Send "ishare" & vbcr 
  12.  crt.Screen.WaitForString "Password:" 
  13.  crt.Screen.Send "123456" & vbcr 
  14.  crt.Screen.WaitForString ">",2 
  15.  judgeString=crt.Screen.Get(12,1,12,20) 
  16.  Set f1=fso.OpenTextFile("C:\Radius監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  17.  f1.writeline(judgeString) 
  18.  f1.Close() 
  19.  'crt.sleep 500 
  20.  crt.Screen.Synchronous=False 
  21.  crt.Session.Disconnect 
  22.  crt.Sleep 5000 
  23. Loop 
  24. End Sub 

上述程序中,172.19.39.248是測(cè)試交換機(jī)的管理IP,ishare和123456分別為測(cè)試用的用戶名和密碼;該腳本程序控制每隔5秒鐘去telnet一下測(cè)試交換機(jī),如果輸入用戶名和密碼后能夠正常進(jìn)入交換機(jī)配置界面,那么說明Radius應(yīng)用是可用的,將顯示的交換機(jī)名稱寫入judge.txt文件中;反之,說明Radius應(yīng)用出現(xiàn)故障,將"time out"信息寫入judge.txt文件中。文件中不同的內(nèi)容代表了Radius應(yīng)用的狀態(tài)。下一步就需要該狀態(tài)信息傳遞給Zabbix監(jiān)控系統(tǒng)。

在Zabbix監(jiān)控系統(tǒng)中我們需要做如下幾個(gè)方面的操作:

(1)在測(cè)試主機(jī)的items中加入一項(xiàng)監(jiān)控項(xiàng),各屬性如下:Name為"Radius Service status",Key為"vfs.file.regmatch[judge.txt,測(cè)試交換機(jī)名稱]",Interval為10秒,其他時(shí)間屬性可以按照自己需求設(shè)置。該監(jiān)控項(xiàng)的意思是每隔10秒去檢測(cè)judge.txt中的內(nèi)容,如果是測(cè)試交換機(jī)的名稱,則返回值為1;否則返回0,這樣就能判斷Radius應(yīng)用是否可用,實(shí)現(xiàn)了對(duì)其可用性的實(shí)時(shí)監(jiān)控。

(2)創(chuàng)建一個(gè)Trigger,用于判斷Radius應(yīng)用狀態(tài)是否發(fā)生變化,如果發(fā)生變化,將在頁面展示報(bào)警信息;Trigger屬性設(shè)置如下:Name為"Radius Service is down",Expression為"{vfs.file.regmatch[judge.txt,測(cè)試交換機(jī)名稱].last(0)}=0&{vfs.file.regmatch[judge.txt,測(cè)試交換機(jī)名稱].prev(0)=0",表示如果程序連續(xù)兩次探測(cè)Radius應(yīng)用均不可用的話,則可以判定Radius應(yīng)用出現(xiàn)故障,通過兩次檢測(cè)結(jié)果的與操作,可以有效減少誤報(bào)的概率。

(3)創(chuàng)建一個(gè)Action。Action的主要屬性設(shè)置如下:Name為"Radius Service monitoring",觸發(fā)條件Conditions為前面所設(shè)置的Trigger"Radius service is down",Operations為"Send message to users:管理員",Delay為"Immediately"。該Action的意思是當(dāng)觸發(fā)對(duì)應(yīng)Trigger時(shí),Zabbix將立即向管理員發(fā)送報(bào)警短信。

3.Wins應(yīng)用狀態(tài)的監(jiān)控

本公司使用的Wins服務(wù)是由Windows server 2003提供的,可以通過"nblookup"這個(gè)BAT命令來測(cè)試Wins應(yīng)用是否可用,如果Wins應(yīng)用正常,則可以將主機(jī)名解析為正常的IP地址;反之,則會(huì)解析失敗。本文首先將利用nblookup命令解析主機(jī)名的腳本程序嵌入Zabbix已有的腳本庫(kù)中,以方便后面的調(diào)用;具體方式如下:在測(cè)試主機(jī)上打開Zabbix agent的配置文件"zabbix_agentd.conf",在文件最后加入"UnsafeUserParameters=1"和"UserParameter= service.wins,C:\WINDOWS\system32\nblookup /s Wins服務(wù)器IP netsqlsvr | find "主機(jī)netsqlsvr的IP"",這樣就將對(duì)應(yīng)的腳本程序以"service.wins"的形式嵌入Zabbix系統(tǒng)中了。在Zabbix系統(tǒng)中所需的設(shè)置如下:

(1)在測(cè)試主機(jī)的items中加入對(duì)應(yīng)監(jiān)控項(xiàng),監(jiān)控項(xiàng)的屬性如下:Name為"Service Wins status",Key為"service.wins",Interval為15秒,其他時(shí)間屬性可以按照自己需求設(shè)置。該監(jiān)控項(xiàng)的意思是每隔15秒使用nblookup命令去測(cè)試Wins的應(yīng)用狀態(tài),如果Wins應(yīng)用狀態(tài)正常,則返回netsqlsvr主機(jī)的正確IP,否則一段時(shí)間后會(huì)返回"time out"信息,這樣就實(shí)現(xiàn)了對(duì)Wins應(yīng)用狀態(tài)可用性的實(shí)時(shí)監(jiān)控。

(2)創(chuàng)建一個(gè)Trigger,用于判斷Wins應(yīng)用狀態(tài)是否發(fā)生變化,如果發(fā)生變化,將在頁面展示相應(yīng)的報(bào)警信息;Trigger屬性設(shè)置如下:Name為"Wins Service is down",Expression為"{service.wins.strlen(0)}=0",表示如果程序如果沒有獲得正確的解析IP,則判定Radius應(yīng)用出現(xiàn)故障。

(3)創(chuàng)建一個(gè)Action。Action的主要屬性設(shè)置如下:Name為"Wins Service monitoring",觸發(fā)條件Conditions為前面所設(shè)置的Trigger"Wins service is down",Operations為"Send message to users:管理員",Delay設(shè)為"Immediately"。該Action的意思是當(dāng)觸發(fā)對(duì)應(yīng)Trigger時(shí),Zabbix將立即向管理員發(fā)送報(bào)警短信。

4.SSLVPN系統(tǒng)狀態(tài)的監(jiān)控

本公司所使用SSLVPN設(shè)備是Juniper SA 6500,該設(shè)備為外網(wǎng)用戶提供遠(yuǎn)程接入內(nèi)網(wǎng)辦公的功能,是我司極為重要的網(wǎng)關(guān)設(shè)備。之前只能利用Zabbix系統(tǒng)對(duì)該設(shè)備的一些常規(guī)參數(shù)進(jìn)行監(jiān)控,無法獲知該系統(tǒng)的真實(shí)可用狀態(tài);下面將介紹對(duì)SSLVPN應(yīng)用系統(tǒng)實(shí)現(xiàn)可用性實(shí)時(shí)監(jiān)控的方法,目前該方法已經(jīng)在我司得到應(yīng)用,收到了良好的效果。我們?nèi)匀徊捎媚_本程序來模擬用戶訪問SSLVPN系統(tǒng),訪問流程如下圖3所示:

圖3 用戶訪問SSLVPN系統(tǒng)流程圖

對(duì)于上述流程,本文采用VBScript腳本語言來實(shí)現(xiàn),具體程序代碼如下所示:

  1. Set WshShell=WScript.CreateObject("WScript.Shell")    '創(chuàng)建對(duì)象,可以實(shí)現(xiàn)虛擬鍵盤 
  2. Set fso=CreateObject("Scripting.FileSystemObject")  '創(chuàng)建文件對(duì)象 
  3. Set objWMIService = GetObject ("winmgmts:\\.\root\cimv2") 
  4. Sub Close_Process(ProcessName) '強(qiáng)制結(jié)束進(jìn)程函數(shù) 
  5. Dim objShell 
  6. Set objShell = wscript.CreateObject("wscript.shell") 
  7. objShell.Run "ntsd -c q -pn " & ProcessName, 0, True 
  8. End Sub 
  9. On Error Resume Next 
  10. Do while(1) 
  11. Set ie=WScript.CreateObject("InternetExplorer.Application")    '創(chuàng)建對(duì)象,打開IE 
  12. ie.visible=true    'IE轉(zhuǎn)至前臺(tái) 
  13. ie.navigate "http://192.168.103.1"    '打開網(wǎng)頁 
  14. Wscript.Sleep 4000   
  15. if ie.busy=false And ie.readystate = 4 then'如果頁面加載成功,則可以進(jìn)行下一步, 
  16. '如果不能顯示,說明出現(xiàn)問題 
  17. Wscript.Sleep 1000 
  18. WshShell.appactivate"Junos Pulse Secure Access Service" 
  19. Wscript.Sleep 2000 
  20. if instr(1,ie.document.body.innerText,"username",1)>0 Then '如果存在該標(biāo)簽,表明已經(jīng)成功顯示登錄頁面 
  21. ie.document.getElementById("Username").value="ishare"   '輸入賬號(hào)、密碼 
  22. ie.document.getElementById("Password").value="%rdx5tgB" 
  23. Wscript.Sleep 3000    '等3s然后回車,虛擬觸發(fā)。 
  24. WshShell.SendKeys "{ENTER}" 
  25. Wscript.Sleep 20000 
  26. '搜索網(wǎng)頁中是否存在內(nèi)網(wǎng)主頁關(guān)鍵字,判斷是否登錄成功 
  27. if ie.busy=false And ie.readystate = 4 then '網(wǎng)頁內(nèi)容加載完畢 
  28. WshShell.appactivate"Junos Pulse Secure Access Service - 主頁" 
  29. Wscript.Sleep 2000 
  30. strContent=ie.document.body.innerText '讀取網(wǎng)頁內(nèi)容   
  31. if instr(1,strContent,"內(nèi)網(wǎng)主頁",1)>0 Then '如果存在該標(biāo)簽,表明已經(jīng)成功登錄 
  32. '將1寫入文件 
  33. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  34. f1.writeline(1) 
  35. f1.Close() 
  36. Wscript.Sleep 2000 
  37. WshShell.appactivate"Junos Pulse Secure Access Service - 主頁"   
  38. Wscript.Sleep 2000 
  39. WshShell.SendKeys "{TAB 9}" 
  40. Wscript.Sleep 2000 
  41. WshShell.SendKeys "{ENTER}" 
  42. elseif instr(1,strContent,"已經(jīng)有其它用戶會(huì)話正在進(jìn)行中:",1)>0 Then 
  43. WshShell.SendKeys "{TAB 2}" 
  44. Wscript.Sleep 2000 
  45. WshShell.SendKeys "{ENTER}" '點(diǎn)擊繼續(xù)運(yùn)行 
  46. Wscript.Sleep 20000 
  47. if ie.busy=false And ie.readystate = 4 then '網(wǎng)頁內(nèi)容加載完畢 
  48. WshShell.appactivate"Junos Pulse Secure Access Service - 主頁" 
  49. Wscript.Sleep 2000 
  50. strContent=ie.document.body.innerText '讀取網(wǎng)頁內(nèi)容    
  51. if instr(1,strContent,"內(nèi)網(wǎng)主頁",1)>0 Then '如果存在該標(biāo)簽,表明已經(jīng)成功登錄 
  52. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  53. f1.writeline(1) 
  54. f1.Close() 
  55. Wscript.Sleep 2000 
  56. WshShell.appactivate"Junos Pulse Secure Access Service - 主頁"   
  57. Wscript.Sleep 2000 
  58. WshShell.SendKeys "{TAB 9}" 
  59. Wscript.Sleep 2000 
  60. WshShell.SendKeys "{ENTER}" 
  61. else 
  62. '將0寫入文件 
  63. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  64. f1.writeline(0) 
  65. f1.Close() 
  66. end if 
  67. else 
  68. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  69. f1.writeline(0) 
  70. f1.Close() 
  71. end if 
  72. else 
  73. '將0寫入文件 
  74. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  75. f1.writeline(0) 
  76. f1.Close() 
  77. end if 
  78. else   
  79. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  80. f1.writeline(0) 
  81. f1.Close() 
  82. end if 
  83. else   
  84. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  85. f1.writeline(0) 
  86. f1.Close() 
  87. end if 
  88. else   
  89. Set f1=fso.OpenTextFile("C:\SSLVPN監(jiān)控腳本\cosbulk\judge.txt",2,True) 
  90. f1.writeline(0) 
  91. f1.Close() 
  92. end if 
  93. ie.quit 
  94. Set ie=nothing 
  95. Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where Name='dsNcService.exe'")   
  96. For Each objProcess In colProcessList   
  97. Set list = GetObject("winmgmts:").execquery("Select * from Win32_Process where Name='dsNcService.exe'")   
  98. if list.count > 0 then                             '檢測(cè)進(jìn)程是否存在   
  99. Close_Process "dsNcService.exe" 
  100. end if   
  101. Next 
  102. Wscript.Sleep 5000 
  103. Loop 

上述腳本程序?qū)⒚看螜z測(cè)SSLVPN系統(tǒng)可用性的結(jié)果寫入judge.txt中,1表示系統(tǒng)正常,0表示系統(tǒng)出現(xiàn)故障,下面需要將該狀態(tài)信息傳送給Zabbix,由Zabbix做出判斷和展示;在Zabbix需要進(jìn)行如下設(shè)置:

(1)在測(cè)試主機(jī)的items中加入對(duì)應(yīng)監(jiān)控項(xiàng),監(jiān)控項(xiàng)的屬性如下:Name為"The availability of SSLVPN",Key為"vfs.file.regmatch[judge.txt,1]",Interval為30秒,其他時(shí)間屬性可以按照自己需求設(shè)置。該監(jiān)控項(xiàng)的意思是每隔30秒去檢測(cè)judge.txt中的內(nèi)容,如果文件內(nèi)容是1,則返回值為1;否則返回0,這樣就能判斷SSLVPN系統(tǒng)是否可用,實(shí)現(xiàn)了對(duì)其可用性的實(shí)時(shí)自動(dòng)監(jiān)控。

(2)創(chuàng)建一個(gè)Trigger,用于判斷SSLVPN應(yīng)用狀態(tài)是否發(fā)生變化,如果發(fā)生變化,將在頁面展示報(bào)警信息;Trigger屬性設(shè)置如下:Name為"SSLVPN Service is unavailable",Expression為"{vfs.file.regmatch[judge.txt,1].last(0)}=0&{vfs.file.regmatch[judge.txt,1].prev(0)=0";該Trigger表示如果程序連續(xù)兩次檢測(cè)SSLVPN系統(tǒng)為不可用狀態(tài),則判定SSLVPN應(yīng)用出現(xiàn)故障。

(3)創(chuàng)建一個(gè)Action。Action的主要屬性設(shè)置如下:Name為"The SSLVPN monitorning",觸發(fā)條件Conditions為前面所設(shè)置的Trigger"SSLVPN Service is unavailable",Operations為"Send message to users:管理員",Delay為"Immediately"。該Action的意思是當(dāng)觸發(fā)對(duì)應(yīng)Trigger時(shí),Zabbix會(huì)立即向管理員發(fā)送報(bào)警短信。

四.成果展示

下面將對(duì)本系統(tǒng)對(duì)于DHCP、Radius認(rèn)證、Wins和SSLVPN應(yīng)用系統(tǒng)的自動(dòng)監(jiān)控效果進(jìn)行展示:

(1)DHCP應(yīng)用的自動(dòng)監(jiān)控測(cè)試

為測(cè)試需要,本文選擇在非工作時(shí)間暫停一下DHCP應(yīng)用,大約20秒以后,Zabbix監(jiān)控頁面就會(huì)出現(xiàn)如下圖4所示的報(bào)警信息:

 

圖4 DHCP應(yīng)用故障的報(bào)警信息

同時(shí),手機(jī)也會(huì)收到報(bào)警短信,但手機(jī)不方便截圖,此處省略。然后再恢復(fù)DHCP應(yīng)用,大約20秒后,Zabbix監(jiān)控頁面的報(bào)警信息就會(huì)消失,同時(shí)手機(jī)也會(huì)收到DHCP應(yīng)用恢復(fù)的短信。

(2)Radius認(rèn)證應(yīng)用的自動(dòng)監(jiān)控測(cè)試

對(duì)于Radius認(rèn)證應(yīng)用的監(jiān)控測(cè)試,本文采用同樣的方式暫停一下Radius應(yīng)用,大約15秒后,Zabbix監(jiān)控頁面會(huì)出現(xiàn)如下圖5所示的報(bào)警信息:

圖5 Radius應(yīng)用故障的報(bào)警信息

同時(shí)手機(jī)也會(huì)收到Radius應(yīng)用故障的報(bào)警短信。恢復(fù)Radius應(yīng)用大約15秒后,Zabbix監(jiān)控頁面的報(bào)警信息會(huì)消失,手機(jī)同樣也能收到Radius應(yīng)用恢復(fù)正常的短信。

(3)Wins應(yīng)用的自動(dòng)監(jiān)控測(cè)試

對(duì)于Wins應(yīng)用的監(jiān)控測(cè)試,暫停一下Wins應(yīng)用后,大約15秒左右,Zabbix監(jiān)控頁面會(huì)出現(xiàn)如下圖6所示的報(bào)警信息:

圖6 Wins應(yīng)用故障的報(bào)警信息

同時(shí)手機(jī)也會(huì)收到Wins應(yīng)用故障的報(bào)警短信?;謴?fù)Wins應(yīng)用大約15秒后,Zabbix監(jiān)控頁面的報(bào)警信息會(huì)消失,手機(jī)同樣也能收到Wins應(yīng)用恢復(fù)正常的短信。

(4)SSLVPN應(yīng)用的自動(dòng)監(jiān)控測(cè)試

造成SSLVPN系統(tǒng)不可用的原因有很多,如網(wǎng)絡(luò)不通、設(shè)備硬軟件故障、Radius認(rèn)證服務(wù)異常(本SSLVPN系統(tǒng)的用戶認(rèn)證方式采用的是Radius認(rèn)證)等,本次測(cè)試采用模擬Radius認(rèn)證服務(wù)異常來驗(yàn)證系統(tǒng)的監(jiān)控效果。暫停一下Radius認(rèn)證服務(wù)之后,大約30秒后,Zabbix監(jiān)控頁面會(huì)出現(xiàn)如下圖7所示的報(bào)警信息:

圖7 Radius應(yīng)用故障和SSLVPN應(yīng)用系統(tǒng)故障的報(bào)警信息

同時(shí)手機(jī)會(huì)收到Radius和SSLVPN應(yīng)用故障的報(bào)警短信。待Radius應(yīng)用恢復(fù)大約30秒后,Zabbix監(jiān)控頁面的報(bào)警信息會(huì)消失,手機(jī)同樣也能收到Radius和SSLVPN應(yīng)用恢復(fù)正常的短信。

五.總結(jié)與展望

本文介紹了開源網(wǎng)絡(luò)監(jiān)控系統(tǒng)Zabbix在應(yīng)用監(jiān)控方面的缺陷,結(jié)合某公司自身的Zabbix應(yīng)用實(shí)踐經(jīng)驗(yàn),給出了解決Zabbix應(yīng)用監(jiān)控方面缺陷的一套方案,即通過二次開發(fā)的方式對(duì)Zabbix原型系統(tǒng)進(jìn)行改造,打造一套支持針對(duì)應(yīng)用狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控的自動(dòng)監(jiān)控系統(tǒng)。目前該自動(dòng)監(jiān)控系統(tǒng)已經(jīng)在公司內(nèi)部得到廣泛應(yīng)用,支持對(duì)DHCP、Radius認(rèn)證、Wins及SSLVPN應(yīng)用系統(tǒng)狀態(tài)的實(shí)時(shí)監(jiān)控,我們計(jì)劃后期將持續(xù)改造該監(jiān)控系統(tǒng),盡可能將所有應(yīng)用系統(tǒng)納入實(shí)時(shí)監(jiān)控的范圍。本文重在思路,未來其他有需求的企業(yè)可以按照這個(gè)思路,結(jié)合自身的實(shí)際網(wǎng)絡(luò)環(huán)境對(duì)Zabbix實(shí)施二次開發(fā),形成符合自身需求的一體化自動(dòng)監(jiān)控系統(tǒng)。同時(shí)我們也應(yīng)該持續(xù)關(guān)注Zabbix系統(tǒng)的版本變更,希望未來Zabbix能夠在應(yīng)用狀態(tài)的實(shí)時(shí)監(jiān)控方面有所突破。

責(zé)任編輯:黃丹 來源: 51CTO.com
相關(guān)推薦

2013-04-03 14:08:10

VAN網(wǎng)絡(luò)應(yīng)用網(wǎng)絡(luò)架構(gòu)

2011-03-29 11:27:37

監(jiān)控Zabbix

2017-03-07 14:48:53

應(yīng)用運(yùn)維CMDB

2009-06-05 08:58:30

2016-11-25 09:10:39

運(yùn)維管理新思維

2013-04-03 09:22:14

虛擬化網(wǎng)絡(luò)虛擬化

2011-03-29 14:03:31

監(jiān)控Zabbix

2013-09-26 21:50:11

RIILIT綜合監(jiān)控

2014-05-21 14:37:27

Zabbix監(jiān)控MySQL

2014-07-21 17:08:25

浪潮NF8460M3產(chǎn)品解析

2013-04-03 14:25:22

虛擬化網(wǎng)絡(luò)網(wǎng)絡(luò)應(yīng)用網(wǎng)絡(luò)架構(gòu)

2015-07-03 08:58:14

雙因子驗(yàn)證ownCloud

2016-04-07 22:11:13

時(shí)速云Cloud NativDocker

2019-12-05 10:40:41

DockerMySQL數(shù)據(jù)庫(kù)

2014-03-13 14:56:34

Zabbix端口監(jiān)控

2011-03-29 11:28:03

Linux安裝zabbix

2014-07-10 10:43:49

zabbix主從監(jiān)控

2011-03-29 13:25:10

Zabbix監(jiān)控

2024-09-05 12:34:12

2022-06-20 12:17:06

運(yùn)維監(jiān)控數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)