web-dev-qa-db-fra.com

Je ne reçois pas de notification par courrier électronique avec Nagios Core 4

J'ai un problème avec la notification automatique par courrier électronique dans Nagios Core 4 installé sur le serveur buntu 12.04 LTS (Precise Pangolin) ...

J'ai essayé d'envoyer un courrier électronique avec l'utilisateur nagios et l'utilisateur root avec la commande:

echo "test" | mail -s "test mail" [email protected]

Et j'ai reçu le courrier correctement ... Mais je ne reçois pas de notification automatique par courrier. Comment puis-je résoudre ce problème?

Voici mes fichiers de configuration (commands.cfg, contacts.cfg, nagios.log, mail.log):

commandes.cfg

(Le chemin/usr/bin/mail est le bon chemin)

# 'notify-Host-by-email' command definition
define command{
        command_name    notify-Host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }

# 'notify-service-by-email' command definition
define command{
        command_name    notify-service-by-email
        command_line    /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:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
        }
# 'process-Host-perfdata' command definition
define command{
        command_name    process-Host-perfdata
        command_line    /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /usr/local/nagios/var/Host-perfdata.out
        }
# 'process-service-perfdata' command definition
define command{
        command_name    process-service-perfdata
        command_line    /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" >> /usr/local/nagios/var/service-perfdata.out
        }

contacts.cfg:

define contact{
        contact_name                    supporto
        alias                           Supporto Clienti DEA
        service_notification_period     24x7
        Host_notification_period        24x7
        service_notification_options    w,u,c,r
        Host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        Host_notification_commands      notify-Host-by-email
        email                           [email protected]
        }

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 supporto
        }

nagios.log:

[1401871412] SERVICE ALERT: fileserver;Current Users;OK;SOFT;2;USERS OK - 1 users currently logged in
[1401871953] SERVICE ALERT: backups;Nagios Status;WARNING;SOFT;1;NAGIOS WARNING: 36 processes, status log updated 541 seconds ago
[1401872133] SERVICE ALERT: backups;Nagios Status;OK;SOFT;2;NAGIOS OK: 36 processes, status log updated 180 seconds ago
[1401872321] SERVICE ALERT: posta;Swap Usage;CRITICAL;SOFT;1;CRITICAL - Plugin timed out after 10 seconds
[1401872322] SERVICE ALERT: fileserver;Current Users;CRITICAL;SOFT;1;CRITICAL - Plugin timed out after 10 seconds
[1401872420] SERVICE ALERT: archivio;Disk Space;CRITICAL;SOFT;1;CRITICAL - Plugin timed out after 10 seconds
[1401872492] SERVICE ALERT: fileserver;Current Users;OK;SOFT;2;USERS OK - 1 users currently logged in
[1401872492] SERVICE ALERT: posta;Swap Usage;OK;SOFT;2;SWAP OK: 100% free (1984 MB out of 1984 MB)
[1401872590] SERVICE ALERT: archivio;Disk Space;OK;SOFT;2;DISK OK
[1401872931] Auto-save of retention data completed successfully.
[1401873333] SERVICE ALERT: backups;Nagios Status;WARNING;SOFT;1;NAGIOS WARNING: 36 processes, status log updated 402 seconds ago
[1401873513] SERVICE ALERT: backups;Nagios Status;OK;SOFT;2;NAGIOS OK: 36 processes, status log updated 180 seconds ago

courrier électronique

(Je pense que le problème est là, mais je ne sais pas comment le résoudre.)

Jun  4 10:00:01 backups sm-msp-queue[6109]: My unqualified Host name (backups) unknown; sleeping for retry
Jun  4 10:01:01 backups sm-msp-queue[6109]: unable to qualify my own domain name (backups) -- using short name
Jun  4 10:20:01 backups sm-msp-queue[7247]: My unqualified Host name (backups) unknown; sleeping for retry
Jun  4 10:21:01 backups sm-msp-queue[7247]: unable to qualify my own domain name (backups) -- using short name
Jun  4 10:40:01 backups sm-msp-queue[8327]: My unqualified Host name (backups) unknown; sleeping for retry
Jun  4 10:41:01 backups sm-msp-queue[8327]: unable to qualify my own domain name (backups) -- using short name
Jun  4 11:00:01 backups sm-msp-queue[9549]: My unqualified Host name (backups) unknown; sleeping for retry
Jun  4 11:01:01 backups sm-msp-queue[9549]: unable to qualify my own domain name (backups) -- using short name
Jun  4 11:20:01 backups sm-msp-queue[10678]: My unqualified Host name (backups) unknown; sleeping for retry
Jun  4 11:21:01 backups sm-msp-queue[10678]: unable to qualify my own domain name (backups) -- using short name

Je suis à la dernière étape et je veux finir ce Nagios Core! :)

Définition de l'hôte (cet hôte a le disque presque plein et il est à l'état dur mais sans notification):

define Host{
        use                     generic-Host            ; Name of Host template to use
        Host_name               posta
        alias                   Server Posta ESA
        address                 10.10.2.102
        parents                 xen1, xen2
        icon_image              redhat.png
        statusmap_image         redhat.Gd2
        }

Définition du service:

define service{
        use                             generic-service
        Host_name                       xen1, maestro, xen2, posta, nas002, serv2, esasrvmi02, esaubuntumi
        service_description             Disk Space
        check_command                   ssh_all_disks!10%!5%
        }

La notification est autorisée pour la définition de contact que vous avez donnée, mais est-elle également autorisée au niveau du service?

Désolé, mais je ne comprends pas cette chose! :(

2
alessio

De votre nagios.log, je ne vois que des erreurs d'état SOFT. Nagios n'envoie aucune notification pour l'état SOFT, uniquement en cas d'état HARD. De la documentation Nagios:

états logiciels

Des états souples surviennent pour les services et les hôtes dans les situations suivantes ...

1) Lorsqu'un contrôle de service ou d'hôte a pour résultat un état non OK et qu'il n'a pas encore été (re) vérifié le nombre de fois spécifié par l'option dans la définition de service ou d'hôte. Appelons cela un état d'erreur logicielle ...

2) Lorsqu'un service ou un hôte récupère d'un état d'erreur logicielle. Ceci est considéré comme une récupération douce.

Événements d'état logiciel

Que se passe-t-il lorsqu'un service ou un hôte est dans un état d'erreur logicielle ou subit une récupération> logicielle?

1) L'erreur ou la récupération logicielle est enregistrée si vous avez activé les options log_service_retries ou log_Host_retries dans le fichier de configuration principal.

2) Les gestionnaires d'événements sont exécutés (si vous en avez défini) pour gérer l'erreur logicielle ou la récupération pour le service ou l'hôte. (Avant que tout gestionnaire d'événement ne soit exécuté, la macro $ STATETYPE $ est définie sur "SOFT"). Nagios n'envoie pas de notifications à aucun contact car il n'y a pas (ou n'était) pas de "réel" problème avec le service ou l'hôte.

Comme on peut le constater, la seule chose importante qui se passe réellement pendant un état progressif est l’exécution de gestionnaires d’événements. L'utilisation de gestionnaires d'événements peut être particulièrement utile si vous souhaitez essayer de résoudre un problème de manière proactive avant qu'il ne devienne un état critique.

états durs

Les états difficiles se produisent pour les hôtes et les services dans les situations suivantes:

1) Lorsqu'un contrôle d'hôte ou de service a pour résultat un état non UP ou non OK et qu'il a été (re) vérifié le nombre de fois spécifié par l'option max_check_attempts dans la définition d'hôte ou de service. C'est un état d'erreur difficile.

2) Lorsqu'un hôte ou un service passe d'un état d'erreur matérielle à un autre (par exemple, AVERTISSEMENT en CRITIQUE).

3) Lorsqu'un contrôle de service aboutit à un état non OK et que l'hôte correspondant est DOWN ou UNREACHABLE.

4) Lorsqu'un hôte ou un service récupère d'un état d'erreur matérielle. Ceci est considéré comme une reprise difficile.

5) lorsqu'une vérification passive de l'hôte est reçue. Les contrôles d’hôte passif sont traités comme HARD sauf si l’option passive_Host_checks_are_soft est activée.

Les événements suivants se produisent lorsque des hôtes ou des services subissent des changements d'état HARD:

1) L'état HARD est enregistré. 2) Les gestionnaires d'événements sont exécutés pour gérer l'état HARD. 3) Les contacts sont informés de l'hôte ou du problème de service ou de la récupération.

Donc, d'après ce que nous voyons dans le journal que vous donnez dans l'exemple, Nagios n'a pas eu besoin d'envoyer un courrier. Vous devez créer une condition d'erreur sur l'un des services surveillés, laissez cette condition exister pendant un certain temps et voyez si vous recevez réellement le courrier lorsque l'état est modifié en HARD dans le fichier nagios.log.

La dernière chose que j'ai remarquée, dans votre test de ligne de commande, vous envoyez un courrier à [email protected] alors que dans votre fichier contacts.cfg l'adresse mail définie est [email protected] (vous avez peut-être des alias définis sur vos serveurs de messagerie. ).

Ajouté après l'ajout des journaux à la question Dans le nagios.log que vous indiquez, il n'y a pas de ligne NOTIFICATION DE SERVICE Ainsi, même lorsque l’erreur est à l’état HARD, Nagios n’essaye même pas de faire la notification. Pour que la notification fonctionne dans Nagios, il ne suffit pas que les contacts, les groupes de contacts et les commandes de notification soient bien définis. Vous devez configurer par service et par hôte si vous souhaitez envoyer une notification en cas d'erreur et, bien sûr, à quel (s) contact (s) et/ou groupe (s) de contact auquel (lesquels) envoyer cette notification. Par exemple, il s’agit d’une définition de service avec notification configurée et opérationnelle:

define service {
    name                                  generic-service
    first_notification_delay              0
    notification_interval                 0
    notification_options                  w,u,c,r
    notifications_enabled                 1
    check_period                          24x7
    notification_period                   24x7
    contact_groups                        admins
}

Dans la définition ci-dessus, notification_enabled est défini sur 1 (vrai) et un groupe de contacts a été attribué pour l'envoi de la notification. Nous définissons également le type de notification à envoyer: w (arning), u (inconnu), c(ritical) et r (ecovery).

La définition ci-dessus est utilisée comme modèle par tous mes services:

use generic-service

est présent dans toutes mes définitions de services. De cette façon, si je dois changer les options de notification, il me suffit de changer la définition de generic-service. Dans votre cas, votre configuration montre que votre service utilise un modèle appelé generic-service. Je conseillerais de vérifier sa définition pour voir si les notifications sont configurées comme dans l'exemple que j'ai donné ci-dessus. Sa définition peut être située dans un fichier nommé services-templates.cfg mais cela peut varier.

3
Benoit

Merci Benoit pour ta réponse. J'aimerais ajouter quelques éléments après avoir tripoté pendant un moment:

Il est facile de savoir où vous en êtes avec tous ces modèles et substitutions si vous affichez le fichier cache, qui est le résultat calculé de toutes les configurations: /usr/local/nagios/var/objects.cache

Après que je sois allé, cela m'a frappé. Mon service était configuré pour envoyer des notifications uniquement pendant les heures de travail, ce qui s'est avéré un peu faux pour moi car je suis sur un fuseau horaire différent de celui du serveur. Le changer en 24x7 l'a fait fonctionner comme un charme.

J'espère que cela aidera quelqu'un .. J'ai passé des heures à comprendre tout ça.

À votre santé!

0
justabuzz