Nagios監(jiān)控Windows主機的方法
Nagios監(jiān)控Windows主機
一、 介紹
本文用來說明如何監(jiān)控Windows主機的本地服務(wù)和特性,包括:
內(nèi)存占用率
CPU負(fù)載
Disk利用率
服務(wù)狀態(tài)
運行進程
等等
在Windows主機上的公眾化服務(wù)(如HTTP、FTP、POP3等)可以查閱監(jiān)控公眾化服務(wù)這篇文檔。
注意:如下的內(nèi)容是假定你已經(jīng)按照快速安裝指南安裝好了Nagios系統(tǒng)之后做的,下面所使用的樣例配置文件(如commands.cfg、templates.cfg等)已經(jīng)在安裝過程中安裝到位。
二、概覽
對Windows機器的監(jiān)控私有服務(wù)需要在機器上安裝代理程序。代理將會在檢測插件與Nagios服務(wù)之間起網(wǎng)關(guān)代理作用。如果沒有在機器上安裝代理的話,Nagios將無法對Windows私有服務(wù)或?qū)傩缘冗M行監(jiān)控。
在下面例子中,將在Windows機器上安裝NSClient++外部構(gòu)件并使用check_nt插件檢測和與NSClient++構(gòu)件進行通訊。如果你按照指南來安裝的話,check_nt插件已經(jīng)安裝到了Nagios服務(wù)器上。
如果愿意,可以用其他的Windows代理(象NC_Net)替代NSClient++構(gòu)件所起的作用-只是要稍稍改一下對應(yīng)的命令和服務(wù)定義等。下面將只是討論安裝了NSClient++外部構(gòu)件的情況。
三、步驟
為完成對Windows機器的檢測,有幾個步驟要做,它們是:
確認(rèn)一下首要條件;
在Windows機器上安裝代理(在本例中是安裝NSClient++構(gòu)件);
給Windows機器創(chuàng)建新的主機和服務(wù)對象定義;
重啟動Nagios守護進程。
四、 已經(jīng)做了什么?
為使過程簡單,已經(jīng)完成了少量配置文件的工作:
已經(jīng)把check_nt命令加入到了commands.cfg文件中,就可以直接使用check_nt插件來監(jiān)控Windows服務(wù);
一個Windows機器的主機對象模板(命名為windows-server)已經(jīng)在templates.cfg文件里創(chuàng)建好了,可以更容易地加入一個新的Windows主機對象定義。
常用的配置文件可以在/usr/local/nagios/etc/objects/目錄里找到。如果愿意可以對里面的對象進行修改以適應(yīng)你的要求。但是,如果你沒有熟悉配置Nagios之前勸你不要這么做。開始時可以只是按照下面的指令操作來快速完成監(jiān)控Windows機器。
五、首要條件
首次監(jiān)控一臺Winodws機器時需要對Nagios做點額外的工作,記住,僅僅是監(jiān)控第一臺Windows機器時需要做這些工作。
編輯Nagios的主配置文件
- vi /usr/local/nagios/etc/nagios.cfg
把下面這行最前面的#號去掉:
- #cfg_file=/usr/local/nagios/etc/objects/windows.cfg
保存配置文件并退出。
剛才做的是什么呢?是讓Nagios起用/usr/local/nagios/etc/objects/windows.cfg這個配置文件里的對象定義。在這個配置文件里可以加些Windows的主機與服務(wù)對象定義。該配置文件里已經(jīng)包含有幾個樣例主機、主機組及服務(wù)對象定義。對于第一臺Windows機器,可以只是簡單地修改里面已經(jīng)有的主機與服務(wù)對象定義而不要新創(chuàng)建一個。
六、安裝Windows代理程序
在用Nagios監(jiān)控Windows機器的私有服務(wù)之前,需要先在機器上安裝代理程序。推薦使用NSClient++外部構(gòu)件,它可以在http://sourceforge.net/projects/nscplus找到。如下指令可以安裝一個基本的NSClient++外部構(gòu)件,同時也配置好Nagios來監(jiān)控這臺Windows機器。
1.從http://sourceforge.net/projects/nscplus站點下載最新穩(wěn)定版的NSClient++軟件包;
2.展開軟件包到一個目錄下,如C:\NSClient++;
3.打開一個命令行窗口并切換到C:\NSClient++目錄下;
4.用下面命令將NSClient++系統(tǒng)服務(wù)注冊到系統(tǒng)里:
- nsclient++ /install
5.用下面命令安裝NSClient++系統(tǒng)托盤程序('SysTray'是大小寫敏感的):
- nsclient++ SysTray
6.打開服務(wù)管理器并確認(rèn)NSClientpp服務(wù)可以在桌面交互(看一下服務(wù)管理器里的'Log On'選項頁),如果沒有允許桌面交互,點一下里面的選擇項打開它。

7.編輯NSC.INI文件(位于C:\NSClient++目錄)并做如下修改:
去掉在[modules]段里的列出模塊程序的注釋,除了CheckWMI.dll和RemoteConfiguration.dll;
最好是修改一下在[Settings]段里的'password'選項;
去掉在[Settings]段里的'allowed_hosts'選項注釋,把Nagios服務(wù)所在主機的IP加到這一行里,或是置為空,讓全部主機都可以聯(lián)入;
確認(rèn)一下在[NSClient]段里的'port'選項里已經(jīng)去掉注釋并設(shè)置成'12489'(默認(rèn)端口);
8.用下面命令啟動NSClient++服務(wù):
- nsclient++ /start
9.如果安裝正確,一個新的圖標(biāo)會出現(xiàn)在系統(tǒng)托盤里,是個黃圈里面有個黑色的'M';
10.完成了。這臺Windows機器可以加到Nagios監(jiān)控配置里了...
七、配置Nagios
為監(jiān)控Windows機器下面要在Nagios配置文件里加幾個對象定義。
編輯方式打開windows.cfg文件。
- vi /usr/local/nagios/etc/objects/windows.cfg
給Windows機器加一個新的主機對象定義以便監(jiān)控。如果是被監(jiān)控的第一臺Windows機器,可以只是修改windows.cfg文件里的對象定義。修改host_name、alias和address域以符合那臺Windows機器。
- define host{
- use windows-server ; Inherit default values from a Windows server template (make sure you keep this line!)
- host_name winserver
- alias My Windows Server
- address 192.168.1.2
- }
好了。下面可以加幾個服務(wù)定義(在同一個配置文件里)以使Nagios監(jiān)控Windows機器上的不同屬性內(nèi)容。如果是第一臺Windows機器,可以只是修改windows.cfg里的服務(wù)對象定義。
注意:用你剛剛加好的主機對象定義里的host_name來替換例子里的"winserver"。
加入下面的服務(wù)定義以監(jiān)控運行于Windows機器上的NSClient++外部構(gòu)件的版本。當(dāng)?shù)綍r間要升級Windows機器上的外部構(gòu)件時這信息會很用有,因為它可以告知這臺Windows機器上的NSClient++需要升級到最新版本。
- define service{
- use generic-service
- host_name winserver
- service_description NSClient++ Version
- check_command check_nt!CLIENTVERSION
- }
加入下面的服務(wù)定義以監(jiān)控Windows機器的啟動后運行時間。
- define service{
- use generic-service
- host_name winserver
- service_description Uptime
- check_command check_nt!UPTIME
- }
加入下面的服務(wù)定義可監(jiān)控Windows機器的CPU利用率,并在5分鐘CPU負(fù)荷高于90%時給出一個緊急警報或是高于80%時給出一個告警警報。
- define service{
- use generic-service
- host_name winserver
- service_description CPU Load
- check_command check_nt!CPULOAD!-l 5,80,90
- }
加入下面的服務(wù)定義可監(jiān)控Windows機器的內(nèi)存占用率,并在5分鐘內(nèi)存占用率高于90%時給出一個緊急警報或是高于80%時給出一個告警警報。
- define service{
- use generic-service
- host_name winserver
- service_description Memory Usage
- check_command check_nt!MEMUSE!-w 80 -c 90
- }
加入下面的服務(wù)定義可監(jiān)控Windows機器的C:盤的磁盤利用率,并在磁盤利用率高于90%時給出一個緊急警報或是高于80%時給出一個告警警報。
- define service{
- use generic-service
- host_name winserver
- service_description C:\ Drive Space
- check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
- }
加入下面的服務(wù)定義可監(jiān)控Windows機器上的W3SVC服務(wù)狀態(tài),并在W3SVC服務(wù)停止時給出一個緊急警報。
- define service{
- use generic-service
- host_name winserver
- service_description W3SVC
- check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
- }
加入下面的服務(wù)定義可監(jiān)控Windows機器上的Explorer.exe進程,并在進程沒有運行時給出一個緊急警報。
- define service{
- use generic-service
- host_name winserver
- service_description Explorer
- check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
- }
都好了,已經(jīng)加好了基礎(chǔ)服務(wù)定義,可以監(jiān)控Windows機器了,保存一下配置文件。
八、 口令保護
如果想指定保存在Windows機器上NSClient++配置文件里的口令,可以修改check_nt命令定義,讓它帶著口令。編輯方式打開commands.cfg文件。
- vi /usr/local/nagios/etc/commands.cfg
修改check_nt命令的定義,帶上"-s "命令參數(shù)(這里的PASSWORD 要換成你Windows機器的真正口令),象這樣:
- define command{
- command_name check_nt
- command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
- }
保存文件退出。
九、重啟動Nagios
如果修改好Nagios配置文件,需要驗證你的配置文件并重啟動Nagios。
如果驗證配置文件過程中有什么錯誤信息,在做下一步前一定要修正好配置文件。一定要保證驗證過程中不再有出錯信息后再啟動或重啟動Nagios!
【編輯推薦】