Contexte

L'envoi de mail se fait en utilisant des modèles de mail ( un pour le titre et un pour le contenu ).

Suivant le besoin, il sera nécessaire de changer le titre ou le contenu de vos mails. 

Pour cela, il y a quelques règles à respecter :

  • ne JAMAIS modifier les fichiers livrés par Shinken
  • dans vos propres modèles de mail, il ne faudra utiliser que les formats HTML et CSS qui sont reconnus par les clients de messagerie.

Cette page explique comment créer, utiliser et vérifier vos modèles de mail.

Modèle de mail livré avec Shinken

Shinken livre deux modèles de mail :

  • un pour les hôtes et clusters
  • un pour les checks 

Chacun est constitué de deux parties :

  • un pour le titre du mail 
  • un pour le contenu du mail

L'adresse des modèles de mail est définie dans la commande de notification

Par exemple, pour la commande notify-host-by-email ( voir la page NEW_PAGE - 003.5.6 - SEF-11240 - notify-host-by-email - Commande de notification ) les options suivantes définissent les chemins des fichiers :

--title-tpl $NOTIFPLUGINDIR$/host_alert_title_template.tpl

--content-tpl $NOTIFPLUGINDIR$/host_alert_content_template.tpl 

Bonnes pratiques

Il vous est conseillé de conserver tous les fichiers et configuration d'origine, sinon vos modifications seront écrasées lors d'une prochaine mise à jour de ces derniers.

Cloner la méthode de notification

( voir la page NEW_PAGE - 003.5.6 - SEF-11240 - Créer une méthode de notification spécifique - bonnes pratiques )

Il faudra, dans la nouvelle méthode de notification, modifier les commandes utilisée qui doivent être créés également.

Cloner les commandes de notification

( voir la page NEW_PAGE - 003.5.6 - SEF-11240 - Créer des commandes de notification spécifique - bonnes pratiques )

Il faudra, dans la nouvelle commande, modifié la "Ligne de commande" pour changer les deux options "--title-tpl" et "--content-tpl" afin de pointer sur les nouveaux fichiers créés dans l'étape suivante. 


$NOTIFPLUGINDIR$/notify_by_email.py --title-tpl $NOTIFPLUGINDIR$/host_alert_title_template_my_name.tpl --content-tpl
$NOTIFPLUGINDIR$/host_alert_content_template_my_name.tpl -F "$SENDER$" ...

Cloner des modèles de mail

Choisir un nom pour vos fichiers ( .tpl ),

Il est recommandé de conserver le préfixe [ host_ | service_ ] afin d'identifier plus facilement vos templates.

cd /var/lib/shinken/libexec/notifications
cp host_alert_title_template.tpl host_alert_title_template_my_name.tpl
cp host_alert_content_template.tpl host_alert_content_template_my_name.tpl

Editer des modèles de mail

Le script pour envoyer les mails utilise un modèle de génération nommé Jinja.

L'utilisation de Jinja est assez intuitive, mais voici tout de même quelques explications

Utilisation de Jinja

Le fichier (.tpl) utilise des données renvoyées par le script. Vous n'avez pas la main sur le nommage des données, vous pouvez seulement les utiliser.

Voici la liste des données utilisables :

NomDescription
Hostname

Nom de l'hôte

Check name

Nom du check

Notification type

Le type de notification envoyé. Cela correspond au type d'événement qui a été constaté sur l'élément.

Type de notification Description
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. Indique le nom et le motif de la prise en compte.

FLAPPINGSTART

L'élément est entré d'un contexte de FLAPPING.

FLAPPINGSTOP

L'élément est sorti d'un contexte de FLAPPING.

FLAPPINGDISABLED 

 La détection a été désactivée pendant la durée du FLAPPING.

DOWNTIMESTART

L'élément est entré d'une période programmée d'indisponibilité. Indique le nom et le motif de l'arrêt

DOWNTIMESTOP

L'élément est 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.



Notification delay

retard de la notification

Notification number

numéro de la notification

Title notification

Titre de la notification

Realm

Nom du royaume

Check date

Date de vérification

State

Statut de l'élément

state_html

Icon du statut

State duration

Durée depuis le changement de statut

Last state

Dernier statut avant changement

Output

Résultat court de l'élément

Long output

Résultat long de l'élément

View

Lien de l'élément sur l'interface Shinken

Acknowledge author

Auteur de la "Prise en compte"

Acknowledge data

Commentaire de la "Prise en compte"

downtime_author

Auteur de la "Période de maintenance"

downtime_comment

Commentaire de la "Période de maintenance"



Exemple d'utilisation

Il vous est possible de soumettre à conditions, l'intégration dans le mail, de certaines parties du template.

    {% if shinken_var['my_var'] %}
        <!-- Ce code ne sera pris en compte que si la donnée shinken_var['my_var'] existe et est renseignée ->

        {{ shinken_var['my_var'] }} <!-- sera remplacé dans le mail, par le contenu de shinken_var['my_var'] ->
    {% endif %}
Documentation de Jinja

Vous pouvez trouver toutes les informations concernant l'outil de templating Jinja à l'adresse suivante : Jinja Documentation.

Cependant, la documentation de la version utilisée par Shinken n'est plus édité, il se peut que quelques différences soient présentes avec la version que vous utiliserez.


Restriction HTML et CSS dans les mails

Les logiciels mails ( Thunderbird, Outlook, Spark, ... ) et les services de mails web ( gmail, outlook ) n'interprètent pas les balises de la même manière. ( certaines balises peuvent ne pas être interprétées chez certains )


Comment savoir si des balises HTML ou du CSS est interdit ?

Si vous souhaitez intégrer du HTML et du CSS dans les notifications mail, nous vous conseillons fortement d'identifier les clients mails qui le liront et de consulter le site Can I Email ( voir la page Can I Email ) qui est une source d'information fiable sur la prise en charge des balises web par les principaux clients mails du marché.

Exemple pour l'utilisation du css : background image



Vous pouvez voir ici qu'il est supporté par 1&1 par exemple, mais pas par free.fr


Shinken et le HTML/CSS

D'autres balises HTML sont interdites par Shinken pour des motifs de sécurité. 

Il s'agit des balises Script, d'image, d'input ou d'iframe. Bien que très utile, elles permettent trop de dérives pour être autorisées à passer dans le système.

Il sera possible d'intégrer ces éléments directement par le template mail, mais ils ne pourront être dynamiques en fonction de vos hôtes et/ou checks.

Variables dynamiques

Vous pouvez intégrer des variables dynamiques à l'HTML, elles seront interprétées par le système et vous permettent d'afficher des données précises ( voir la page LES VARIABLES ( Remplacement dynamique de contenu - Anciennement les MACROS ) )