| Scroll Ignore | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
Contexte
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.
- Les commandes de notifications livrées sont généralistes et ne permettent pas de répondre à tous les besoins.
- Si vous devez modifier un élément ( méthode de notification ou commande ) livré par un pack Shinken pour un besoin spécifique,
- il est important de créer la vôtre,
- car à la prochaine mise à jour de shinken vous proposera de remplacer vos modifications.
Cette page apporte des conseils sur l'utilisation optimale des packs livrés par Shinken.
Cohabiter avec un pack livré 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.
Création d'une commande de notification
Corps de la commande
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.
- Elles ont accès spécifiquement à un certain nombre de notations de remplacement dynamique de contenu ( voir la page Les Variables ( Remplacement dynamique de contenu - Anciennement les Macros ) ).
- Ces données dynamiques peuvent venir de différents endroits :
- Une donnée globale,
- L'élément à l'origine de la notification,
- Le contact à notifier,
- La notification en elle-même, notamment son type.
Variables globales
MAILURL
SENDER
NOTIFPLUGINDIR
| Info | ||
|---|---|---|
| ||
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/ |
Variables liées à l'élément
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 :
HOSTNAME
SERVICEDESC
HOSTADDRESS
HOSTUUID, SERVICEUUID
Hôte : 007793c6a9b84b9f96cd0663fe502cc9
Service : 007793c6a9b84b9f96cd0663fe502cc9-d9fa4c0096a211e5ae0b0800278b6434
HOSTSTATE, SERVICESTATE
Service : OK, WARNING, CRITICAL, ou UNKONWN
HOSTREALM
LASTHOSTSTATEID, LASTSERVICESTATEID
0 : OK
1 : WARNING
2 : CRITICAL
3 : UNKNOWN
LASTHOSTSTATECHANGE, LASTSERVICESTATECHANGE
DATE
TIME
HOSTOUTPUT, SERVICEOUTPUT
LONGHOSTOUTPUT, LONGSERVICEOUTPUT
_HOSTMADONNEE1
_SERVICEMADONNEE2
Variables liées au contact
CONTACTPAGER
CONTACTEMAIL
_CONTACTMADONNEE
Variables liées à la notification
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.
NOTIFICATIONTYPE
SERVICEFIRSTNOTIFICATIONDELAY
SERVICENOTIFICATIONNUMBER
ACKAUTHOR
L'auteur d'un contexte "Prise en compte"
ACKDATA
SERVICEDOWNTIMECOMMENTSERVICEDOWNTIMEAUTHORL'auteur de la période programmée d'indisponibilité
Pour les types de NOTIFPLUGINDIR, la liste des valeurs possibles est la suivante :
Le statut de l'élément est non OK.
L'élément avait un problème, mais est de nouveau dans un statut OK.
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.
L'élément est entré ou sorti d'un contexte de FLAPPING .
La détection a été désactivée pendant la durée du FLAPPING .
L'élément est entré ou sorti d'une période programmée d'indisponibilité.
La période programmée d'indisponibilité de l'élément a été annulée en cours.
Personnalisation d'une commande de notification
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).
Information sur la commande
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 ):
| Code Block | ||||
|---|---|---|---|---|
| ||||
$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$" |
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é.
$NOTIFPLUGINDIR$ 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.
Personnalisation
Faire le clone
Pour faire un clone d'une commande livré par Shinken, il y a plusieurs étapes à suivre qui sont expliqué expliqués dans la page Personnaliser une commande livrée par un pack Shinken
Utilisation de la commande --help du script
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 :
| Code Block | ||||
|---|---|---|---|---|
| ||||
/var/lib/shinken/libexec/notifications/notify_by_email.py --help |
Modification de la Ligne de commande
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 ) :
| Code Block | ||||
|---|---|---|---|---|
| ||||
$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 |
| Info | ||
|---|---|---|
| ||
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$ |
Paramètres obligatoires de la ligne de commande
Certains paramètres sont indispensables au bon fonctionnement de la commande. Ils permettent de fournir à cette dernière le minimum d'informations nécessaires à la construction et à l'envoi du mail de notification.
Ces paramètres sont les suivants :
| Nom | Description | ||
|---|---|---|---|
| Modèle de mail utilisé pour générer le sujet du mail | ||
| Modèle de mail utilisé pour générer le corps du mail | ||
| Adresse mail de l'expéditeur | ||
| Liste de réceptionnaires du mail, séparés par des virgules | ||
| Type de notification | ||
| Nom de l'élément ( hôte ou cluster ) | ||
| Statut de l'état de l'élément ( hôte, cluster ou check ) | ||
| Nom de l'élément ( check ) uniquement obligatoire pour les mails sur les checks |
Paramètres optionnels de la ligne de commande
Certains paramètres sont optionnels :
Certaines options sont optionnelles.- Si elles ne sont pas renseignées, alors les parties correspondantes des mails pourront être cachés.
- Ce mécanisme de masquage est fait dans les modèles de mail ( Voir la page Créer votre propre modèle de mail de notification ).
- La liste des paramètres optionnels est la suivante :
| Nom | Description | ||
|---|---|---|---|
| IP ou adresse d'un serveur SMTP | ||
| L'adresse de l'élément ( hôte ou cluster ) | ||
| Url de l'Interface de Visualisation | ||
| Uuid de l'élément ( hôte ou cluster ) | ||
| Uuid de l'élement ( check ) | ||
| Date de la dernière vérification du statut de l'élément ( hôte, cluster ou check ) | ||
| Statut de l'état précédent de l'élément ( hôte, cluster ou check ) | ||
| Date ( en timestamp ) du changement d'état de l'élément ( hôte, cluster ou check ) | ||
| Résultat de l'élément ( hôte, cluster ou check ) | ||
| Résultat long de l'élément ( hôte, cluster ou check ) | ||
| Auteur de la prise en compte ( voir la page Notion - Statut & Contexte ) | ||
| Commentaire de la prise en compte | ||
| Auteur de la période de maintenance ( voir la page Notion - Statut & Contexte ) | ||
| Commentaire de la période de maintenance | ||
| Nombre de minutes attendues avant la première notification | ||
| Nombre de notifications pour cet événement | ||
| Nom du royaume | ||
| Active les images dans le mail ( logo + statuts ) | ||
| Affichage des seuils de l'élément ( hôte, cluster ou check ) |
Par exemple, pour la commande suivante , :
| Code Block | ||||
|---|---|---|---|---|
| ||||
$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 à :
| Panel |
|---|
