Nagios的插件是真正工作在检测服务和主机工作的第一线的真正英雄,没有他,nagios系统只是一个空壳而已.因此,在安装了nagios平台之后的第一件事情就是将插件安装上去。
从nagios主页下载了最新的nagios官方插件,本文中用到的是nagios-plugins-1.4.9.tar.gz 。
1、 解压
tar xzf nagios-plugins-1.4.9.tar.gz
2、 编译
./configure --prefix=prefix
#变量prefix 为安装目录,例如/usr/local/nagios
3、 安装
make
make install
4、 检查
ls /usr/local/nagios/libexec
如果安装成功的话,你可以看到在这个目录下有很多可执行程序或者脚本,名称类似:check_icmp。
经过上述4个步骤,nagios的脚本就宣告安装成功,但是如何让这些脚本工作起来呢?nagios并没有提供每个监控程序的脚本的说明文档,想了解这些脚本如何工作的话,需要通过--h参数,显示其使用方法和参数。例如:
./check_icmp --h
Usage: check_icmp [options] [-H] host1 host2 hostn
Options:
-h, --help Print detailed help screen
-V, --version Print version information
-H specify a target -w warning threshold (currently 200.000ms,0%)
-c critical threshold (currently 500000.000ms,80%)
-n number of packets to send (currently 5)
-i max packet interval (currently 80.000ms)
-I max target interval (currently 0.000ms)
-m number of alive hosts required for success
-l TTL on outgoing packets (currently 0)
-t timeout value (seconds, currently 10)
-b icmp packet size (currenly ignored)
-v verbose
...
根据提示的方法,可以在命令行中尝试使用一下:
./check_icmp -H www.baidu.com
OK - www.baidu.com: rta 33.632ms, lost 0%|rta=33.632ms;200.000;500.000;0; pl=0%;40;80;;
可以看到状态值“OK”,以及一些详细的数据信息。
经过了上述实验,说明这些插件都是可以独立使用的,那在nagios之中,是如何调用这些插件的呢?如果要加入参数又需要用哪种格式呢?
首 先,要了解这些插件会被nagios用在什么地方。nagios有很多个cfg文件,用来定义各式各样的信息,其中hosts.cfg和 services.cfg(一般是这两个,也可能是其他定义主机和服务的配置文件)是用来定义主机和服务的信息的。这些插件就被使用在这里。例如,我在 services.cfg中定义个一需要监控的SSH服务,名称为TestSSH:
define service {
host_name TestSSH
service_description check_ssh
……
check_command check_ssh
}
host_name 项说明该服务所在的主机名,service_description项为服务的说明信息,这项的内容会显示在nagios页面中,所以要尽量简短明确。 check_command项说明要使用的命令,这个例子中的命令check_ssh就是在一个插件了。这个服务定义,明确了nagios在需要监控的内 容和监控的手段,及用check_ssh插件来监控主机TestSSH上的ssh服务。
除了直接使用插件来做check_command项的参数以外,还可以使用自己定义的命令来。例如,我定义一个需要监控的主机,名字是test.VN:
define host {
host_name test.VN
alias test.VN
address 192.168.0.1
……
check_command check-host-alive
……
}
在此例中,check_command项的参数“check-host-alive”并非一个插件,而是在commands.cfg文件中定义的一个命令。其实他的本质也是插件,只不过,他把插件加工包装了。我们来看一下在commands.cfg中对这个命令的定义:
# 'check-host-alive' command definition
define command{
command_name check-host-alive
command_line$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
}
在这个定义中,可以看到,命令名称就定义为“check-host-alive”,命令实际的操作定义为蓝色部分。我们对应check_ping的说明来分析一下这个操作的意图。
check_ping 用法:
check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>%
[-p packets] [-t timeout] [-4|-6]
首先,$USER1$这个参数在resource.cfg中定义,这个值会指向插件的目录(如:/usr/local/nagios/libexec)。“-H $HOSTADDRESS$” 是定义目标主机的地址,这个地址在hosts.cfg中定义了(如:www.baidu.com 或者 192.168.0.1)。“-w 3000.0,80%” 其中-w说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。“-c 5000.0,100%” 其中“-c”说明后面的一对值对应的是" CRITICAL",“100%”是其临界值。“-p 1”说明每次探测发送一个包。
综上,插件的安装和调用方法也就举例介绍完毕了,大家在使用中也可以使用自己写的检测脚本来完成比较特殊的检测功能。Enjoy!