本文參考網址: http://nagios-cn.sourceforge.net/nagios-cn/
4.7. 監控Windows主機
本文用來說明如何監控Windows主機的本地服務和特性,包括:
- 內存佔用率
- CPU負載
- Disk利用率
- 服務狀態
- 運行進程
- 等等
在Windows主機上的公衆化服務(如HTTP、FTP、POP3等)可以查閱監控公衆化服務這篇文檔。
注意
如下的內容是假定你已經按照快速安裝指南安裝好了Nagios系統之後做的,下面所使用的樣例配置文件(如commands.cfg、templates.cfg等)已經在安裝過程中安裝到位。
對Windows機器的監控私有服務需要在機器上安裝代理程序。代理將會在檢測插件與Nagios服務之間起網關代理作用。如果沒有在機器上安裝代理的話,Nagios將無法對Windows私有服務或屬性等進行監控。
在下面例子中,將在Windows機器上安裝NSClient++外部構件並使用check_nt插件檢測和與NSClient++構件進行通訊。如果你按照指南來安裝的話,check_nt插件已經安裝到了Nagios服務器上。
如果願意,可以用其他的Windows代理(象NC_Net)替代NSClient++構件所起的作用-只是要稍稍改一下對應的命令和服務定義等。下面將只是討論安裝了NSClient++外部構件的情況。
爲完成對Windows機器的檢測,有幾個步驟要做,它們是:
- 確認一下首要條件;
- 在Windows機器上安裝代理(在本例中是安裝NSClient++構件);
- 給Windows機器創建新的主機和服務對象定義;
- 重啓動Nagios守護進程。
爲使過程簡單,已經完成了少量配置文件的工作:
- 已經把check_nt命令加入到了commands.cfg文件中,就可以直接使用check_nt插件來監控Windows服務;
- 一個Windows機器的主機對象模板(命名爲windows-server)已經在templates.cfg文件裏創建好了,可以更容易地加入一個新的Windows主機對象定義。
常用的配置文件可以在/usr/local/nagios/etc/objects/目錄裏找到。如果願意可以對裏面的對象進行修改以適應你的要求。但是,如果你沒有熟悉配置Nagios之前勸你不要這麼做。開始時可以只是按照下面的指令操作來快速完成監控Windows機器。
首次監控一臺Winodws機器時需要對Nagios做點額外的工作,記住,僅僅是監控第一臺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的主機與服務對象定義。該配置文件裏已經包含有幾個樣例主機、主機組及服務對象定義。對於第一臺Windows機器,可以只是簡單地修改裏面已經有的主機與服務對象定義而不要新創建一個。
在用Nagios監控Windows機器的私有服務之前,需要先在機器上安裝代理程序。推薦使用NSClient++外部構件,它可以在http://sourceforge.net/projects/nscplus找到。如下指令可以安裝一個基本的NSClient++外部構件,同時也配置好Nagios來監控這臺Windows機器。
1.從http://sourceforge.net/projects/nscplus站點下載最新穩定版的NSClient++軟件包;
2.展開軟件包到一個目錄下,如C:\NSClient++;
3.打開一個命令行窗口並切換到C:\NSClient++目錄下;
4.用下面命令將NSClient++系統服務註冊到系統裏:
nsclient++ /install
5.用下面命令安裝NSClient++系統托盤程序('SysTray'是大小寫敏感的):
nsclient++ SysTray
6.打開服務管理器並確認NSClientpp服務可以在桌面交互(看一下服務管理器裏的'Log On'選項頁),如果沒有允許桌面交互,點一下里面的選擇項打開它。
7.編輯NSC.INI文件(位於C:\NSClient++目錄)並做如下修改:
- 去掉在[modules]段裏的列出模塊程序的註釋,除了CheckWMI.dll和RemoteConfiguration.dll;
- 最好是修改一下在[Settings]段裏的'password'選項;
- 去掉在[Settings]段裏的'allowed_hosts'選項註釋,把Nagios服務所在主機的IP加到這一行裏,或是置爲空,讓全部主機都可以聯入;
- 確認一下在[NSClient]段裏的'port'選項裏已經去掉註釋並設置成'12489'(默認端口);
8.用下面命令啓動NSClient++服務:
nsclient++ /start
9.如果安裝正確,一個新的圖標會出現在系統托盤裏,是個黃圈裏面有個黑色的'M';
10.完成了。這臺Windows機器可以加到Nagios監控配置裏了...
爲監控Windows機器下面要在Nagios配置文件里加幾個對象定義。
編輯方式打開windows.cfg文件。
vi /usr/local/nagios/etc/objects/windows.cfg
給Windows機器加一個新的主機對象定義以便監控。如果是被監控的第一臺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
}
好了。下面可以加幾個服務定義(在同一個配置文件裏)以使Nagios監控Windows機器上的不同屬性內容。如果是第一臺Windows機器,可以只是修改windows.cfg裏的服務對象定義。
注意
用你剛剛加好的主機對象定義裏的host_name來替換例子裏的"winserver"。
加入下面的服務定義以監控運行於Windows機器上的NSClient++外部構件的版本。當到時間要升級Windows機器上的外部構件時這信息會很用有,因爲它可以告知這臺Windows機器上的NSClient++需要升級到最新版本。
define service{
use generic-service
host_name winserver
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}
加入下面的服務定義以監控Windows機器的啓動後運行時間。
define service{
use generic-service
host_name winserver
service_description Uptime
check_command check_nt!UPTIME
}
加入下面的服務定義可監控Windows機器的CPU利用率,並在5分鐘CPU負荷高於90%時給出一個緊急警報或是高於80%時給出一個告警警報。
define service{
use generic-service
host_name winserver
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}
加入下面的服務定義可監控Windows機器的內存佔用率,並在5分鐘內存佔用率高於90%時給出一個緊急警報或是高於80%時給出一個告警警報。
define service{
use generic-service
host_name winserver
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90
}
加入下面的服務定義可監控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
}
加入下面的服務定義可監控Windows機器上的W3SVC服務狀態,並在W3SVC服務停止時給出一個緊急警報。
define service{
use generic-service
host_name winserver
service_description W3SVC
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}
加入下面的服務定義可監控Windows機器上的Explorer.exe進程,並在進程沒有運行時給出一個緊急警報。
define service{
use generic-service
host_name winserver
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}
都好了,已經加好了基礎服務定義,可以監控Windows機器了,保存一下配置文件。
如果想指定保存在Windows機器上NSClient++配置文件裏的口令,可以修改check_nt命令定義,讓它帶着口令。編輯方式打開commands.cfg文件。
vi /usr/local/nagios/etc/commands.cfg
修改check_nt命令的定義,帶上"-s <PASSWORD>"命令參數(這裏的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!
————————————————————————————
監控linux 系統
參考博客:http://chenxy.blog.51cto.com/729966/175893/