nagios core是没有内置任何检查机制进行主机服务或者网络的监控。对于这些工做,都是交给额外的程序,就是nagios plugins程序来完成。
注意在nagios有Addons与Plugins的区分。这个后面会说到。html
Plugins是可执行程序或者脚本,能够在命令行执行,用于获取主机或者服务的状态。Nagios core调用执行plugins而后plugins将执行的results返回给Nagios core。而后nagios 处理这些结果,而后作出必要的actions,如运行event handlers,sending out notifications。。。ios
Plugins做为一个抽象层,位于Nagios core与 具体监控对象。
api
plugin return code | Services State | Host State |
0 | OK | UP |
1 | WARNING | UP orr DOWN/UNREACHABLE* |
2 | CRITICAL | DOWN/UNREACHABLE |
3 | UNKNOWN | DOWN/UNREACHABLE |
Note: 若是将use_aggressive_host_checking 设置了enabled。那么返回码1对于host就是down.若是没设置,那么1对于host是UP.讨论状况点击网络
插件至少应返回至少一行文本输出。 从Nagios Core 3开始,插件能够选择返回多行输出。 插件还可能返回可由外部应用程序处理的可选性能数据。 插件输出的基本格式以下所示参考:性能
TEXT OUTPUT | OPTIONAL PERFDATA
LONG TEXT LINE 1
LONG TEXT LINE 2
...
LONG TEXT LINE N | PERFDATA LINE 2
PERFDATA LINE 3
...
PERFDATA LINE Nspa
经过管道符号来分割出可选的性能数据。后面的LONG TEST LINE * 也是可选的数据。插件
plugin返回的数据都会对应该监控会话或者监控项范畴中的一个宏变量:命令行
DISK OK - free space: / 3326 MB (56%);
# $SERVICEOUTPUT$DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968
DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968 / 15272 MB (77%); /boot 68 MB (69%); /home 69357 MB (27%); /var/log 819 MB (84%); | /boot=68MB;88;93;0;98 /home=69357MB;253404;253409;0;253414 /var/log=818MB;970;975;0;980
Nagios Core 只会读取第一个4KB数据。固然能够经过MAX_PLUGIN_OUTPUT_LENGTH在include/nagios.h.in 文件。code
Plugin命令要经过nagios的command进行一层封装。command定义新的名字,并定义对应plugin的具体执行命令,包括参数,其中在command的定义的参数中,能够包含macro,这些macro能够来自command对象被用在的地方。想用在service,最多的可能仍是主机和参数,若是ARG1,ARG2...
Commnad定义后,其新名字就能够被用于其它定义中,且经过command名字来传递参数是这种形式one_command!arg1!arg2 参数经过!来分割,而后参数就会出入ARG1 ARG2宏中,从而经过宏传递给使用宏的地方,像command定义中plugin中参数使用。server