2013-12-05 3 views
2

У меня есть настройка, где nagios получает ловушку snmp с устройства. Затем он уведомляет контакт, определенный в config.cfg. это отлично работает. То, что я пытаюсь выполнить, - это отправить nagios другое уведомление, если проблема не будет подтверждена за заданный промежуток времени. Я не могу заставить nagios отправить это второе уведомление. Я использую внешние команды, чтобы на самом деле сделать вызов как уведомление, что все работает нормально. Я не вижу попытки nagios сделать это второе уведомление.nagios отправляет уведомление до подтверждения пассивных проверок

Я разрезал все мои файлы конфигурации в 1 файл конфигурации для удобства чтения.

#TIMEPERIODS 


    define timeperiod{ 
    timeperiod_name 24x7 
    alias   24 Hours A Day, 7 Days A Week 
    sunday   00:00-24:00 
    monday   00:00-24:00 
    tuesday   00:00-24:00 
    wednesday  00:00-24:00 
    thursday  00:00-24:00 
    friday   00:00-24:00 
    saturday  00:00-24:00 
    } 

    #SERVICES 


    ##handle the trap 


    define service{ 
    host_name      serverName 
    service_description    TRAP 
    is_volatile      1 
    check_command     check-host-alive 
    max_check_attempts    3 
    normal_check_interval   1 
    retry_check_interval   1 
    active_checks_enabled   0 
    passive_checks_enabled   1 
    check_period     24x7 
    notification_interval   1 
    notification_period    24x7 
    notification_options   w,u,c 
    notifications_enabled   1 
    contact_groups     admins 
    } 

    #COMMANDS 

    define command{ 
    command_name check-host-alive 
    command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 
    } 

    define command{ 
    command_name notify-host-by-sip 
    command_line /usr/lib64/nagios/plugins/calls/makeCall "$NOTIFICATIONTYPE$" 
    } 

    define command{ 
    command_name notify-service-by-sip 
    command_line /usr/lib64/nagios/plugins/calls/makeCall "$NOTIFICATIONTYPE$" 


    } 



    #CONTACT_GROUPS 

    define contactgroup{ 
    contactgroup_name  admins 
    alias     Nagios Administrators 
    members     user_sip 
    } 

    #CONTACTS 

    define contact{ 
    contact_name user_sip 
    alias useralias 
    service_notification_period 24x7 
    host_notification_period 24x7 
    service_notification_options w 
    host_notification_options d 
    service_notification_commands notify-service-by-sip 
    host_notification_commands notify-host-by-sip 
    email [email protected] 
    } 

    #HOSTS 

    define host{ 
    host_name      localhost 
    alias       Development 
    address       serverIP 
    max_check_attempts    5 
    check_period     24x7 
    contact_groups     admins 
    notification_period    24x7 
    } 

    define host{ 
    host_name      serverName 
    alias       Development 
    address       someIP 
    max_check_attempts    5 
    check_period     24x7 
    contact_groups     admins 
    notification_period    24x7 
    } 

результаты пассивной проверки

[1386274600] PASSIVE SERVICE CHECK: localhost;TRAP;1;TRAP trap received 
[1386274600] SERVICE ALERT: localhost;TRAP;WARNING;HARD;1;TRAP trap received 
[1386274600] SERVICE NOTIFICATION: user_sip;localhost;TRAP;WARNING;notify-service-by-sip;TRAP trap received 

, а потом ничего после этого ...

+0

Я не вижу таких как определение erviceescalation? ACK прекратит уведомления, даже эскалированные. –

+0

@JimBlack Я получаю только одно уведомление. если возникает проблема, я хочу, чтобы уведомления повторялись до подтверждения. прямо сейчас, я получаю 1 ловушку, 1 уведомление, и все. если я пропущу это уведомление, я не узнаю, что проблема возникла ... – bart2puck

+0

OK. В графическом интерфейсе (или в статусе.dat) служба по-прежнему показывается как опустившаяся после первого уведомления? –

ответ

3

Посмотрев хотя источник Nagios я могу сказать:

  • Уведомления будут когда-либо случается после a результат проверки обработан (активен или пассивен). Он будет вызывать предупреждение при запуске, если вы попытаетесь установить значение «notification_interval» на значение меньше, чем «check_interval».

  • Если вы установите 'is_volatile' на '1', это игнорирует все опции "notification_interval" в дереве. Это в основном означает, что отправляет уведомление каждый раз, когда сбой проверки. Но проверка еще не завершена, прежде чем будет отправлено уведомление.

Так что, если пассивная проверка не активно бросать без ОК результатов, вы не получите постоянный поток предупреждений.

работы вокруг такого поведения заключается в создании «обработчика событий» скрипт, который будет:

  1. Убедитесь, что Nagios макрос $ NotificationType $ не равна «БЛАГОДАРНОСТЬ» (вы должны быть уверены, что уведомления ACK включены).
  2. Если выше верно, спящий режим в течение 59 секунд, то повторно отправьте тот же пассивный сбой проверки с новой меткой времени эпохи в файл внешней команды Nagios.

Это должно содержать предупреждения, пока они не будут ACK'd кем-либо.

1

Я создал сценарий, как вы предлагаете, но что происходит, когда появляется явная ловушка, есть еще таймер спящего события, который повторяет предыдущую неудачную ловушку. Также Nagios обработчик события висит на событие таймера сна с и без &

#!/bin/sh 
SERVICESTATE=$1 
HOSTADDRESS=$2 
SERVICEDESC=$3 
SERVICEOUTPUT=$4 
NOTIFICATIONTYPE=$5 

if [ $NOTIFICATIONTYPE == 'ACKNOWLEDGEMENT' ] 
then exit 
fi 
case "$SERVICESTATE" in 
     OK) 
       rm /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad 
       exit 
       ;; 
     WARNING) 
       touch /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad 
       sleep 45 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       sh /usr/local/libexec/nagios/submit_check_result $HOSTADDRESS $SERVICEDESC 1 $SERVICEOUTPUT 
       fi 
       exit 
       ;; 
     CRITCAL) 
       touch /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad 
       sleep 45 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       sh /usr/local/libexec/nagios/submit_check_result $HOSTADDRESS $SERVICEDESC 2 "$SERVICEOUTPUT" 
       fi 
       exit 
       ;; 
     UNKNOWN) 
       exit 
       ;; 
esac 
0

Изменено вокруг Abit, Есть мой Snmp обработчик прерываний выполняет сценарий, который прикасается файл и по таймеру, если этот файл существует, то он будет отправьте результат проверки в nagios.

Я использую их, чтобы задержать первое уведомление, поэтому быстрые проблемы и восстановление не разбудят меня ночью и повторяют уведомления. Поскольку Nagios решает, не следует ли его идентифицировать или нет, если вы признаете проблему, вы больше не получаете письма.

оправдание мое плохое кодирование, я узнал только, чтобы решить эту проблему ...: P

pass2.sh

#!/bin/sh 
# VER 2 
HOSTADDRESS=$1 
SERVICEDESC=$2 
SERVICESTATE=$3 
SERVICEOUTPUT=$4 

case "$SERVICESTATE" in 
     0) 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       rm /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad 
       /usr/local/libexec/nagios/submit_check_result $HOSTADDRESS $SERVICEDESC 0 "$4" 
       fi 
       exit 
       ;; 
     1) 
       touch /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       /usr/local/libexec/nagios/submit_check_result $HOSTADDRESS $SERVICEDESC 1 "$4" & 
       /usr/local/libexec/nagios/passtron.sh $HOSTADDRESS $SERVICEDESC 1 "$4" & 
       fi 
       exit 
       ;; 
     2) 
       touch /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       /usr/local/libexec/nagios/submit_check_result $HOSTADDRESS $SERVICEDESC 2 "$4" & 
       /usr/local/libexec/nagios/passtron.sh $HOSTADDRESS $SERVICEDESC 2 "$4" & 
       fi 
       exit 
       ;; 
     UNKNOWN) 
       exit 
       ;; 
esac 

passtron.sh

#!/bin/sh 
# PASSTRON 
HOSTADDRESS=$1 
SERVICEDESC=$2 
SERVICESTATE=$3 
SERVICEOUTPUT=$4 

case "$SERVICESTATE" in 
     1) 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       sleep 60 
       fi 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       /usr/local/libexec/nagios/submit_check_result $HOSTADDRESS $SERVICEDESC 1 "$4" & 
       fi 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       /usr/local/libexec/nagios/passtron.sh $HOSTADDRESS $SERVICEDESC 1 "$4" & 
       fi 
       exit 
       ;; 
     2) 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       sleep 60 
       fi 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       /usr/local/libexec/nagios/submit_check_result $HOSTADDRESS $SERVICEDESC 2 "$4" & 
       fi 
       if [ -f /usr/local/libexec/nagios/pass/$HOSTADDRESS.$SERVICEDESC.bad ] 
       then 
       /usr/local/libexec/nagios/passtron.sh $HOSTADDRESS $SERVICEDESC 2 "$4" & 
       fi 
       exit 
       ;; 

esac 

и пример одного из мой сервис

define service{ 
hostgroup_name   trapdevices 
use     trap-template 
service_description TEMP-ALARM 
contact_groups   oncall-tech 
is_volatile 0 
normal_check_interval 1 
retry_check_interval 1 
max_check_attempts 1 
active_checks_enabled 0 
notification_interval 300 
first_notification_delay 5 
Смежные вопросы