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
):
(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
}
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
}
[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
(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! :(
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.
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é!