Afin de pouvoir recevoir des notifications, la source cfg-file-shinken comprend un certain nombre de commandes qu'il faudra importer et appliquer sur les utilisateurs à notifier.
Cette page apporte des conseils sur l'utilisation optimale des packs livrés par Shinken.
Pourquoi ne faut-il pas modifier les éléments livrés dans le pack ?
Des différences vous seront proposées après la mise à jour et l'import de la source "cfg-file-shinken", il vous sera donc imposé de faire un choix entre ce que vous avez surchargé et les modifications apportées par les mises à jour Shinken.
Les commandes sont exécutées par le Reactionner ( voir la page Le Reactionner ) lorsque les conditions définies par la Logique de notification sont réunies.
| Notation | Utilisation | Exemple |
|---|---|---|
MAILURL | L'adresse de l'UI de visualisation de Shinken. (dans le but par exemple de donner au contact un lien vers l'élément). | http://192.168.1.1:7767 |
SENDER | L'adresse mail de l'envoyeur, pour une notification mail. | notifications@shinken.com |
NOTIFPLUGINDIR | Le répertoire dans lequel se trouve la commande de notification à exécuter. | /etc/shinken/resource.d/email.cfg |
Ces trois notations spécifiques sont mises à des valeurs par défaut que vous pouvez retrouver dans le fichier email.cfg du répertoire /etc/shinken/resource.d/ |
Dans le cas d'une notification de l'hôte, les variables de l'hôte sont disponibles.
Dans le cas d'une notification d'un check, les variables l'hôte et du check sont toutes les deux disponibles.
De la même façon que les variables globales, toutes les variables des éléments peuvent être utilisées, mais les variables suivantes sont spécifiquement utiles :
| Notation | Utilisation | Exemple |
|---|---|---|
HOSTNAME | Le nom de l'hôte. | host france |
SERVICEDESC | Le nom du check | CPU |
HOSTADDRESS | L'adresse de l'hôte. | 192.168.1.1 |
HOSTUUID, SERVICEUUID | L'identifiant Shinken de l'élément. | Hôte : 007793c6a9b84b9f96cd0663fe502cc9 |
HOSTSTATE, SERVICESTATE | Le statut de l'élément. | Hôte : OK, CRITICAL Service : OK, WARNING, CRITICAL, ou UNKONWN |
HOSTREALM | Royaume de l'hôte/check à notifier | France |
LASTHOSTSTATEID, LASTSERVICESTATEID | Le statut précédent de l'élément, par code de retour (0, 1, 2 ou 3). | 0 : OK |
LASTHOSTSTATECHANGE, LASTSERVICESTATECHANGE | La date du dernier changement de statut de l'élément. | Format timestamp : 1525338011 |
DATE | La date du dernier check. | Format date : 01-17-2020 |
TIME | L'heure du dernier check. | Format date : 14:40:56 |
HOSTOUTPUT, SERVICEOUTPUT | La sortie du check à l'origine de la notification. | Texte brut |
LONGHOSTOUTPUT, LONGSERVICEOUTPUT | La sortie longue du check à l'origine de la notification. | Texte brut |
_HOSTMADONNEE1 | La donnée MADONNEE1 de l'hôte | Donnée de l'hôte |
_SERVICEMADONNEE2 | La donnée MADONNEE2 du check | Donnée du service |
| Notations | Utilisation | Exemple |
|---|---|---|
CONTACTPAGER | Le numéro de téléphone du contact, pour une notification téléphonique. | Numéro de téléphone : 06 17 06 17 06 |
CONTACTEMAIL | L'adresse mail du destinataire, pour une notification mail. | mon-email@shinken-solutions.com |
_CONTACTMADONNEE | La donnée MADONNEE du contact | Donnée d'un utilisateur |
Des variables spéciales permettent d'avoir des données concernant la notification en elle-même et la raison pour laquelle elle a été envoyée.
| Notations | Utilisation | Exemple |
|---|---|---|
NOTIFICATIONTYPE | Le type de notification à envoyer. Cela correspond au type d'événement qui a été constaté sur l'élément. | Voir plus bas |
SERVICEFIRSTNOTIFICATIONDELAY | Nombre de minutes à attendre avant d'envoyer la première notification pour un service | 5 |
SERVICENOTIFICATIONNUMBER | Nombre actuel de notifications pour cet événement | 2 |
ACKAUTHOR | L'auteur d'un contexte "Prise en compte" | admin |
ACKDATA | Le message d'un contexte "Prise en compte". | Texte brut |
SERVICEDOWNTIMECOMMENT | Le commentaire de la période programmée d'indisponibilité | Texte brut |
SERVICEDOWNTIMEAUTHOR | L'auteur de la période programmée d'indisponibilité | admin |
Pour les types de NOTIFPLUGINDIR, la liste des valeurs possibles est la suivante :
| Type | Événement source |
|---|---|
| PROBLEM | Le statut de l'élément est non OK. |
| RECOVERY | L'élément avait un problème, mais est de nouveau dans un statut OK. |
| ACKNOWLEDGEMENT | Un utilisateur a envoyé par l'interface web un accusé de réception par rapport à un problème survenu à un hôte ou à un check. |
| FLAPPINGSTART, FLAPPINGSTOP | L'élément est entré ou sorti d'un contexte de FLAPPING . |
| FLAPPINGDISABLED | La détection a été désactivée pendant la durée du FLAPPING . |
| DOWNTIMESTART , DOWNTIMESTOP | L'élément est entré ou sorti d'une période programmée d'indisponibilité. |
| DOWNTIMECANCELLED | La période programmée d'indisponibilité de l'élément a été annulée en cours. |
Nous allons ici vous présenter un exemple de personnalisation de la commande de notification par défaut de Shinken.
Le but ici est de modifier la commande afin que la notification par email utilise un serveur SMTP de votre choix. En effet, par défaut, la commande utilise comme relais SMTP le processus Postfix du serveur qui héberge le démon Réactionner (serveur localhost).
Voici la ligne de commande utilisée par l'objet commande notify-host-by-email ( voir la page notify-host-by-email - Commande de notification ):
$NOTIFPLUGINDIR$/notify_by_email.py --title-tpl $NOTIFPLUGINDIR$/host_alert_title_template.tpl --content-tpl $NOTIFPLUGINDIR$/host_alert_content_template.tpl -F "$SENDER$" -r "$CONTACTEMAIL$" -n $NOTIFICATIONTYPE$ -H "$HOSTNAME$" --address "$HOSTADDRESS$" --url $MAILURL$ --huuid $_HOSTID$ --state $HOSTSTATE$ --last-state $LASTHOSTSTATEID$ --last-change $LASTHOSTSTATECHANGE$ --last-check "$DATE$ $TIME$" --output "$HOSTOUTPUT$" --long-output "$LONGHOSTOUTPUT$" --ack-author "$ACKAUTHOR$" --ack-data "$ACKDATA$" |
Cette commande est localisée dans le répertoire par défaut /var/lib/shinken/libexec/notifications/.
Le script utilisé est un script Python qui prend un certain nombre d'arguments.
Comme vous pouvez le constater, la ligne de commande fait référence à de nombreuses notations de remplacement dynamique de contenu ( voir la page Les Variables ( Remplacement dynamique de contenu - Anciennement les Macros ) ) afin d'envoyer les valeurs représentatives à l'instant T de la notification liée à l'hôte supervisé.
Pour faire un clone d'une commande livré par Shinken, il y a plusieurs étapes à suivre qui sont expliqué dans la page Personnaliser une commande livrée par un pack Shinken
Il vous est possible d'afficher l'aide du script, apportant des précisions concernant chaque option prise en charge par ce dernier, en tapant :
/var/lib/shinken/libexec/notifications/notify_by_email.py --help |
Ce script Python notify_by_email.py peut utiliser un argument --SMTP ou -S qui permet alors de passer en paramètre l'IP ou l'adresse d'un serveur SMTP pour l'envoi de l'email.
Admettons par exemple que votre serveur SMTP est le serveur 192.168.1.200, il suffit donc de rajouter l'information --SMTP 192.168.1.200 dans votre ligne de commande ( voir la page notify-host-by-email - Commande de notification ) :
$NOTIFPLUGINDIR$/notify_by_email.py --title-tpl $NOTIFPLUGINDIR$/host_alert_title_template.tpl --content-tpl $NOTIFPLUGINDIR$/host_alert_content_template.tpl -F "$SENDER$" -r "$CONTACTEMAIL$" -n $NOTIFICATIONTYPE$ -H "$HOSTNAME$" --address "$HOSTADDRESS$" --url $MAILURL$ --huuid $_HOSTID$ --state $HOSTSTATE$ --last-state $LASTHOSTSTATEID$ --last-change $LASTHOSTSTATECHANGE$ --last-check "$DATE$ $TIME$" --output "$HOSTOUTPUT$" --long-output "$LONGHOSTOUTPUT$" --ack-author "$ACKAUTHOR$" --ack-data "$ACKDATA$" --SMTP 192.168.1.200 |
Au lieu de rajouter l'adresse en dur dans la ligne de commande, pour pourriez également utiliser une notation de remplacement dynamique de contenu, référant à une donnée de l'hôte par exemple, comme : $_HOSTIPSMTPSERVEUR$ |
Certaines options sont optionnelles. Si elles ne sont pas renseignées, alors les parties correspondantes des mails pourront être cachés
Par exemple, pour la commande suivante,
$NOTIFPLUGINDIR$/notify_by_email.py --title-tpl $NOTIFPLUGINDIR$/host_alert_title_template.tpl --content-tpl $NOTIFPLUGINDIR$/host_alert_content_template.tpl -F "$SENDER$" -r "$CONTACTEMAIL$" -n $NOTIFICATIONTYPE$ -H "$HOSTNAME$" --address "$HOSTADDRESS$" --url $MAILURL$ --huuid $_HOSTID$ --state $HOSTSTATE$ |
le mail ressemblera à :
|