Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Make by tools (01.00.01) - action=clean_macro_parameter
Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbookhtmltruefalse
scroll-eclipsehelpdocbooktrue
scroll-epubeclipsehelptrue
scroll-htmlepubtrue
Panel
titleSommaire

Table of Contents
stylenone



Contexte

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

L'envoi de mail se fait en utilisant 2 modèles de contenu

  • un pour le titre
  • un pour le corps du mail.

Suivant vos besoins, vous pourrez modifier le format du 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 4 modèles de mail :

  • Pour les hôtes et clusters,
    • un pour le titre du mail
    • un pour le contenu du mail
  • Pour les checks :
    • un pour le titre du mail 
    • un pour le contenu du mail

Le chemin pour charger est modèles est définie dans la commande de notification.

Code Block
languagejs
themeConfluence
--title-tpl $NOTIFPLUGINDIR$/host_alert_title_template.tpl

--content-tpl $NOTIFPLUGINDIR$/host_alert_content_template.tpl 
Il permet facilement de concevoir un mail dynamique en fonction de vos besoins.

Bonnes pratiques

Warning

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

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

Code Block
language
js
text
theme
Confluence
Emacs
mkdir /var/lib/shinken-user/libexec/notifications/
cd /var/lib/shinken-user/libexec/notifications/
cp /var/lib/shinken/libexec/notifications/host_alert_
content
title_template.tpl 
<nom de votre fichier> cp service
MY_NAME_host_alert_title_template.tpl
cp /var/lib/shinken/libexec/notifications/host_alert_content_template.tpl 
<nom de votre fichier>
MY_NAME_host_alert_content_template.tpl
chown -R shinken:shinken .

2 - 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
No Format
Hostname

Nom de l'hôte

No Format
Check name

Nom du check

No Format
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.



No Format
Notification delay

retard de la notification

No Format
Notification number

numéro de la notification

No Format
Title notification

Titre de la notification

No Format
Realm

Nom du royaume

No Format
Check date

Date de vérification

No Format
State

Statut de l'élément

No Format
state_html

Icon du statut

No Format
State duration

Durée depuis le changement de statut

No Format
Last state

Dernier statut avant changement

No Format
Output

Résultat court de l'élément

No Format
Long output

Résultat long de l'élément

No Format
View

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

No Format
Acknowledge author

Auteur de la "Prise en compte"

No Format
Acknowledge data

Commentaire de la "Prise en compte"

No Format
downtime_author

Auteur de la "Période de maintenance"

No Format
downtime_comment

Commentaire de la "Période de maintenance"



Exemple d'utilisation

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 ( dans l'exemple, on regarde s'il y a un nom de check => "Check name" ).

Code Block
languagejs
themeConfluence
titleExemple
    {% if shinken_var['my_varCheck name'] %}
        <!-- Ce code ne sera pris en compte que si la donnée shinken_var['my_varCheck name'] existe et est renseignée ->

        {{ shinken_var['my_varCheck name'] }} <!-- sera remplacé dans le mail, par le contenu de shinken_var['my_varCheck name'] ->
    {% 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 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.


L'utilisation du

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

Panel

Image Removed

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.

Panel

Image Removed

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 peuvent ne pas être interprétées chez certains et pas chez d'autres.lecteur de mail ).


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

  • Il 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
Panel

Image Added



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é. 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 implique trop de
dérives
  • risque 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.

Code Block
languagejs
themeConfluence
     <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.

  • dans l'envoi des notifications.

3 - Cloner les commandes de notification

Pour cela, regarder la page 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. 
InfoLe plus simple est souvent d'utiliser une base de tableau HTML qui est correctement pris en compte par tous les clients.


Code Block
languagejs
themeConfluence
<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>
Panel
titleResultats

Image Removed

$NOTIFPLUGINDIR$/notify_by_email.py --title-tpl "/var/lib/shinken-user/libexec/notifications/MY_NAME_host_alert_title_template.tpl"
 --content-tpl "/var/lib/shinken-user/libexec/notifications/MY_NAME_host_alert_content_template.tpl" -F "$SENDER$" ...

4 - Cloner la méthode de notification

Pour cela, regarder la page 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.
Panel
titleCan i email : Table

Image Removed

Panel
titleCan i email : width

Image Removed

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>