Introduction

Le gestionnaire d'événements est un système de commandes optionnelles ( scripts ou exécutables ) qui sont lancées dès qu'un hôte ou un check changent d'état.  

Comme pour les notifications, l'objectif de pouvoir invoquer une de vos commandes que vous aurez défini pour réagir suite au changement d'état.

Voici des exemples d'utilisations :

  • Redémarrer un hôte ;
  • Relancer un service sur un hôte ;
  • Créer un ticket dans un outil de support ;
  • Tracer des événements dans une base de données ;
  • Informer un Shinken distant ;
  • ...

Mise en place

Activer le mécanisme de gestionnaire d'événements

Par défaut, Shinken active le mécanisme de gestionnaires d'événement ( event handlers ).

Ce comportement peut être surchargé ( activés ou désactivés ) globalement en utilisant le paramètre "enable_event_handlers" dans le fichier de configuration /etc/shinken/shinken.cfg ( Fichier de configuration (shinken.cfg).

  • Si ce paramètre n'est pas présent dans le fichier, il faudra l'ajouter.
  • Par exemple, pour désactiver globalement l'exécution des event handlers.

enable_event_handlers=0


Associer un gestionnaire d'événement à un élément 

On peut aussi gérer l'activation/désactivation au cas par cas sur les hôtes, les clusters ou les checks.

  • Voir dans l'onglet expert de la page d'édition de vos HôtesClusterset Checks.
    • Vous allez associer une commande en tant que gestionnaire d'événement.
    • Cela pourra être une commande déjà existante ou une que vous aurez fait spécifiquement.

A noter que si le paramètre global est à "désactivé" les gestionnaires d'événements, le paramétrage local aura aucun effet.

Ecrire une commande

Les commandes de gestionnaires d’événements sont des objets "commande" de Shinken que vous pouvez définir via la page d'édition "des commandes".

Les exemples de notation de Variables suivants permettent de régler le comportement de la commande en fonction de l'événement géré : 

Pour les checks:

  • $SERVICESTATE$
  • $SERVICESTATETYPE$
  • $SERVICEATTEMPT$

Pour les hôtes:

  • $HOSTSTATE$
  • $HOSTSTATETYPE$
  • $HOSTATTEMPT$


Référez vous à la page dédiée des notations de remplacement dynamique de contenu pour l'intégralité des notations.


Droits pour la commande

Par défaut, la commande est exécutée avec les mêmes droits que ceux de l'utilisateur sous lequel Shinken est démarré sur la machine. Cela peut présenter un problème si vous voulez utiliser un gestionnaire d'événements qui doit redémarrer des services systèmes, qui nécessitent généralement des accès privilégiés pour faire ce genres de tâches.

Dans l'idéal, vous devez évaluer les types de gestionnaires d'événements que vous serez en train de mettre en place et rajouter juste assez de permissions sur le user Shinken afin qu'il puisse exécuter les commandes systèmes nécessaires. Vous devrez peut être utiliser "sudo" pour accomplir cela.

Fonctionnement

Quand est ce que vos commandes sont exécutés ?

Le gestionnaire d'événements propose des fonctionnalités similaires aux notifications mais les événements sont appelés à chaque changement d'état, SOFT ou HARD.  

Ils sont exécutés quand un élément ( hôte, cluster, check ) :

  • est dans un état de problème SOFT ;
  • arrive directement dans un état de problème HARD ;
  • revient d'un état de problème SOFT ou HARD ;

Les états SOFT et HARD sont décrits en détail dans la page Etats "HARD" et "SOFT".

Log sur le déclenchement des gestionnaires 

Vous pouvez activer les logs en utilisant le paramètre log_event_handlers (par défaut, le paramètre est à 1)

log_event_handlers=1

Des lignes de logs seront alors présent dans le fichier de log du Scheduler lors du déclenchement d'un gestionnaire.

[2021-03-17 11:55:14] INFO   : [ scheduler-master ] SERVICE EVENT HANDLER: HOST;Process ntpd;CRITICAL;SOFT;1;restart_ntpd