web-dev-qa-db-fra.com

Nagios Alerte par email pour avertissement et pager pour critiques

Je tiens à définir des nagios pour émettre des avertissements (par exemple, une utilisation légèrement élevée ou une utilisation de disque) par courrier électronique, mais pour des éléments critiques à alerter par pager.

À l'heure actuelle, nous notifions simultanément par courrier électronique et pager pour tous les avertissements. Ma définition de contact générique est la suivante:

define contact{
    name                            generic-contact
    service_notification_options    w,u,c,r,f,s
    Host_notification_options       d,u,r,f,s
    service_notification_commands   notify-service-by-email,notify-service-by-pager
    Host_notification_commands      notify-Host-by-email,notify-Host-by-pager
    register                        0

    service_notification_period     24x7
    Host_notification_period        24x7
}

Comment puis-je le faire pour que la notification par courrier électronique ait lieu pour les avertissements et critiques, mais une pagination pour la critique uniquement?

8
Will Glass

Vous devriez pouvoir y parvenir en définissant différents contacts - un pour la notification de pager uniquement, une pour la notification par courrier électronique uniquement - et attribuer des valeurs différentes de Host/service_notification_options:

define contact{
    name                            email-contact
    service_notification_options    w,u,c,r,f,s
    Host_notification_options       d,u,r,f,s
    service_notification_commands   notify-service-by-email
    Host_notification_commands      notify-Host-by-email
    register                        0

    service_notification_period     24x7
    Host_notification_period        24x7
}

define contact{
    name                            pager-contact
    service_notification_options    c,r
    Host_notification_options       d,u,r
    service_notification_commands   notify-service-by-pager
    Host_notification_commands      notify-Host-by-pager
    register                        0

    service_notification_period     24x7
    Host_notification_period        24x7
}

Si vous souhaitez conserver la définition d'hôte/service, plus bas, vous devez les regrouper dans un Contactgroup comme ceci:

define contactgroup{

    contactgroup_name       pager-email
    members         pager-contact,email-contact
}

et utilisez le groupe de contact au lieu de contacts individuels.

10
the-wabbit

Pour envoyer l'alerte d'avertissement par courrier électronique et l'alerte critique via SMS, j'ai également défini 2 contacts: un pour email et un pour SMS. Cela fonctionne bien mais ci-dessous est ce que j'ai essayé d'accomplir cela avec un seul contact.

L'idée est de ré-écrire le (service|Host)_notification_commands Pour vérifier le $SERVICESTATE$ Macro puis utilisez la méthode correspondante.

command.cfg

define command{
    command_name    notify-service
    command_line    $USER1$/notify.sh $SERVICESTATE$ $LASTSERVICESTATE$ $NOTIFICATIONTYPE$ $SERVICEDESC$ $HOSTALIAS$ $HOSTADDRESS$ "$LONGDATETIME$" "$SERVICEOUTPUT$" "$SERVICENOTESURL$" $CONTACTEMAIL$ $CONTACTPAGER$ $TIME$
    }

notify.sh

#!/bin/bash

SERVICESTATE=$1
LASTSERVICESTATE=$2
NOTIFICATIONTYPE=$3
SERVICEDESC=$4
HOSTALIAS=$5
HOSTADDRESS=$6
LONGDATETIME=$7
SERVICEOUTPUT=$8
SERVICENOTESURL=$9
CONTACTEMAIL=${10}
CONTACTPAGER=${11}
TIME=${12}

send_email() {
    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE\n\nService: $SERVICEDESC\nHost: $HOSTALIAS\nAddress: $HOSTADDRESS\nState: $SERVICESTATE\n\nDate/Time: $LONGDATETIME\n\nAdditional Info: $SERVICEOUTPUT\n\nURL: $SERVICENOTESURL" | /bin/mail -s "** $NOTIFICATIONTYPE Service Alert: $HOSTALIAS/$SERVICEDESC is $SERVICESTATE **" $CONTACTEMAIL
}

send_sms() {
    /usr/bin/wget --user=notifier --password=x "http://ip:port/smsgate/sms?tos=$CONTACTPAGER&content=$NOTIFICATIONTYPE, $SERVICEDESC, $HOSTADDRESS, $SERVICESTATE, $TIME, $SERVICEOUTPUT"

}

if [ $NOTIFICATIONTYPE = "PROBLEM" ]; then
    if [ $SERVICESTATE = "WARNING" ]; then
        send_email
    Elif [ $SERVICESTATE = "CRITICAL" ]; then
        send_email
        send_sms
    fi
Elif [ $NOTIFICATIONTYPE = "RECOVERY" ]; then
    if [ $LASTSERVICESTATE = "WARNING" ]; then
        send_email
    Elif [ $LASTSERVICESTATE = "CRITICAL" ]; then
        send_email
        send_sms
    fi
fi

Notez que lorsque le service est correct, je dois vérifier le $LASTSERVICESTATE$ Macro pour décider quelle méthode à utiliser.

contacts.cfg

define contact{
        contact_name                    quanta
        use                             single-contact
        alias                           Quan Tong Anh
        service_notifications_enabled   1
        Host_notifications_enabled      1
        service_notification_period     24x7
        Host_notification_period        24x7
        service_notification_options    c,w,r
        Host_notification_options       d,u,r
        email                           [email protected]
        pager                           0912345678
        }

templates.cfg

define contact{
        name                            single-contact
        service_notification_period     24x7
        Host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        Host_notification_options       d,u,r,f,s
        service_notification_commands   notify-service
        Host_notification_commands      notify-Host
        register                        0
        }
4
quanta

Je ne sais pas si c'est la meilleure option, mais je ne me souviens pas de Nagios pouvant être capable de naviguer uniquement sur un drapeau spécial. Ce que vous pouvez faire cependant, c'est dupliquer le contact avec son nom et quelque chose à l'identifier comme SMS (Nom-SMS). Cela causera des contacts redondants. Toutefois, si vous utilisez des groupes, vous pouvez simplement ajouter le contact au groupe.

define contact{
    name                            generic-contact-sms
    service_notification_options    c
    Host_notification_options       d,u,r,f,s
    service_notification_commands   notify-service-by-pager
    Host_notification_commands      notify-Host-by-pager
    register                        0

    service_notification_period     24x7
    Host_notification_period        24x7
}
2
Lucas Kauffman