1.介紹
本文用來說明如何監控Windows主機的本地服務和特性,包括:
內存佔用率
CPU負載
Disk利用率
服務狀態
運行進程
等等
2.概覽
對Windows機器的監控私有服務需要在機器上安裝代理程序。代理將會在檢測插件與Nagios服務之間起網關代理作用。如果沒有在機器上安裝代理的話,Nagios將無法對Windows私有服務或屬性等進行監控。
在下面例子中,將在Windows機器上安裝NSClient++外部構件並使用check_nt插件檢測和與NSClient++構件進行通訊。
3.安裝步驟:
在用Nagios監控Windows機器的私有服務之前,需要先在機器上安裝代理程序。推薦使用NSClient++外部構件,它可以在http://nsclient.org/nscp/downloads找到。如下指令可以安裝一個基本的NSClient++外部構件,同時也配置好Nagios來監控Windows機器。
配置被監控端
1.從http://nsclient.org/nscp/downloads站點下載最新穩定版的NSClient++軟件包(這裏以監控 WindowsServer2008R2 64位系統爲例:http://files.nsclient.org/0.3.x/NSClient%2B%2B-0.3.9-x64.zip);
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'(默認端口);
[log]項,debug=1,file=nsclient.log
8.用下面命令啓動NSClient++服務:
nsclient++ /start
9.如果安裝正確,一個新的圖標會出現在系統托盤裏,是個黃圈裏面有個黑色的'M';
10.在防火牆上將12489端口例外和開啓ICMP回顯功能。
配置監控端
1.定義命令
vi /usr/local/nagios/etc/objects/commands.cfg
增加下面的內容
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
}
如果NSClient設置了連接需要密碼,則應寫成如下格式
$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
2.增加監控項目
修改nagios.cfg
vim /usr/local/nagios/etc/nagios.cfg
添加這一行
cfg_dir=/usr/local/nagios/etc/servers
創建目錄
mkdir /usr/local/nagios/etc/servers
複製默認windows.cfg內容
cp /usr/local/nagios/etc/objects/windows.cfg /usr/local/nagios/etc/servers/win1.cfg(監控第二臺是一樣的方法:cp /usr/local/nagios/etc/servers/win1.cfg /usr/local/nagios/etc/servers/win2.cfg)
在/usr/local/nagios/etc/servers/目錄下添加個組group.cfg,方便監控多臺windows主機(這裏先列舉監控兩臺windows主機)。
cd /usr/local/nagios/etc/servers
touch group.cfg
vim group.cfg
#給Windows機器加一個新的主機對象定義以便監控
vi /usr/local/nagios/etc/servers/win.cfg
define host{
use windows-server
host_name winserver
alias My Windows Server
address 192.168.1.2;監控客戶機的IP地址
}
define hostgroup{
hostgroup_name windows-servers
alias Windows Servers
};監控第二臺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 -lW3SVC
}
#定義可監控Windows機器上的Explorer.exe進程,並在進程沒有運行時給出一個緊急警報
define service{
use generic-service
host_name winserver
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -lExplorer.exe
}
配置完成後,檢查nagios的配置文件是否正確
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
重啓nagios服務
service nagios restart
此時,就可以監控windows主機了,通過http查看