Bonjour à tous,
Je viens d'avoir un cas à gérer sous Shinken (version 1.4, mais ça doit être pareil avec la 2.0.3 ou la 2.2), et dans ce que j'en comprends le problème est à mon avis le même sur tous les Nagios-Like.
On m'a demandé de brancher un outil de ticketing sur la supervision pour ouvrir en automatique un tickets sur les Host Down ou sur les Services en Warning ou Critique. Dans les documentations, il est indiqué qu'il faut pour cela utiliser les event handler, exemple :
http://shinken.readthedocs.org/en/branch-1.4/07_advancedtopics/advancedtopic...
C'est effectivement très intéressant parce que l'on peut récupérer beaucoup d'informations via les macros (http://shinken.readthedocs.org/en/branch-1.4/05_thebasics/thebasics-macrolis..., la mise en page serait à revoir) qu'il suffit de passer en paramètre à un script... (C'est juste dommage que la partie contact ne fasse pas partie des macros disponibles au niveau eventhandler, mais bon je pense qu'il y a un problème de conception sur le fait de ce besoin il faudra que je creuse). Bref j'ai avec du mal fait un script perl (perso, j'ai tjs un peu de mal avec ce langage) qui créé les tickets...
Cela marche plutôt pas si mal sauf en cas de downtime... En effet dans mon script je teste si je ne suis pas en downtime via les macros passées en paramètre $HOSTDOWNTIME$ & $SERVICEDOWNTIME$ (pour les services) pour éviter de créer un ticket sur un matériel en maintenance...
Tout irait dans le meilleur des mondes si toutes les opérations de maintenance se passaient toujours bien et que tous les services redémarraient correctement avant la fin du downtime... Sauf que non, et du coup le changement d'état qui a généré pendant que le matériel était en downtime a été gentiment ignoré par mon script et donc n'a pas créé de ticket... mais ensuite à la sortie du downtime, il n'y a pas de changement d'état et donc pas de lancement de mon script.
Comment résoudriez-vous ce problème proprement ? Dois-je poster un message à la communauté Nagios-like ? Poster un bug report de demande d'amélioration ? Revoir mon script ?
Pour le moment je pense avoir trouver une solution quick & dirty qui consiste à un petit script en crontab qui liste les services & hosts qui ne sont pas acquittés et qui redéclenche l'event handler lorsqu'ils ne sont pas dans la période de downtime... La solution est Shinken only d'après ce que j'ai vu puisque j'utilise les commandes externes LAUNCH_SVC_EVENT_HANDLER& LAUNCH_HOST_EVENT_HANDLER (Merci Thruk de m'avoir mis sur la piste, parce que ce n'est pas super documenté mais un peu de grep dans les sources donnent l'info).
Merci de vos éventuels retours.
JYL