Principe
Nagvis permet créer un menu personnalisé à l'aide de "modèle de menu". Ces modèles sont des fichiers HTML qui contiennent des macros que Nagvis va interpréter.
Pour être utilisés par Nagvis, les fichiers HTML doivent être présent dans le dossier /opt/nagvis/share/userfiles/templates/.
Créer un modèle de menu
Pour créer un modèle, il suffit de créer un fichier .html devant être nommé de la façon suivante :
nomDuModele.context.html
Ce fichier est un fichier HTML classique, mais qui peut contenir des macros spécifiques à Nagvis (voir ci-dessous).
Il est possible d'ajouter du style CSS au menu en créant un fichier .css qui doit être nommée de cette manière :
nomDuModele.context.css
Le système de macro de Nagvis
Les macros permettent de récupérer des informations de l'objet auquel le modèle est accroché et des informations liées à la configuration de Nagvis.
Exemple: l'id de l'objet avec la macro [obj_id]
Macros disponibles
Voici une liste non exhaustive des macros disponibles.
Les macros génériques
| Macro | Description |
|---|---|
| [obj_id] | ID de l'objet en JavaScript. Nécessaire pour localiser les parties spécifiques de l'objet, par exemple pour planifier une mise à jour manuelle des informations d'état. |
| [type] | Type de l'objet |
| [name] | Nom de l'objet (Hostname, Hostgroupname, Servicegroupname, Mapname,...) |
| [backend_id] | L'identifiant du shinken sur lequel est accroché l'objet |
| [custom_1] | Représente une donnée de l'objet défini dans la configuration de Shinken |
| [custom_2] | Une autre donnée de l'objet |
| [custom_3] | Une autre donnée de l'objet |
| [map_name] | Nom de la carte courante |
Les macros liées aux labels
| Macro | Description |
|---|---|
| [lang_refresh_status] | Affiche le label du rafraichissement du statut |
| [lang_schedule_downtime] | Affiche le label programmation de période de maintenance |
| [lang_reschedule_next_check] | Affiche le label de l'action forcer une vérification |
| [lang_connect_by_ssh] | Affiche le label de l'action de connexion par SSH à l'élément |
Les macros au chemin (path)
| Macro | Description |
|---|---|
| [html_base] | URL absolue vers la base HTML (Par défaut : /nagvis) |
| [html_cgi] | URL absolue vers les CGI de Nagios. Utilisation d'une valeur spécifique à l'objet. Dépend du backend utilisé. Si aucune valeur spécifique au backend n'est définie, la valeur par défaut sera utilisée. (Par défaut : /nagios/cgi-bin) |
| [html_templates] | Chemin d'accès au répertoire des modèles de contexte (Par défaut : /nagvis/userfiles/templates) |
| [html_template_images] | Chemin d'accès au répertoire des images du modèle de contexte (Par défaut : /nagvis/userfiles/images/templates) |
Macros section
Dans le fichier HTML du modèle de menu, il existe des macros "section" qui permettent de poser des conditions au code HTML.
Par exemple: N'affichait que le code si l'objet est un hôte
<!-- BEGIN host --> Le contenu du code HTML <!-- END host -->
En plus des types d'éléments, il existe d'autres types de macros de section :
| Section | Description |
|---|---|
| line | N'affiche la section que pour les objets de ligne |
| stateful | N'affiche la section que pour les objets à état. |
| not_automap | Ne l'affiche que pour les vues non automatiques (cartes normales). |
| locked | Ne s'affiche que pour les objets verrouillés. |
| unlocked | Ne s'affiche que pour les objets déverrouillés. |
| permitted_edit | S'affiche uniquement lorsque l'utilisateur est en mesure de modifier la carte. |
| permitted_perform | Ne s'affiche que lorsque l'utilisateur est en mesure d'effectuer des actions. |
| action_* | S'affiche uniquement lorsque cette action est enregistrée pour cet objet. |
Exemple d'un fichier
<ul>
<!-- BEGIN locked -->
<li><a href="#" onClick="toggleMapObjectLock(event, '[obj_id]'); contextHide();return false">[lang_unlock]</a></li>
<!-- END locked -->
<!-- BEGIN unlocked -->
<li><a href="#" onClick="toggleMapObjectLock(event, '[obj_id]'); contextHide();return false">[lang_lock]</a></li>
<li><a href="#" onClick="showAddModifyDialog('[map_name]', '[obj_id]');contextHide();return false">[lang_modify]</a></li>
<li><a href="#" onClick="removeMapObject(event,'[obj_id]', '[lang_delete_confirm]');contextHide();return false">[lang_delete]</a></li>
<!-- END unlocked -->
</ul>