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