Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Make by tools (01.00.01) - action=same_as_next_version
Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue
Panel
titleSommaire

Table of Contents
stylenone

Introduction

Le gestionnaire d'événement ( event handlers ) permet d'exécuter une commande( scripts ou exécutables ) qui sera lancée dès qu'un hôte ou un check changent d'étatde statut.   

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

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.
  • ...

C'est le démon Scheduler qui choisir quand la commande va être lancée et le démon Reactionner va exécuter la commande.

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. ( Voir la page 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 gestionnaires d'événement.

Code Block
languagejs
themeConfluence
enable_event_handlers=0

Activation des logs

Vous pouvez activer les logs en utilisant le paramètre log_event_handlers ( par défaut, le paramètre activé ) qui seront consultable dans les logs du Scheduler.

Code Block
languagetext
themeEmacs
title/etc/shinken/shinken.cfg
enablelog_event_handlers=01

Paramétrage du mécanisme

Activer le lancement de la commande du gestionnaire d'événement lors d'un changement de statut en état "HARD"


Par défaut, lorsqulorsque le statut d'un élément en état "HARD"est confirmé ( HARD ), la commande du gestionnaire d'événement ne sera pas lancée même si le statut change pour un des statuts suivants ( ATTENTION, CRITIQUE, INCONNU ).

  • Voir le chapitre "Quand est-ce que vos commandes sont exécutées ?" ci-dessous pour plus de détail sur le fonctionnement.
  • Ce comportement peut être surchargé ( activés ou désactivés ) globalement pour activer systématiquement la commande du gestionnaire d'évènement en utilisant le paramètre :
    • "event_handler__hard_state__trigger_on_any_status_change" dans le fichier de configuration /etc/shinken-user/configuration/daemons/arbiters/arbiter_cfg_overload.cfg
.
Donc lorsqu'un élément en état "HARD" :
    • .


Code Block
languagejs
themeConfluence
#==================================================================================
#======== Monitoring and scheduling =========

                                                        #  Activate this option to allow Event Handler to execute command on any status change, in addition to its normal behavior.
                                                        #   0 : Disable (Default)
                                                        #   1 : Enable
event_handler__hard_state__trigger_on_any_status_change=0
  • Si ce paramètre a pour valeur "0" ( Désactivé ), la commande du gestionnaire d'événement ne sera pas lancée même si le statut change pour un des statuts suivants ( ATTENTION, CRITIQUE, INCONNU ).
  • Si ce paramètre a pour valeur "1" ( Activé ), la commande du gestionnaire d'événement sera lancée si le statut change à chaque changement de statut pour un des statuts suivants ( ATTENTION, CRITIQUE, INCONNU ).

    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 le champ Gestionnaire d'événements activé ( clé d'import : event_handler ) dans l'onglet expert de la page d'édition de vos hôtes, clusters et checks. ( Voir les pages Editer un Hôte, Editer un Cluster et Editer un check ).
      • 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 faite spécifiquement.

    À noter que si le paramètre global est à "désactivé", le paramétrage local n’aura aucun effet.

    Écrire 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. ( Voir la page Les 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$


    Tip

    Référez-vous à la page dédiée aux notations LES VARIABLES Les Variables ( Remplacement dynamique de contenu - Anciennement les MACROS Macros ) 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ème, qui nécessitent généralement des accès privilégiés pour faire ce genre 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 l'utilisateur 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ées ?

    La commande lancée par le gestionnaire d'événements sera exécutée :

    si le statut de

    1 )  Lorsque l'élément

    n'

    est

    pas

    en état non confirmé ( SOFT )

    , à chaque réception de statut, lorsque

    :

      • La commande du gestionnaire d'événement sera lancée à la réception de chaque vérification d'état ( Quel que soit le statut ).

    2 )  Lorsque le statut de l'élément devient confirmé ( HARD ),

    quel que soit

    peu importe son statut,

    en suite, dans l'état

     

    3 )  Lorsque le statut de l'élément est confirmé ( HARD ) :

      • Par défaut, la commande du gestionnaire d'événement ne sera pas
    • , la commande ne sera plus
      • lancée même si le statut change pour un des statuts suivants ( ATTENTION, CRITIQUE, INCONNU )
    • ,
    • lorsque le statut de l'élément passe en OK

    Par exemple : 

      • .
      • Ce comportement peut être surchargé ( activés ou désactivés ) globalement en utilisant
    Lorsque :
        • , la commande du gestionnaire d'événement
          • sera lancée si le statut de l'élément change de OK vers ATTENTION, CRITIQUE, INCONNU
          • sera lancée
      La commande sera exécutée
          • si le statut de l'élément
    • passe
          • change de ATTENTION
    • - HARD
          • , CRITIQUE, INCONNU vers OK
          • NE sera PAS lancée
    • en OK. Mais, la commande ne sera pas exécutée
          • si le statut de l'élément
    • passe de ATTENTION - HARD en CRITIQUE - HARD.
    Lorsque le paramètre "event_handler__hard_state__trigger_on_any_status_change"
          • change de ATTENTION, CRITIQUE, INCONNU versATTENTION, CRITIQUE, INCONNU.
        • Si ce paramètre a pour valeur "1" ( Activé )
    :
    • La commande sera exécutée si le statut de l'élément passe de ATTENTION - HARD en OK.
    • Et
        • , la commande
    • sera exécutée si le statut de l'élément passe de ATTENTION - HARD en CRITIQUE - HARD.
        • du gestionnaire d'événement sera lancée pour N'IMPORTE QUEL CHANGEMENT de statut.


    Vous trouverez des explications supplémentaires dans ( voir la page Statut confirmé ( HARD ) et non confirmé ( SOFT ) )

    Log sur le déclenchement des commandes 

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

    Code Block
    languagetext
    themeEmacs
    title/etc/shinken/shinken.cfg
    log_event_handlers=1

    Des lignes de logs seront alors présentes dans le fichier de log du Scheduler lors du déclenchement de la commande

    .

    , si les log ont été activées ( voir le chapitre "Activation des logs" plus haut )

    Code Block
    languagetext
    themeEmacs
    [2021-03-17 11:55:14] INFO   : [ scheduler-master ] SERVICE EVENT HANDLER: HOST;Process ntpd;CRITICAL;SOFT;1;manage_ntpd
    ...
    [2021-03-17 11:56:13] INFO   : [ scheduler-master ] SERVICE EVENT HANDLER: HOST;Process ntpd;OK;SOFT;2;manage_ntpd
    • HOST = Nom de l'hôte
    • Process ntpd = Nom du check dont la commande de gestion d'événement va être lancé.
    • CRITICAL/OK = Statut du check.
    • SOFT = État du checkStatut confirmé ( SOFT ) / Statut non confirmé ( HARD ).
    • 1/2 = Nombre de tentatives.
    • restart_ntpd = Nom de la commande qui est exécuté