NsClient++來監控windows主機有三種方式:check_nt,check_nrpe,nsca.
相對而言,check_nrpe已經可以滿足大部分的監控任務要求了。
這三種方式在nsclient的PDF中說的很詳細,但全是E文,根據我自己的部署過程,邊做邊寫下自己理解:
check_nt的使用方法:
這是NsClient++默認的使用方法,但是他可以監控的功能比較基礎,應該說是一種用於上手的監控手段吧。
語法: check_nt -H host -v variable [-p port] [-w warning] [-c critical] [-l params] [-d SHOWALL] [-u] [-t timeout] 選項: -h, --help 顯示幫助
-V, --version 顯示版本信息-H, --hostname=HOST 被監控主機名稱或IP
-p, --port=INTEGER 監控端口(默認為1248,不過我的nagios安裝后端口為12489)
-s, --secret=<password> 要求的密碼
-w, --warning=INTEGER 引發報警狀態的閥值
-c, --critical=INTEGER引發嚴重錯誤狀態的閥值
-t, --timeout=INTEGER 連接嘗試超時秒數 (默認 -l, --params=<parameters> 參數傳遞給指定的監控項 (見下文)
-d, --display={SHOWALL}顯示選項(目前僅支持SHOWALL)
-u, --unknown-timeout多長時間后返回 UNKNOWN)
-v, --variable=STRING 監控參數 監控參數: CLIENTVERSION = Get the NSClient version 如果用 -l <version> 指定版本號,則版本不同時會報警CPULOAD = 最后X分鍾CPU的平均負載。
-l 格式為:-l <minutes range>,<warning threshold>,<critical threshold>。 時間范圍不能超過 24*60分鍾
閥值是一個百分比,最多一次可以監控10個閥值,比如: ie: -l 60,90,95,120,90,95
UPTIME = 獲得主機開機時間。無指定參數,也沒有報警與錯誤閥值。
USEDDISKSPACE = 指定磁盤的使用率。只要求 -l 指定磁盤的驅動器號。用-w 指定報警閥值 用-c指定錯誤閥值
MEMUSE = 內存使用率。用-w 指定報警閥值 用-c指定錯誤閥值
SERVICESTATE = 監控一個或多個服務的狀態。-l 格式為:-l <service1>,<service2>,<service3>,...。可以使用-d SHOWALL指定返回某個服務的狀態。
PROCSTATE = 監控某個或某幾個進程是否在運行。命令格式類似於SERVICESTATECOUNTER = 監控Windows NT/2000的任何性能計數器。
-l 格式為:-l "\\<performance object>\\counter","<描述>“ 描述參數是可選的僅用於要求輸出浮點數的計數器。
如果<描述>內容中不包含"%%",那它就做為標 題顯示。例如:"Paging file usage is %%.2f %%%%""%%.f %%%% paging file used."
對於計數器中包含“\","$"字符的最好都用上轉值符號”\",以保證計數器名稱正確。
INSTANCES = 監控Windows NT/2000的任何性能計數器對象。
格式: check_nt -H <hostname> -p <port> -v INSTANCES -l <counter object> <counter object>為一項性能計數器 (比如: Process),如果計數器名稱有兩個單詞,需要用括號括起來。返加的結果為用逗號分開的各計數器數據列表。
這樣做的目的在於不登錄進系統就可以在命令行下直接運行perfmon中的指定計數器。它也可以用做腳本自動創建Nagios服務配置文件。
例子:check_nt -H 192.168.1.1 -p 1248 -v INSTANCES -l Process
以下是nagios的windows.cfg中使用check_nt的監控例子:
#定義要被監控的windows主機名與主機的IP地址
define host{use windows-server
host_name ruanxi
alias My Windows Server
address 192.168.0.5
}
#定義一個主機名組(可以不用管它)
define hostgroup{
hostgroup_name windows-servers
alias Windows Servers
}
#檢查windows主機是否已經安裝了NSClient++,及它的版本號
define service{
use generic-service
host_name ruanxi
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}
#監控 windows 主機的開機運作時間
define service{
use generic-service
host_name ruanxi
service_description Uptime
check_command check_nt!UPTIME
}
#監控 windows 主機的 CPU 負載
define service{
use generic-service
host_name ruanxi
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90 #CPU如果到達80%則報警,到達90%則警笛
}
#監控 windows 主機的內存使用狀況
define service{
use generic-service
host_name ruanxi
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90 #內存使用到達80%則warn,到達90%則Critical
}
#監控 windows 主機的 C:\ 的空間使用量
define service{
use generic-service
host_name ruanxi
service_description C:\ Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
#監控 windows主機的W3SVC設置的動作狀況
define service{
use generic-service
host_name ruanxi
service_description W3SVC
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}
#監控 windows 主機的 Explorer.exe 執行程序的運作狀況,如程序終止了,則會發 CRITICA
define service{
use generic-service
host_name ruanxi
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}
#監控 windows 主機的 MSSQLSERVER 服務的運作狀況,如服務終止了,則會發 CRITICAL
define service{
use generic-service
host_name ruanxi
service_description MSSQL
check_command check_nt!SERVICESTATE!-d SHOWALL -l MSSQLSERVER
}
