分類
NsClient++來監控windows主機有三種方式:check_nt、check_nrpe、nsca。check_nt自帶很多功能,但是擴展性差,check_nrpe可以通過執行自己定義的腳本做到很好地擴展(官方推薦)。
原理
監控端通過check_nrpe把要監控的指令發送給被監控端,被監控端在本機執行監控任務,並把執行的結果發送回被監控端。
實現
以NSClient++0.3為例,示例的功能是監控某個進程是否運行。
1. 編輯NSClient配置文件NSC.ini,去掉以下幾行前面的“;”號(去掉注釋,使其生效)
NRPEListener.dll script_dir=scripts\ CheckExternalScripts.dll
2. 在NSClient安裝目錄下的scripts文件夾下,新建一個check_run.bat批處理文件,如下
文件名:check_run.bat
@echo off tasklist |find "%1" >NUL IF ERRORLEVEL 1 GOTO err IF ERRORLEVEL 0 GOTO ok :err echo CRITICAL: Process does not exist exit /B 1 :ok echo OK: The process of normal exit /B 0
3. 在NSC.ini文件中[External Scripts]下面添加如下行:
check_run=scripts\check_run.bat chrome.exe
注:是[External Scripts]而不是[External Script]
4. 重啟NSClinet
5. 可以在被監控端check_nrpe所在的目錄(CentOs默認的安裝目錄為:/usr/lib64/nagios/plugins/)
./check_nrpe -H hostip -c check_run
注:-H后寫剛才腳本所在的機器,-c后寫命令,這里對應配置文件中的check_run
如果結果與預期的一致,那么就可以繼續配置監控端了
6. 配置監控端
修改commands.cfg
增加
define command{ command_name check_run command_line /usr/lib64/nagios/plugins/check_nrpe -H yourip -c check_run }
修改windows.cfg
define service{ use generic-service-urgent,srv-pnp host_name youip ;要展示信息的機器的ip service_description check_fileexistspan check_command check_run }
效果