O manipulador / comando de eventos do Nagios não está executando

2

Estou tentando configurar minha configuração do Nagios para registrar automaticamente um ticket em nosso sistema de tickets quando um host fica inativo (o serviço PING entra em um estado HARD CRITICAL). Eu tenho um script que irá criar tickets que é executado com sucesso com 'sudo -u nagios'. Eu tenho um manipulador de comando e evento configurado que executa quando o estado do host falha, ou pelo menos parece. No entanto, o script associado ao comando não parece estar em execução ou o log que eu adicionei não está funcionando. Alguma idéia de onde procurar a seguir? O arquivo de log não é criado quando o manipulador de eventos é chamado.

comando:

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

exemplo de host e serviço

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
    }

script de wrapper:

#!/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

log:

[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
    
por Chris Heilman 02.02.2015 / 20:15

2 respostas

2

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

Você está perdendo uma aspa dupla após $ HOSTADDRESS $ e faltando um $ no final de HOSTNAME, HOSTTATA, HOSTGROUPALIAS e SERVICEDESC.

Quando você erra uma aspa dupla, estraga o resto da linha, fazendo com que o script de shell perca alguns argumentos.

Quando você deixa de fora o sinal de dólar à direita, o Nagios não substitui a macro, então é passado para o shell onde é resolvido como uma variável vazia.

    
por 03.02.2015 / 03:46
0

nagios engasga com todas essas citações

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

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

Além disso, você também perdeu alguns sinais $ na linha de comando, veja acima. Vai funcionar como esperado depois disso. Eu apenas tentei:

#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

    
por 02.02.2015 / 23:26