nagios通過nrpe遠端執行linux指令碼,通過nsclient++遠端執行windows指令碼
nagios可以作為遠端指令碼執行器,以下是現網環境中nagios通過nrpe遠端執行指令碼的一個示例。
前言:
1、web介面
狀態:
0、 1、 2、 3
ok、warn、critical、unknown
2、裝置資訊
1)192.168.62.119 nagios監控伺服器(或者稱為監控端)
2)192.168.62.120 linux被監控端(或者稱為客戶端)
3)192.168.62.57 windows被監控端(或者稱為客戶端
3、nagios效能資料
nagios將外掛輸出中”|”號後的內容作為效能資料。效能資料格式如下:(意思是:客戶端指令碼執行的結果必須是下面這種格式,然後客戶端將該結果傳給服務端,伺服器就可以web展示該結果
'label'=value[UOM];[warn];[crit];[min];[max]
4、注意:
- 多個性能資料之間用空格分割
- label 可以包含任何字元
- 如果label中包含空格、等號、或者單引號,則label需要用單引號來括起來
- warn/crit/min/max可以為null值
value, min and max只能為負號“-” “0到9” 和小數點“.” 並且單位必須統一
例如:cpu_user=0.5%;99.9;-9; - 如果UOM單位是%,則min和max不需要再指定
- UOM單位可以是如下: 預設空,表示數量(用於使用者數、處理器數等)
- s 表示秒(也可以用us,ms)
- % 表示百分比
- B 表示位元組(也可以用KB,MB,TB,GB)
- c 一個連續的計數(如:介面傳輸的位元組數)
一、服務監控端
1、檔案commands.cfg裡面新增如下
[root ~]#vi /usr/local/nagios/etc/objects/commands.cfg
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS $ -c $ARG1$
}
2、檔案nagios.cfg裡面新增如下
注意:
1)192.168.62.120.cfg和192.168.62.57.cfg分別是2個客戶端的配置檔案
2)192.168.62.120.cfg的cfg字首不需要一定是ip,只是我為了管理方便,這麼命名而已。192.168.62.57.cfg也是為了方便命名而已
[root ~]# vi /usr/local/nagios/etc/nagios.cfg
/usr/local/nagios/etc/objects/192.168.62.120.cfg
/usr/local/nagios/etc/objects/192.168.62.57.cfg
3、配置客戶端的配置檔案
1)配置客戶端linux的配置檔案,其中”check_nrpe!check_memory“裡面的check_memory就是客戶端指令碼的命名名稱
[root ~]# vi /usr/local/nagios/etc/objects/192.168.62.120.cfg
define host{
use linux-server
host_name IDCSV10-Splunk
alias Splunk日誌伺服器
address 192.168.62.120
}
define service{
use generic-service
host_name IDCSV10-Splunk
service_description memory
check_command check_nrpe!check_memory
}
2)配置客戶端windows的配置檔案,,其中”check_nrpe!check_time“裡面的check_time就是客戶端指令碼的命名名稱
[root ~]# vi /usr/local/nagios/etc/objects/192.168.62.57.cfg
define host{
use windows-server
host_name IDCSV27_WSUS
alias Windows 補丁伺服器
address 192.168.62.57
}
define service{
use generic-service
host_name IDCSV27_WSUS
service_description memory
check_command check_nrpe!check_time
}
4、檢查配置是否正確
[root ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
5、
修改配置後需要重啟nagios
[root ~]# /etc/init.d/nagios restart
或者
[root ~]# /etc/init.d/nagios reload
二、被監控端(linux)
1、寫指令碼
在/usr/local/nagios/libexec/目錄下寫指令碼:check_memory.pl
2、命名指令碼check_memory.pl的名稱為”check_memory”
[root ~]#vi /usr/local/nagios/etc/nrpe.cfg
command[check_memory]=/usr/local/nagios/libexec/check_memory.pl -u -w 75 -c 90
3、重啟nrpe
[root ~]# /etc/init.d/xinetd restart
4、測試
在監控端執行如下命令, 引數-H後面是客戶端的ip,引數-c後面是客戶端指令碼的命名名稱
[root ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.62.120 -c check_memory
三、被監控端(windows)
前言
編輯NSClient配置檔案NSC.ini,去掉如下幾行前面的“;”號,使之生效
[modules]
NRPEListener.dll
script_dir=scripts\
CheckExternalScripts.dll
[Settings]
allowed_hosts=192.168.62.83,192.168.62.119
1、寫指令碼
在NSClient安裝目錄D:\Program Files\NSClient++\scripts\lib下寫指令碼:check_time.vbs
2、配置檔案NSC.ini,命名指令碼check_time.vbs的名稱為”check_time”
[External Scripts]
check_time=cscript.exe //T:30 //NoLogo scripts\lib\check_time.vbs 192.168.10.22 5 10
3、重啟NSClient++ (從0.4.0開始,軟體程式碼大改動,並且nsclient++改名為nscp。此處所講是0.39版本)
4、測試
在監控端執行如下命令, 引數-H後面是客戶端的ip,引數-c後面是客戶端指令碼的命名名稱
[root ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.62.57 -c check_time