Contexte

Shinken utilise Jinja 2.7.2, un outil de templating, pour la mise en forme des notifications par mail.

Il permet facilement de concevoir un mail dynamique en fonction de vos besoins.

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.

Faites une copie des templates utilisés par les commandes de notification qui vous ont été fournies lors de l'installation.



Nous vous recommandons de conserver le préfixe [ host_ | service_ ] afin d'identifier plus facilement vos templates.

cd /var/lib/shinken/libexec/notifications
cp host_alert_content_template.tpl <nom de votre fichier>
cp service_alert_content_template.tpl <nom de votre fichier>

Cloner et éditer les commandes de notification par mail

Il faut maintenant faire une configuration spécifique de l'environnement en créant une méthode de notification ( voir la page Edition d'une méthode de notification ), et plusieurs commandes ( voir la page Les commandes ) utilisant vos templates personnalisés via l'argument --content-tpl de la commande.

Nous vous proposons plusieurs commandes de démonstration, pour vous permettre personnaliser vos notifications ( voir les pages NEW_PAGE - 003.5.6 - SEF-11240 - SHINKEN EXAMPLE [ email-with-thresholds ] - Méthode de notification, NEW_PAGE - 003.5.6 - SEF-11240 - email-with-images - Méthode de notification et NEW_PAGE - 003.5.6 - SEF-11240 - email - Méthode de notification )

Utilisation de Jinja

Le template utilisé par les commandes de pack Shinken utilise toutes les données dynamiques utilisables au sein des templates. Le template génère le mail au format HTML, pour des raisons de mise en page.

Les données dynamiques peuvent être intégrées facilement au contenu généré.

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 %}

Il sera possible d'utiliser des boucles "for" pour créer un élément HTML à partir d'une liste ou d'objet, ou même d'attribué dynamiquement des classes à des éléments.


Documentation de Jinja

Vous pouvez trouvez 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.


L'utilisation du HTML et du CSS dans les mails.

En plus du template, certaines propriétés comme l'affichage des seuils permettent d'afficher des informations complexes et sous différents formats. Il sera alors possible d'intégrer ces informations dans les notifications par mails.

Il faudra prendre en compte les informations suivantes concernant l'utilisation du HTML et CSS dans vos notifications.

HTML

L'utilisation du HTML dans les notifications par mail est possible. Il faut cependant prendre en compte les limitations de cette technologie par les clients mails.

Malgré l'implémentation du standard depuis le début des années 2010 dans les navigateurs web, il en est une toute autres histoires avec les clients mails.

CSS

L'utilisation du CSS dans les notifications par mail est possible. Il faut cependant prendre en compte les limitations de cette technologie par les clients mails.

Malgré la standardisation de cette technologie, elle n'est pas adoptée de la même manière et sous la même forme par les différents clients.

Contrairement aux usages web qui veulent qu'on limite au maximum le style "inline" ( indiquer le style directement dans la balise HTML ), il s'agit de la manière de procéder pour la création de mail.

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, voir certaines balises sont interprétées chez certains et pas chez d'autres.

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é.

Shinken et le HTML/CSS

D'autres balises HTML sont interdites par Shinken pour des motifs de sécurité. Elles seront sauvegardées, mais ne seront ni interprétée, ni transmise lors des notifications.

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 ) )

Vous pouvez mettre un lien vers la page Shinken de votre hôte, ou pointer vers une donnée que vous aurez configurée.

     <td><a href="$MAILURL$" target="_blank">$HOSTNAME$ -  $HOSTSTATE$</a></td>

Exemple

En fonction du ou des logiciels cible et grâce à cet outil, vous pourrez construire un affichage compatible à vos besoins graphique et aux capacités de vos clients mails.

Le plus simple est souvent d'utiliser une base de tableau HTML qui est correctement pris en compte par tous les clients.

<table>
  <tr>
    <th style="width:100px;"> </th>
    <th>Titre</th>      
	<th style="width:100px;"> </th>    
 </tr>
  <tr>      
	<td>Nom 1</td>
    <td>$HOSTNAME$</td>
    <td style="width:5px;" > </td>        
    <td><a href="$MAILURL$" target="_blank">$HOSTNAME$ -  $HOSTSTATE$</a></td>   </tr>
  <tr>
    <td>Nom 2</td>
    <td>$HOSTNAME$</td>
    <td style="width:5px;" > </td>
    <td>
		<a href="$MAILURL$" target="_blank">$HOSTNAME$ -  $HOSTSTATE$</a>
	</td>
  </tr>
  <tr>      
	<td>Nom 3</td>
    <td>$HOSTNAME$</td>
    <td style="width:5px;" > </td> 
    <td> <a href="www.google.fr" target="_blank">Liens</a></td>    
  </tr>
</table>

Exemple de HTML/CSS pris en charge par les notifications

HTML

HTML/CSS

  • <a href="tel:+33123456789">Appeler d'urgence</a>
  • <a href="mailto:exemple@domaine.com">Envoyez-nous un email</a>
  • <p><i>Votre texte</i></p>
  • <h1>Votre titre</h1>
  • <ul><li></li><li></li></ul>
  • <ol><li></li><li></li></ol>
  • <a style="background-color:blue;" href="tel:+33123456789">Appeler d'urgence</a>
  • <h1 style="padding:5px;" >Votre titre</h1>