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