Données sur un hôte ou un check 


L'une des caractéristiques principales qui rend Shinken Enterprise si flexible, c'est sa capacité à utiliser des données dans la définition des commandes. Ces données permettent de référencer des informations provenant des hôtes, des services, ou d'autres sources dans les commandes.

Remplacement de données 

Avant d'exécuter une commande, Shinken Enterprise va remplacer toutes les données trouvées dans la définition de la commande avec leur valeurs correspondantes. Ce remplacement s'opère pour toute commande que Shinken Enterprise exécute : vérification d'hôte et de check, notification, exécution d'événements, etc .

Certaines données peuvent elles-même en contenir d'autres. Cela inclut les données "$HOSTNOTES$", "$HOSTNOTESURL$", "$HOSTACTIONURL$", "$SERVICENOTES$", "$SERVICENOTESURL$", et "$SERVICEACTIONURL$" .

Astuce: si vous devez utiliser le caractère '$' dans une commande (qui ne se réfère pas aux données), utilisez plutôt "$$" . Shinken Enterprise le remplacera très bien. 

Exemple 1: donnée adresse de l'hôte 

Lorsque vous utilisez un hôte ou un service dans les données de définitions de commande , ils se réfèrent à des valeurs pour l'hôte ou le service pour lequel la commande est en cours d'exécution

Prenons un exemple. Imaginons que utilisons une définition d'hôte et une commande check_ping tel que défini ici:

PropriétéValeur
Nomlinuxbox
adresse192.168.1.2
check_commandcheck_ping

 

PropriétéValeur
Nom check_ping
command_line /var/lib/Shinken Enterprise/libexec/check_ping -H $HOSTADDRESS$ -w 100.0,90% -c 200.0,60%

La ligne de commande qui sera exécutée pour la vérification de l'hôte ressemblera à :

/var/lib/Shinken Enterprise/libexec/check_ping -H 192.168.1.2 -w 100.0,90% -c 200.0,60%


Vous pouvez utiliser une commande unique pour vérifier un nombre illimité d'hôtes. Chaque hôte peut être vérifié avec la même définition de commande car chaque adresse d'hôte est automatiquement remplacée à chaque fois dans la commande avant exécution.


Exemple 2: données d'argument de commande

Vous pouvez également passer des arguments dans une commande, ce qui est très pratique si vous voulez garder une définition de commande générique. Les arguments sont spécifiés dans la définition de l'objet (i.e. hôte ou service) en les séparant du nom de la commande par un point d'exclamation (!) tel que:

 

Le check:

PropriétéValeur
host_namelinuxbox
DescriptionPING
commande check_ping!200.0,80%!400.0,40%

Dans cet exemple, la commande du service a 2 arguments (qui peuvent être référencés avec $ARGn$. La donnée $ARG1$ sera "200.0,80%" et "$ARG2$" sera "400.0,40%" , les 2 sans quotes).  Imaginons que utilisons la définition d'hôte vue précédemment et une commande check_ping tel que défini ici:


La commande:

PropriétéValeur
Nomcheck_ping
Ligne de commande /var/lib/Shinken Enterprise/libexec/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$

 

La ligne de commande qui sera exécutée pour la vérification de l'hôte ressemblera à :

/var/lib/Shinken Enterprise/libexec/check_ping -H 192.168.1.2 -w 200.0,40% -c 400.0,80%



Si vous devez utiliser des caractères If you need to pass bang (!) dans les arguments de la commande , you can do so by escaping them with a backslash (\). If you need to include backslashes in your command arguments, they should also be escaped with a backslash.

 

Données à la demande


Normalement, lorsque vous utilisez des données d'hôte et de service dans la définition des commandes, elles se réfèrent à des valeurs pour l'hôte ou le service pour lequel la commande est en cours d'exécution. Par exemple, si une commande de vérification d'un hôte est lancée sur un nom d'hôte "linuxbox", toutes les données "ref:standard<thebasics/datalist>" se référeront aux valeurs de cet hôte ("linuxbox").

Si vous voulez référencer des valeurs pour un autre hôte ou service dans une commande, (pour laquelle la commande n'est pas lancée) vous pouvez utiliser ce qu'on appelle les données "à la demande".Ces données sont normales, excepté le fait qu'elles contiennent un identifiant pour le service ou l'hôte dont elles doivent tirer la valeur. Voici le format simple de données à la demande

Remplace "HOSTdataNAME" et "SERVICEdataNAME" avec le nom de données standards trouvées d'un hôte ou service  :ref:here <thebasics/datalist>.

Note:le nom de données est séparé de l'identifiant de l'hôte ou du service par le séparateur 2 points (:). Pour les données de service à la demande, l'identifiant du service est constitué à la fois du nom de l'hôte te de la description du service . Ils sont également séparés par les 2 points (:) .

Les données de service à la demande peuvent avoir un nom d'hôte vide, dans ce cas on prend automatiquement le nom associé au service .

Exemples de données de service et d'hôte à la demande :


Les données à la demande sont également disponibles pour les hostgroup, servicegroup, contact, et contactgroup datas. Par exemple:

 

Données variables spécifiques 


Toute variable spécifique à un objet définie sur un hôte, service ou contact peut être utilisée comme donnée. Elles sont nommées comme ci-joint:

Prenez la définition d'hôte suivante avec une variable spécifique appelée ""_MACADDRESS""...

Définiton de l'hôte

PropriétéValeur
Nomlinuxbox
adresse192.168.1.1
_MACADDRESS00:01:02:03:04:05

 

La variable spécifique "_MACADDRESS" sera disponible comme donnée appelée "$_HOSTMACADDRESS$".

Nettoyage des données

Certaines données sont nettoyées d'une enveloppe de méta caractères potentiellement dangereux avant d'être échangés dans la commande à exécuter. Le choix des caractères à nettoyer dépend du paramétrage de la valeur "illegal_data_output_chars".Les données suivantes sont nettoyées de caractères potentiellement dangereux :