Shinken Entreprise permet d'effectuer des remplacements dynamiques de contenu ( autrefois appelé "MACRO" ).
Exemple :
On dispose d'une commande qui se charge de contacter un hôte pour déterminer s'il est joignable ou non.
Ainsi, en utilisant cette Variable dans notre commande, lorsque celle-ci sera utilisée lors de la vérification d'un hôte, le mécanisme de remplacement dynamique va automatiquement remplacer la Variable par l'adresse de l'hôte.
check_ping -H "$HOSTADDRESS$" (...autres paramètres) |
donne au final
check_ping -H "192.168.1.12" (...autres paramètres) |
Le remplacement dynamique de contenu n'est pas effectué partout.
Voici la liste par type d'élément où est effectué le remplacement dynamique de contenu :
Les Hôtes et leurs modèles
Les Clusters et leurs modèles
Les Checks et leur modèles
Les Utilisateurs avec leurs modèles
Les Méthodes de notification
Les Commandes
Les Modulations de données
Le remplacement dynamique de contenu est récursif.
|
Il peut arriver que le résultat de certaines Variables nécessite l'évaluation d'autres Variables pour être obtenu.
Pour éviter tout emballement récursif ( exemple : VARIABLE_1 nécessite VARIABLE_2 qui nécessite VARIABLE_3 qui nécessite VARIABLE_1 ), les limites suivantes sont appliquées lors de la résolution des Variables :
Si un dépassement se produit,
|
Le remplacement est fait dans deux démons :
Le Synchronizer ne gérant que la configuration des éléments,
Il y a une autre différence sur les remplacements effectués par les deux démons :
Il existe trois types de Variables :
Il est possible dans Shinken Entreprise de définir des Variables globales accessibles partout dans Shinken et qui ne dépendent pas d'un élément particulier.
|
Les Variables globales peuvent être définies UNIQUEMENT par fichiers de configuration.
La syntaxe pour la déclaration des Variables globales est la suivante :
# Commentaire: les lignes commençant par # seront ignorées # Les noms de globales doivent être entourés de $ $NOMDELAGLOBALE$=valeur |
Les noms de Variables globales ne peuvent contenir que des caractères alphanumériques ( A-Z 0-9 ), des tirets ( - ) et des soulignés ( _ ).
Shinken possède aussi des Variables globales directement utilisable et dont les valeurs proviennent des démons.
| Syntaxe | Description | Remplacé dans le Synchronizer | Remplacé dans le Scheduler |
|---|---|---|---|
$LONGDATETIME$ | Heure/date courante au format long ( par exemple : Fri Oct 13 00:30:28 CDT 2000 ) | ||
$SHORTDATETIME$ | Heure/date courante au format court ( par exemple : 10-13-2000 00:30:28 ) | ||
$DATE$ | Date courante ( par exemple : 10-13-2000 ) | ||
$TIME$ | Heure courante ( par exemple : 00:30:28 ) | ||
$TIMET$ | Heure courante au format timestamp ( par exemple : 1706871278 ) | ||
$SHINKENVERSION$ | Contient la version de Shinken. ( par exemple : V02.08.02 ) |
Ces Variables ne sont pas encore disponibles dans le Synchronizer.
|
Les Variables globales sont accessibles en entourant le nom de la Variable globale par des dollars "$".
Parce que les Variables globales sont définies dans les fichiers de configuration, l'ajout ou la modification d'une Variable globale dans ces fichiers nécessite un redémarrage du Synchronizer et de l'Arbiter pour que les changements soient pris en compte.
|
Les Variables d'élément correspondent à des propriétés ( de définition ou d'exécution ) ou des données d'un élément.
Parmi tous les éléments de Shinken Entreprise, il est possible d'accéder à certaines propriétés des Hôtes, des Clusters, des Checks et des Utilisateurs.
On accède a la propriété en rajoutant son nom aprés le type
|
|
| Syntaxe | Propriété de TYPE | Description | Disponible dans le Synchronizer | Disponible dans le Scheduler |
|---|---|---|---|---|
$HOSTNAME$ | DEFINITION | Nom de l'hôte ( propriété host_name ) | ||
$HOSTDISPLAYNAME$ | DEFINITION | Nom d'affichage de l'hôte ( propriété display_name ) | ||
$HOSTADDRESS$ | DEFINITION | Adresse de l'hôte ( propriété address ) | ||
$HOSTUUID$ | DEFINITION | Identifient unique d'un hôte ( Voir la page TIPS - Récupérer l'UUID d'un élément ( Cluster / Hôte / Check ) ) | ||
$HOSTREALM$ | DEFINITION | Royaume de l'hôte ( propriété realm ) | ||
$HOSTSTATE$ | EXECUTION | Statut courant de l'hôte ( UP, DOWN, ou UNREACHABLE ) | ||
| $HOSTSTATETYPE$ | EXECUTION | Confirmation du statut d'un hôte ( SOFT ou HARD ) | ||
$HOSTSTATEID$ | EXECUTION | Numéro correspondant au statut courant de l'hôte ( 0=UP, 1=DOWN, ou 2=UNREACHABLE ) | ||
$LASTHOSTSTATE$ | EXECUTION | Statut précédent de l'hôte ( UP, DOWN, ou UNREACHABLE ) | ||
$LASTHOSTSTATEID$ | EXECUTION | Numéro correspondant au statut précédent de l'hôte ( 0=UP, 1=DOWN, ou 2=UNREACHABLE ) | ||
$HOSTGROUPNAME$ | EXECUTION | Nom du groupe d'hôte auquel appartient l'hôte. S'il appartient à plusieurs groupes d'hôtes, un seul sera retourné | ||
$HOSTGROUPNAMES$ | DEFINITION | Liste des groupes d'hôtes auxquels appartient l'hôte, séparés par des virgules | ||
$LASTHOSTCHECK$ | EXECUTION | Date au format timestamp de la dernière vérification de l'hôte | ||
$LASTHOSTSTATECHANGE$ | EXECUTION | Date au format timestamp du dernier changement de statut de l'hôte | ||
$LASTHOSTUP$ | EXECUTION | Date au format timestamp du dernier statut UP de l'hôte | ||
$LASTHOSTDOWN$ | EXECUTION | Date au format timestamp du dernier statut DOWN de l'hôte | ||
$LASTHOSTUNREACHABLE$ | EXECUTION | Date au format timestamp du dernier statut UNREACHABLE de l'hôte | ||
$HOSTOUTPUT$ | EXECUTION | Résultat de la dernière vérification de l'hôte | ||
$LONGHOSTOUTPUT$ | EXECUTION | Résultat long de la dernière vérification de l'hôte | ||
$HOSTPERFDATA$ | EXECUTION | Données de performances renvoyées par la dernière vérification de l'hôte | ||
$HOSTCHECKCOMMAND$ | DEFINITION | Nom de la commande utilisée pour la vérification de l'hôte ( avec les paramètres ) | ||
$HOSTNOTESURL$ | DEFINITION | URL externe de l'hôte ( propriété notes_url ) | ||
$HOSTBUSINESSIMPACT$ | DEFINITION | Nombre entre 0 et 5 indiquant l'impact métier de l'hôte | ||
$HOSTFIRSTNOTIFICATIONDELAY$ | DEFINITION | Nombre de minutes à attendre avant d'envoyer la première notification pour un hôte | ||
$HOSTNOTIFICATIONNUMBER$ | EXECUTION | Nombre de notifications consécutives envoyées pour un statut différent de UP | ||
$HOSTDOWNTIMECOMMENT$ | EXECUTION | Le commentaire du contexte "Période de maintenance" | ||
$HOSTDOWNTIMEAUTHOR$ | EXECUTION | L'auteur du contexte "Période de maintenance" | ||
$ACKDATA$ | EXECUTION | Le message d'un contexte "Prise en compte". | ||
$ACKAUTHOR$ | EXECUTION | L'auteur d'un contexte "Prise en compte". |
On accède en général aux propriétés de l'hôte avec la notation entre dollars commençant par HOST ( exemple : $HOSTADDRESS$ ). Dans le tableau, certaines entrées ne commençant pas par HOST sont présentes, mais elles font quand même référence à une propriété de l'hôte. |
| Syntaxe | Propriété de TYPE | Description | Disponible dans le Synchronizer | Disponible dans le Scheduler |
|---|---|---|---|---|
$SERVICEDESC$ | DEFINITION | Nom/description du check | ||
$SERVICEDISPLAYNAME$ | DEFINITION | Nom d'affichage du check ( propriété display_name ) | ||
$SERVICEUUID$ | DEFINITION | Identifient unique d'un check ( Voir la page TIPS - Récupérer l'UUID d'un élément ( Cluster / Hôte / Check ) ) | ||
$SERVICESTATE$ | EXECUTION | Statut courant du check ( OK, WARNING, UNKNOWN, CRITICAL ) | ||
$SERVICESTATETYPE$ | EXECUTION | Confirmation du statut d'un check ( SOFT ou HARD ) | ||
$SERVICESTATEID$ | EXECUTION | Numéro correspondant au statut courant du check ( 0=UP, 1=DOWN, ou 2=UNREACHABLE ) | ||
$LASTSERVICESTATE$ | EXECUTION | Statut précédent du check ( OK, WARNING, UNKNOWN, CRITICAL ) | ||
$LASTSERVICESTATEID$ | EXECUTION | Numéro correspondant au statut précédent du check ( 0=UP, 1=DOWN, ou 2=UNREACHABLE ) | ||
$SERVICEISVOLATILE$ | DEFINITION | Booléen indiquant si le check est volatile ( False=Non volatile, True=Volatile ) | ||
$LASTSERVICECHECK$ | EXECUTION | Date au format timestamp de la dernière exécution du check | ||
$LASTSERVICESTATECHANGE$ | EXECUTION | Date au format timestamp du dernier changement de statut du check | ||
$LASTSERVICEOK$ | EXECUTION | Date au format timestamp du dernier statut OK du check | ||
$LASTSERVICEWARNING$ | EXECUTION | Date au format timestamp du dernier statut WARNING du check | ||
$LASTSERVICEUNKNOWN$ | EXECUTION | Date au format timestamp du dernier statut UNKNOWN du check | ||
$LASTSERVICECRITICAL$ | EXECUTION | Date au format timestamp du dernier statut CRITICAL du check | ||
$SERVICEOUTPUT$ | EXECUTION | Résultat de la dernière vérification du check | ||
$LONGSERVICEOUTPUT$ | EXECUTION | Résultat long de la dernière vérification du check | ||
$SERVICEPERFDATA$ | EXECUTION | Données de performances renvoyées par la dernière exécution du check | ||
$SERVICECHECKCOMMAND$ | DEFINITION | Nom de la commande utilisée pour l'exécution du check ( avec les paramètres ) | ||
$SERVICENOTESURL$ | DEFINITION | URL externe du check ( propriété notes_url ) | ||
$SERVICEBUSINESSIMPACT$ | DEFINITION | Nombre entre 0 et 5 indiquant l'impact métier du check | ||
$SERVICEFIRSTNOTIFICATIONDELAY$ | DEFINITION | Nombre de minutes à attendre avant d'envoyer la première notification pour un service | ||
$SERVICENOTIFICATIONNUMBER$ | EXECUTION | Nombre de notifications consécutives envoyées pour un statut différent de OK | ||
$SERVICEDOWNTIMECOMMENT$ | EXECUTION | Le commentaire du contexte "Période de maintenance" | ||
$SERVICEDOWNTIMEAUTHOR$ | EXECUTION | L'auteur du contexte "Période de maintenance" | ||
$ACKDATA$ | EXECUTION | Le message d'un contexte "Prise en compte". | ||
$ACKAUTHOR$ | EXECUTION | L'auteur d'un contexte "Prise en compte". |
On accède en général aux propriétés du check avec la notation entre dollars commençant par SERVICE ( exemple : $SERVICEDESC$ ). Dans le tableau, certaines entrées ne commençant pas par SERVICE sont présentes, mais elles font quand même référence à une propriété du check. |
| Syntaxe | Propriété de TYPE | Description | Disponible dans le Synchronizer | Disponible dans le Scheduler |
|---|---|---|---|---|
| $CONTACTNAME$ | DEFINITION | Nom de l'utilisateur ( propriété contact_name ) | ||
| $CONTACTEMAIL$ | DEFINITION | Adresse mail de l'utilisateur ( propriété email ) | ||
| $CONTACTPAGER$ | DEFINITION | Numéro de téléphone de l'utilisateur ( propriété pager ) |
| Syntaxe | Propriété de TYPE | Description | Disponible dans le Synchronizer | Disponible dans le Scheduler | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| $NOTIFICATIONTYPE$ | EXECUTION | Le type de notification à envoyer. Cela correspond au type d'événement qui a été constaté sur l'élément.
|
Shinken Entreprise permet d'ajouter des données personnalisées sur certains éléments, comme les hôtes, les checks, les utilisateurs, et bien sûr les modèles d'hôtes, de checks et d'utilisateurs.
Par exemple, si un hôte possède deux interfaces réseau, les propriétés par défaut de l'objet ne permettent pas de spécifier deux adresses.
Pour accéder à une donnée d'un élément, il faut bien sûr le $, puis un UNDERSCORE, puis le type de l'élément et le nom de la propriété :
On accède à la donnée en rajoutant son nom aprés le type.
|
C'est la présence d'un underscore ( _ ) avant HOST, SERVICE ou CONTACT, ce qui permet de différencier l'accès à une propriété de l'élément et l'accès à une donnée personnalisée. |
|
Les données locales peuvent être définies sur les hôtes, checks, utilisateurs et leurs modèles respectifs de 2 manières :
Dans un fichier de configuration, les données sont définies en préfixant un _ à leur nom. Le nom d'une donnée peut contenir seulement des caractères alphanumériques ( A-Z0-9 ), des tirets ( - ) ou underscore ( _ ). Aussi, le nom d'une donnée sera toujours en majuscules.
define host {
host_name mon_hote
address 192.168.0.12
_DONNEE_PERSONNALISEE valeur_de_la_donnée
} |
Dans l'interface de configuration, l'ajout et la modification de données personnalisées s'effectuent grâce à l'onglet "Données".
|
Cette capture d'écran montre l'édition de données personnalisées dans le cas d'un hôte. Les mêmes manipulations sur les données personnalisées sont possibles pour les modèles d'hôtes, clusters, modèles de clusters, checks, modèles de check, utilisateurs et modèles d'utilisateurs.
Dans un fichier de configuration, une donnée personnalisée est définie en précédant son nom d'un underscore (_). Dans l'interface de configuration, cet underscore ne doit pas être spécifié, car il s'agit seulement d'un moyen dans les fichiers de différencier une donnée personnalisée d'une propriété. La déclaration d'une donnée personnalisée depuis l'interface se fait seulement en précisant le nom de la donnée et sa valeur. |
Lorsque l'on remplace dynamiquement du contenu,
Ces Variables spéciales sont accessibles avec les notations $ARGn$ et $VALUEn$.
Shinken Entreprise permet aux hôtes et aux checks de préciser les commandes qui seront utilisées pour la vérification de l'élément.
Dans l'exemple, un check utilise la commande "ma_commande" et lui passe 3 arguments.
|
Dans la définition de la commande, on veut pouvoir récupérer la valeur de ces arguments pour pouvoir les utiliser sur la ligne de commande.
Dans l'exemple, on utilise $ARG1$, $ARG2$ et $ARG3$ pour récupérer les valeurs du premier, deuxième et troisième argument.
|
Il est possible d'utiliser des Variables comme argument.
|
|
Il est possible d'utiliser jusqu'à 32 arguments.
|
La fonctionnalité avancée Dupliquer des checks en fonction d'une liste de valeurs présentes dans la Donnée d'un hôte (duplicate_foreach) permet d'appliquer plusieurs fois le même check sur un hôte avec des paramètres différents, selon la valeur d'une donnée personnalisée sur l'hôte.
Sur chaque check utilisant la fonctionnalité Duplicate Foreach, une clé est affectée, et optionnellement des paramètres.
check1$(valeur1)$$(valeur2)$$(valeur3)$ |
La valeur de la clé est accessible avec la Variable $KEY$, et les arguments sont accessibles grâce aux Variables $VALUEn$.
Le tableau suivant récapitule les Variables permettant d’accéder aux valeurs de la donnée Duplicate Foreach:
| Variable | Valeur |
|---|---|
| $KEY$ | check1 |
| $VALUE1$ | valeur1 |
| $VALUE2$ | valeur2 |
| $VALUE3$ | valeur3 |
Il est possible d'utiliser 16 valeurs différentes. Ainsi, les Variables $VALUE1$ jusqu’à $VALUE16$ sont disponibles. |
|