Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue
Panel
titleSommaire

Table of Contents
stylenone

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.

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
languagetext
themeEmacs
$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é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
languagetext
themeEmacs
/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
languagetext
themeEmacs
$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
titleRemarque

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$
La donnée IPSMTPSERVEUR devra alors être présente sur l'objet hôte, directement, ou via un modèle par exemple.

Paramètres obligatoires dans la 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 :

NomDescription
No Format
--title-tpl
Template utilisé pour générer le sujet du mail
No Format
--content-tpl
Template utilisé pour générer le corps du mail
No Format
-F ou --sender
Adresse mail de l'expéditeur
No Format
-r ou --receivers
Liste de réceptionnaires du mail, séparés par des virgules
No Format
-n ou --notif
Type de notification ( PROBLEM ou RECOVERY )
No Format
-H ou --hostname
Nom de l'élément ( hôte ou cluster )
No Format
--state
Etat Statut de l'état de l'élément ( hôte ou du check, cluster ou check )
No Format
--check

Nom de l'élément ( check )

uniquement obligatoire pour les mails sur les checks

Paramètres absents de ligne de commande

Certains paramètres sont optionnels :

  • Si elles ne sont pas renseignées, alors les parties correspondantes des mails pourront être cachés.
  • La liste des paramètres optionnels est la suivante :


NomDescription
No Format
-S ou --SMTP

IP ou adresse d'un serveur SMTP

No Format
--address

L'adresse de l'élément ( hôte ou cluster )

No Format
--url

Url de l'interface de visualisation

No Format
--huuid

Uuid de l'élement ( hôte ou cluster )

No Format
--serviceuuid

Uuid de l'élement ( check )

No Format
--last-check

Date de la dernière vérification du statut de l'élément ( hôte, cluster ou check )

No Format
--last-state

Statut de l'état précédent de l'élément ( hôte, cluster ou check )

No Format
--last-change

Date ( en timestamp ) du changement d'état de l'élément ( hôte, cluster ou check )

No Format
--output

Résultat de l'élément ( hôte, cluster ou check )

No Format
--long-output

Résultat long de l'élément ( hôte, cluster ou check )

No Format
--ack-author

Auteur de la prise en compte ( voir la page Notion - Statut & Contexte )

No Format
--ack-data

Commentaire de la prise en compte

No Format
--downtime-author

Auteur de la période de maintenance ( voir la page Notion - Statut & Contexte )

No Format
--downtime-comment

Commentaire de la période de maintenance

No Format
--first-notification-delay

Nombre de minutes attendues avant la première notification

No Format
--notification-number

Nombre de notification pour cet événement

No Format
--realm

Nom du royaume

No Format
--with-images

Active les images dans le mail ( logo + statuts )

No Format
--thresholds-display

Affichage des seuils de l'élément ( hôte, cluster ou check )

 


Par exemple, pour la commande suivante :

Code Block
languagetext
themeEmacs
$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