Étiquettes dynamiques : Différence entre versions

De Intermapper Wiki - Supervision réseau & serveurs
Aller à : navigation, rechercher
(Afficher un paramètre ou une variable dans l'étiquette)
(Utiliser JavaScript dans une étiquette ou une alerte)
Ligne 32 : Ligne 32 :
  
  
{| class="wikitable" width="90%"
+
<pre><? write( "Hello World" + "\n"); ?></pre>
|+
 
|-
 
| width="100%" |
 
  <? write( "Hello World" + "\n"); ?>
 
|}
 
  
 
Les balises <? et ?> indiquent respectivement le début et la fin du JavaScript.
 
Les balises <? et ?> indiquent respectivement le début et la fin du JavaScript.
Ligne 56 : Ligne 51 :
  
  
{| class="wikitable" width="90%"
+
<pre><Smart Name>
|+
 
|-
 
| width="100%" |
 
  <Smart Name>
 
 
 
 
<?
 
<?
 
 
  for (var i=1; i<=3; i++) {
 
  for (var i=1; i<=3; i++) {
 
 
   writeln( "Hello World #" + i);
 
   writeln( "Hello World #" + i);
 
 
   }
 
   }
?>
+
?></pre>
|}
 
  
 
Affichera comme étiquette :
 
Affichera comme étiquette :
Ligne 87 : Ligne 73 :
 
L'utilisation de la syntaxe suivante permet d'accéder aux paramètres d'une probe :
 
L'utilisation de la syntaxe suivante permet d'accéder aux paramètres d'une probe :
  
{| class="wikitable" width="90%"
+
<pre><? writeln( "Getting data from: " + self.get( "Object ID")); ?></pre>
|+
 
|-
 
| width="100%" |
 
  <? writeln( "Getting data from: " + self.get( "Object ID")); ?>
 
|}
 
  
  
 
L'objet self fait référence à l'objet ou se trouve le script. L'objet self est toujours disponible en JavaScript dans les étiquettes. Utilisez une syntaxe identique :
 
L'objet self fait référence à l'objet ou se trouve le script. L'objet self est toujours disponible en JavaScript dans les étiquettes. Utilisez une syntaxe identique :
  
{| class="wikitable" width="90%"
+
<pre><?
|+
 
|-
 
| width="100%" |
 
<?
 
 
 
 
   var connTime = self.get( "_connect");
 
   var connTime = self.get( "_connect");
 
 
   writeln( "Time to establish connection: " + connTime);
 
   writeln( "Time to establish connection: " + connTime);
 
+
?></pre>
?>
 
|}
 
  
  
Ligne 121 : Ligne 94 :
 
Si vous consultez le journal de debug ( debug log) vous trouverez le message suivant :
 
Si vous consultez le journal de debug ( debug log) vous trouverez le message suivant :
  
{| class="wikitable" width="90%"
+
<pre> 12:15:46 JS> [Device: map 'Exporting Fields', device 'nitro.dartware.com.', probe
|+
 
|-
 
| width="100%" |
 
12:15:46 JS> [Device: map 'Exporting Fields', device 'nitro.dartware.com.', probe
 
 
'SNMP Traffic']:BAD ARG: There is no variable called '_conect'. It should be the
 
'SNMP Traffic']:BAD ARG: There is no variable called '_conect'. It should be the
     name of a probe variable without '$' or curly braces.
+
     name of a probe variable without '$' or curly braces.</pre>
|}
 
  
 
Le message d'erreur vous indique la cartes, le nœud et la probe qui sont la cause de l'erreur et autant de détail que possible.
 
Le message d'erreur vous indique la cartes, le nœud et la probe qui sont la cause de l'erreur et autant de détail que possible.

Version du 27 mars 2012 à 18:43

Il existe de multiples méthodes pour gérer le texte contenu dans les étiquettes, celui-ci peut même être dynamique.


Afficher un paramètre ou une variable dans l'étiquette

L'étiquette peut afficher des informations de la probe : paramètres ou variables ou de l'élément. La syntaxe est la suivante :


${param:<Nom Paramètre, variable, ou attribut>}

Par exemple, pour afficher le temps nécessaire à l'établissement de la connexion de la probe TCP au nœud, votre étiquette doit ressembler à :


Temps etablissement connexion: ${param:_connect} msec.


Attention : il n'y a pas d'espace après "param:" et le nom de la variable (Dans cet exemple, le "_" fait parti du nom de la variable ce qui n'est pas le cas de la plupart des variables.) N'importe quelle variable de la probe contenue dans le <snmp-device-display>, <script-out> ou <commande-display> en utilisant cette syntaxe. Vous pouvez afficher un paramètre de la probe Basic OID en utilisant la syntaxe :


Getting data from: ${param:Object ID}


L'affichage des information du nœud se fait en utilisant :


Belongs to map: ${param:MapName}

Utiliser JavaScript dans une étiquette ou une alerte

Vous pouvez également utiliser JavaScript dans une étiquette ou une alerte. Cette méthode vous permet de réaliser des micro-traitements sur les informations que vous souhaitez afficher.


<? write( "Hello World" + "\n"); ?>

Les balises <? et ?> indiquent respectivement le début et la fin du JavaScript.



Variables et Champ du Javascript

Important : JavaScript dans les étiquettes et les alertes fonctionne de manière globale. Si vous déclarez une variable au niveau global plutôt que dans une fonction, cette dernière est accessible en lecture/écriture par n'importe quel autre JavaScript (éventuellement positionné sur une autre nœud). Cela peut produire des résultats inattendus et erronés si vous lancez le même script sur plusieurs nœuds.

Les fonctions JavaScript sont supportées, vous pouvez dès-lors stocker des valeurs dans les nœuds et les alertes, elles seront conservées entre chaque tests ( polls ). Cette méthode est recommandée pour protéger les variables de toute modification non souhaitée. Définir des variables dans les nœuds est décrit ici : xxxxxxxxxxxxxxxxx


Exemple : un script d'étiquette simple

Le résultat de ce script est sans intérêt, l'objet de l'exemple est d'en montrer l'écriture.


<Smart Name>
<?
 for (var i=1; i<=3; i++) {
   writeln( "Hello World #" + i);
  }
?>

Affichera comme étiquette :

IMAGE


Les fonctions write et writeln

Ces deux fonctions sont utilisées pour écrire plusieurs valeurs dans les étiquettes. La différence est que writeln ajouter un saut à la ligne (ce qui évite de devoir coder un \n)


Accéder aux paramètres d'une probe

L'utilisation de la syntaxe suivante permet d'accéder aux paramètres d'une probe :

<? writeln( "Getting data from: " + self.get( "Object ID")); ?>


L'objet self fait référence à l'objet ou se trouve le script. L'objet self est toujours disponible en JavaScript dans les étiquettes. Utilisez une syntaxe identique :

<?
  var connTime = self.get( "_connect");
  writeln( "Time to establish connection: " + connTime);
?>



Gestion des erreurs JavaScript

Si vous aviez fait une faute de frappe dans le nom de votre variable, (par exemple tapé _conect au lieu de _connect) l'étiquette afficherait :

IMAGE

Si vous consultez le journal de debug ( debug log) vous trouverez le message suivant :

 12:15:46 JS> [Device: map 'Exporting Fields', device 'nitro.dartware.com.', probe
'SNMP Traffic']:BAD ARG: There is no variable called '_conect'. It should be the
    name of a probe variable without '$' or curly braces.

Le message d'erreur vous indique la cartes, le nœud et la probe qui sont la cause de l'erreur et autant de détail que possible.

Une erreur de syntaxe JavaScript afficherait quand à elle :

IMAGE


Le journal de debug donnera des détails sur l'erreur.



Limite du temps d'exécution

La durée d'exécution d'un script est limitée, entre 50 et 100 msec pour éviter la monopolisation de la CPU. C'est aussi un excellent moyen de générer des étiquettes complexes.



en_cours_actualisation.png

.