插件的安装和使用

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”说明每次探测发送一个包。

有很多朋友问我这样的问题,如何监听非默认端口的服务。下面我就举例说明一下这个问题:
例如:现需检查的一个运行在8080端口上的http服务。那么我们可以对commands.cfg文件中对关于check_http的声明做如下修改(红色部分为添加的内容)。
 
代码:
# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -H $HOSTADDRESS$ -p $ARG1$
}
其中$ARG1$是指在调用这个命令的时候,命令后面的第一个参数。

再把services.cfg中,对应服务的检测命令后面加一个参数:
 
代码:
define service {
host_name ...
...
check_command check_http!8080
}
这样就可以对8080端口的http服务进行监控了。如果你要添加多个参数的时候,也可以类似操作。

综上,插件的安装和调用方法也就举例介绍完毕了,大家在使用中也可以使用自己写的检测脚本来完成比较特殊的检测功能。Enjoy