Nagios事件处理程序/命令不执行

我试图configuration我的Nagios设置,当主机停机(PING服务进入HARD CRITICAL状态)时,自动在我们的售票系统中logging一张票。 我有一个脚本,将创build与“sudo -u nagios”成功运行的票证。 我有一个命令和事件处理程序设置,执行主机状态失败时,或至less出现。 但是,与该命令关联的脚本似乎没有执行,或者我添加的日志logging不起作用。 任何想法在哪里看下? 日志文件不会在调用事件处理程序时创build。

命令:

define command { command_name make-ticket command_line /etc/nagios/commands/make-ticket-wrapper "$SERVICESTATE$" "$SERVICESTATETYPE$" "$HOSTNAME" "$HOSTADDRESS$ "$HOSTSTATE" "$HOSTGROUPALIAS" "$SERVICEDESC" } 

示例主机和服务

 define host { use generic-switch host_name test alias test address 192.168.100.13 } define service { use generic-service host_name test service_description PING check_command check_ping!200.0,20%!600.0,60% normal_check_interval 5 retry_check_interval 1 event_handler make-ticket } 

包装脚本:

 #!/bin/bash # # Cut a ticket # set -x LOGFILE="/tmp/tickets.log" touch $LOGFILE echo Running make-ticket-wrapper `date` >> $LOGFILE echo Params: $* >> $LOGFILE TICKET="/etc/nagios/commands/make-ticket" SERVICESTATE="$1" SERVICESTATETYPE="$2" HOSTNAME="$3" HOSTADDRESS="$4" HOSTSTATE="$5" HOSTGROUPALIAS="$6" SERVICEDESC="$7" echo "SERVICESTATE=$SERVICESTATE" >> $LOGFILE echo "SERVICESTATETYPE=$SERVICESTATETYPE" >> $LOGFILE echo "HOSTNAME=$HOSTNAME" >> $LOGFILE echo "HOSTADDRESS=$HOSTADDRESS" >> $LOGFILE echo "HOSTSTATE=$HOSTSTATE" >> $LOGFILE echo "HOSTGROUPALIAS=$HOSTGROUPALIAS" >> $LOGFILE echo "SERVICEDESC=$SERVICEDESC" >> $LOGFILE $TICKET "$SERVICESTATE" "$SERVICESTATETYPE" "$HOSTNAME" "$HOSTADDRESS" "$HOSTSTATE" "$HOSTGROUPALIAS" "$SERVICEDESC" 2>&1 | tee -a $LOGFILE 

日志:

 [1422560163] HOST ALERT: test;DOWN;SOFT;1;(Host Check Timed Out) [1422560253] HOST ALERT: test;DOWN;SOFT;2;(Host Check Timed Out) [1422560353] HOST ALERT: test;DOWN;SOFT;3;(Host Check Timed Out) [1422560433] SERVICE ALERT: test;PING;CRITICAL;HARD;1;PING CRITICAL - Packet loss = 100% [1422560433] SERVICE EVENT HANDLER: test;PING;CRITICAL;HARD;1;make-ticket 

command_line /etc/nagios/commands/make-ticket-wrapper "$SERVICESTATE$" "$SERVICESTATETYPE$" "$HOSTNAME" "$HOSTADDRESS$ "$HOSTSTATE" "$HOSTGROUPALIAS" "$SERVICEDESC"

您在$ HOSTADDRESS $之后缺less双引号,并且在HOSTNAME,HOSTSTATE,HOSTGROUPALIAS和SERVICEDESC末尾缺less$。

当你错过了一个双引号时,它会把这行的其余部分搞砸,导致shell脚本错过一些参数。

当你忽略掉尾随的美元符号时,Nagios不会替代macros,所以它被传递到它被parsing为空variables的shell。

所有这些报价上的纳吉奥斯窒息

更改:
command_line /etc/nagios/commands/make-ticket-wrapper "$SERVICESTATE$" "$SERVICESTATETYPE$" "$HOSTNAME" "$HOSTADDRESS$ "$HOSTSTATE" "$HOSTGROUPALIAS" "$SERVICEDESC"

至:
command_line /etc/nagios/commands/make-ticket-wrapper $SERVICESTATE$ $SERVICESTATETYPE$ $HOSTNAME$ $HOSTADDRESS$ $HOSTSTATE$ $HOSTGROUPALIAS$ $SERVICEDESC$

另外你还错过了命令行中的一些$符号,看上面。 它会在那之后按预期工作。 我只是试了一下:

#cat /tmp/tickets.log Running make-ticket-wrapper Mon Feb 2 17:32:05 EST 2015 Params: OK HARD test 192.168.1.1 UP $ PING SERVICESTATE=OK SERVICESTATETYPE=HARD HOSTNAME=test HOSTADDRESS=192.168.1.1 HOSTSTATE=UP HOSTGROUPALIAS=$ SERVICEDESC=PING