Interface web de Nagios : filtrer automatiquement certains informations inutiles
L'antique interface web de Nagios (CGI en C) fait de la résistance. Un point fort de celle-ci est la gestion des filtres: par exemple, un ancien collègue m'a demandé un jour :
- comment afficher automatiquement la vue "n'afficher que les services en état d'erreur, non acquittés et dont la notification est activée".
Pas facile? Si bien sûr!
Bon, pour faire ça il est nécessaire de savoir lire un peu de code C. Cependant, aucune modification du code ni aucune re-compilation obligatoire. Si vous disposez d'une version packagée de Nagios (comme peut l'être l'excellent projet de distribution Linux orientée supervision ;-) ), il n'est pas obligatoire de tout casser et de tout recompiler :-)
Déjà, il faut récupérer les sources de Nagios sur votre poste utilisateur. Ensuite, il faut ouvrir les fichiers "include/cgiutils.h" et "include/statusdata.h". Un peu de lecture de code C est nécessaire: ce fichier contient des directives du style:
#define NOTIFICATION_ALL 0 /* all service and host notifications */ #define NOTIFICATION_SERVICE_ALL 1 /* all types of service notifications */ #define NOTIFICATION_HOST_ALL 2 /* all types of host notifications */ #define NOTIFICATION_SERVICE_WARNING 4 #define NOTIFICATION_SERVICE_UNKNOWN 8 #define NOTIFICATION_SERVICE_CRITICAL 16 #define NOTIFICATION_SERVICE_RECOVERY 32 #define NOTIFICATION_HOST_DOWN 64 #define NOTIFICATION_HOST_UNREACHABLE 128 #define NOTIFICATION_HOST_RECOVERY 256 #define NOTIFICATION_SERVICE_ACK 512 #define NOTIFICATION_HOST_ACK 1024 #define NOTIFICATION_SERVICE_FLAP 2048 #define NOTIFICATION_HOST_FLAP 4096 #define NOTIFICATION_SERVICE_CUSTOM 8192 #define NOTIFICATION_HOST_CUSTOM 16384
Il faut maintenant calculer les filtres à appliquer. Nous voulons les éléments suivants:
- statut des services
- WARNING
- CRITICAL
- UNKNOWN
- propriété des services
- notification désactivée
Les directives sont les suivantes:
- statut des services: fichier "include/statusdata.h" mot clé "servicestatustypes" dans l'URL
- WARNING: macro "SERVICE_WARNING", valeur 4
- CRITICAL: macro "SERVICE_CRITICAL", valeur 16
- UNKNOWN: macro "SERVICE_UNKNOWN", valeur 8
- propriété des services: fichier "include/cgiutils.h" mot clé "serviceprops" dans l'URL
- notification désactivée: macro "SERVICE_NOTIFICATIONS_DISABLED", valeur: 4096
Enfin, il suffit d'additionner les valeurs et construire l'URL. L'URL de base pour l'affichage des statuts est: http://<ip_du_serveur>/nagios/cgi-bin/status.cgi?host=all Il faut maintenant ajouter nos paramètres:
- servicestatustypes=28 (4+16+8)
- serviceprops=4096
L'URL finale devient donc:
http://<ip_du_serveur>/nagios/cgi-bin/status.cgi?host=all&servicestatustypes=28&serviceprops=4096



Merci encore pour ton aide d'ailleurs Cédric,
asyd | dimanche, juillet 5 2009 | 12:34Merci encore pour ton aide d'ailleurs Cédric, j'utilise beaucoup cette fonctionnalité !