WebService pour gérer les downtime de Nagios

Il est très désagréable pour les administrateurs systèmes d’avoir du bruit en supervision, par exemple lorsqu’un service Nagios passe en erreur (Warning ou Critical) alors que celui-ci est ‘simplement’ en cours de maintenance. Cependant il est aussi contraignant de manuellement aller prévenir Nagios sur son interface Web pour mettre les services impactés par une intervention en Downtime.

C’est pourquoi nous avons mis en place un petit webservice en CGI shell que l’on va pouvoir utiliser de manière automatisée lors du déclenchement d’interventions. Chez nous il est principalement appelé depuis :

  • Les scripts de mise en production
  • Les scripts de prerm et de postinstall des paquets Debian

Ces scripts CGI sont largement perfectibles mais ils ont eu le mérite de réduire chez nous les alertes inutiles.

Ils sont découpés en deux scripts distincts :

  • Le premier met en place le downtime sur le serveur Nagios. Vous le pouvez le récupérer à cette addresse. Il prend en arguments :
  1. HOSTNAME=my_host.fqdn
  2. SERVICEDESC=my_service
  3. DURATION=250
  4. AUTHOR=my_user
  5. COMMENT=my_comment”
  • Le second script retire le downtime sur le serveur Nagios. Vous le pouvez le récupérer à cette addresse. Il prend en arguments :
  1. HOSTNAME=my_host.fqdn
  2. SERVICEDESC=my_service

Pour les appeler rien de plus simple :

$ curl "http://my_nagios.fqdn/cgi/schedule-svc-downtime.sh?HOSTNAME=my_host.fqdn&SERVICEDESC=my_service&DURATION=250&AUTHOR=my_user&COMMENT=my_comment"
et pour l’annuler :
curl "http://my_nagios.fqdn/cgi/remove-svc-downtime.sh?HOSTNAME=my_host.fqdn&SERVICEDESC=my_service"
Limitations : 
  • Le webservice doit tourner sur la même machine que Nagios.
  • Le fichier status.dat n’étant pas mis à jour de manière très dynamique, on peut parfois essayer de désactiver le downtime avant que la référence à celui ci ne soit écris dans status.dat. C’est pourquoi je fais une boucle avec un sleep  ma directive status_update_interval étant à 15 secondes. Pas très élégant mais ça fait le job.
  • Nagios ne supporte pas un downtime pour une période indéfinie. On est obligé de définir un downtime “très long” par rapport à l’intervention puis de l’annuler

Si vous avez des retours, n’hésitez pas :)

Vus : 1160
Publié par Fitzdsl Blog : 27