Nagios對Windows機器的監(jiān)控
Nagios對Windows機器的監(jiān)控
監(jiān)控方法的選擇
其實Nagios對服務器的監(jiān)控方法有很多,但大體上可以分為三種:
1. 通過snmp協(xié)議編寫腳本使用snmpwalk或snmpget等client程序?qū)h程主機進行數(shù)據(jù)的抓取
2. 走c/s方式,通過特定的客戶端用他們自己的協(xié)議對服務器進行數(shù)據(jù)抓取,這一類需要在目標服務器上安裝服務器端(即Listener),服務器端通過自己的程序?qū)Ψ掌魃系臄?shù)據(jù)進行收集(wmi,vbscript),***再由nagios服務器上的客戶端來取數(shù)據(jù)。這類的代表應用有NSClient++,pNSClient,nrpe_nt等等
3. 還是走c/s方式,只不過這次nagios本機變成了服務器端,目標監(jiān)控服務器上通過安裝客戶端向nagios服務器推送本機的相關(guān)數(shù)據(jù)。這類的代表應用有NSCA等
鑒于我需要用到performance data來使用pnp進行繪圖,而本人編程能力非常有限,再加上我是個非常懶的SA。所以,我選擇了上面的第二類方式對我的所有Windows服務器進行監(jiān)控,選擇的應用是NSClient++。
NSClient++
NSClient++是針對Windows操作系統(tǒng)的一款簡單但是功能強大又安全的監(jiān)控服務器端,同時兼容了NSClient/NRPE/NSCA三種方式。它能監(jiān)控cpu,內(nèi)存,硬盤,進程,服務狀態(tài),性能計數(shù)器等等。NSClient++提供的CheckCommands
#p#
服務器端配置
安裝NSClient++
下載NSClient++
將下載的壓縮包解壓到任意路徑,這里舉例解壓到D盤根目錄并重命名為NSClient。從命令行進行安裝
- D:\>”NSClient\NSClient++.exe” -install
安裝成功會看到下面兩行提示
- Service NSClientpp installed…
- l NSClient++.cpp(224) Service installed!
修改配置文件
編輯nsc.ini,只針對需要修改的地方
- [modules]
- FileLogger.dll
- CheckSystem.dll
- CheckDisk.dll
- NSClientListener.dll
- NRPEListener.dll
- CheckEventLog.dll
- CheckHelpers.dll
- CheckWMI.dll
- CheckExternalScripts.dll
- LUAScript.dll
- CheckTaskSched.dll
- [Settings]
- #允許訪問的主機IP,多個主機用,分隔
- allowed_hosts=127.0.0.1/32
- #使用此ini文件作為配置文件
- use_file=1
- [log]
- file=nsclient.log
- date_mask=%Y-%m-%d %H:%M:%S
- root_folder=exe
- [NSClient]
- #允許訪問的主機IP,多個主機用,分隔
- allowed_hosts=127.0.0.1/32
- #監(jiān)聽端口
- port=5666
- socket_timeout=30
- [NRPE]
- #監(jiān)聽端口
- port=5667
- command_timeout=60
- #不使用ssl,否則容易出錯
- use_ssl=0
- #允許訪問的主機IP,多個主機用,分隔
- allowed_hosts=127.0.0.1/32
- socket_timeout=30
- #啟用performance_data(關(guān)鍵,就看著他畫圖呢)
- performance_data=1
- [NRPE Handlers]
- #定義NRPE的命令
- #監(jiān)測內(nèi)存
- check_mem=inject checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical
編輯完成以后保存關(guān)閉,然后在Windows的服務里面找到新裝的NSClientpp服務,啟動它。
#p#
客戶端配置(即nagios監(jiān)控機)
修改commands.cfg,增加使用NSClient和NRPE收集數(shù)據(jù)的命令,因為NSClient監(jiān)測到的內(nèi)存大小都大于實際的物理內(nèi)存(估計可能是總計),所以使用NRPE監(jiān)測內(nèi)存
- # ‘check_remote_nt_disk’ command definition,監(jiān)測硬盤使用量
- define command{
- command_name check_remote_nt_disk
- command_line $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$ -w $ARG5$ -c $ARG6$
- }
- # ‘check_remote_nt_cpu’ command definition,監(jiān)測cpu負載
- define command{
- command_name check_remote_nt_cpu
- command_line $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$
- }
- # ‘check_nt_mem_nrpe’ command definition,監(jiān)測內(nèi)存使用量
- define command{
- command_name check_nt_mem_nrpe
- command_line $USER1$/check_nrpe -H $ARG1$ -n -p $ARG2$ -c $ARG3$
- }
- # ‘check_avg_disk_queue’ command definition,監(jiān)測硬盤讀寫隊列
- define command{
- command_name check_avg_disk_queue
- command_line $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$ -d $ARG5$ -w $ARG6$ -c $ARG7$
- }
修改localhost.cfg中service定義里面的check_command
- define service{
- use web-service,service-pnp
- host_name web1
- service_description disk-d
- check_command check_remote_nt_disk!10.10.10.11!5666!USEDDISKSPACE!d!85!90
- }
- define service{
- use web-service,service-pnp
- host_name web1
- service_description mem
- check_command check_nt_mem_nrpe!10.10.10.11!5667!check_mem
- }
- define service{
- use web-service,service-pnp
- host_name web4
- service_description avg-disk-queue
- check_command check_avg_disk_queue!10.10.10.24!5666!COUNTER!”\\PhysicalDisk(_Total)\\Avg. Disk Queue Length”,”%.2f”!SHOWALL!14!28
- }
修改完以后重新配置nagios使配置生效
- #/etc/init.d/nagios reload
至此所有配置完成。
【編輯推薦】