Я пытаюсь настроить свою настройку Nagios на автоматическую регистрацию заявки в нашей системе продажи билетов, когда хост выходит из строя (служба PING переходит в состояние HARD CRITICAL). У меня есть сценарий, который будет создавать билеты, которые успешно работают с sudo -u nagios. У меня настроен обработчик команд и событий, который выполняется, когда состояние хоста выходит из строя или, по крайней мере, кажется. Однако сценарий, связанный с командой, похоже, не выполняется, или добавленное мной ведение журнала не работает. Есть идеи, где искать дальше? Файл журнала не создается при вызове обработчика событий.
команда:
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 $ и не хватает $ в конце HOSTNAME, HOSTSTATE, HOSTGROUPALIAS и SERVICEDESC.
Когда вы пропускаете двойные кавычки, остальная часть строки портится, в результате чего сценарий оболочки пропускает некоторые аргументы.
Когда вы опускаете знак доллара в конце, Nagios не заменяет макрос, поэтому он передается в оболочку, где разрешается как пустая переменная.
Nagios задыхается от всех этих цитат
изменение:
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