Event Handlers

Ateliers de travail autour des possibilités des Event Handlers de Nagios

Pour tous ces ateliers, une commande au niveau des paramètres global_host_event_handler et global_host_event_handler doivent être activés dans nagios.cfg si l’on souhaite avoir les global_event_handlers, ces actions exécutées systématiquement pour tout changement d’états sur les hôtes et les services.

global_host_event_handler=submit_incident
global_service_event_handler=submit_incident

Ensuite, il faut activer le paramètre xxx dans le fichier de définition d’hôte ou de service

event_handler_enabled           1

Ces Event Handlers sont déclenchés pour un hôte ou service dans les cas suivants :

  • Au passage en problème état SOFT
  • Au passage en état HARD
  • A la sortie d’un état SOFT ou HARD

Création d'incidents dans DokuWiki

L’idée est de créer un historique de tous les incidents hard et soft à l’extérieur de Nagios. Cette idée a été mise en œuvre dans un esprit assez similaire avec blosxom4nagios et Wordpress4nagios.

Histoire d’avoir une page par service dans le wiki qui pointe vers les pages incidents organisées par an/mois/jour soit une page par jour par service par hôte (si incident).

Au premier incident de la journée, une page sera crée si et une ligne de tableau sera ajoutée à chaque incident suivant nous donnant le tableau suivant :

Incidents du 03/03/2008
Heure Status State # Attempts Information Check Command
16:07:41 CRITICAL SOFT 3 PROCS CRITICAL: 0 processes with args bin/sec check_nrpe!check_sec
16:08:41 CRITICAL SOFT 4 PROCS CRITICAL: 0 processes with args bin/sec check_nrpe!check_sec
16:09:41 OK SOFT 5 PROCS OK: 1 process with args bin/sec check_nrpe!check_sec

Configuration de Nagios

Comme d’habitude, il convient de créer une nouvelle commande qui pointe sur un script valide et exécutable par l’utilisateur Nagios

# 'submit_incident' command definition
define command{
        command_name    submit_incident
        command_line    $USER1$/event-test "$SERVICESTATE$" "$SERVICESTATETYPE$" "$SERVICEATTEMPT$" "$SERVICEDESC$" "$HOSTNAME$" "$SERVICEOUTPUT$"\
                        "$LONGSERVICEOUTPUT$" "$SERVICECHECKCOMMAND$"
        }

Le contenu de submit_incident

#!/bin/bash
 
SERVICESTATE=$1
SERVICESTATETYPE=$2
SERVICEATTEMPT=$3
SERVICEDESC=$(echo $4 | tr [:upper:] [:lower:])
HOSTNAME=$(echo $5 | tr [:upper:] [:lower:])
SERVICEOUTPUT=$6
LONGSERVICEOUTPUT=$7
SERVICECHECKCOMMAND=$8
 
YEAR=`date +%Y` # the current year
MONTH=`date +%m` # the current numeric month
DAY=`date +%d` # the current day
HOUR=`date +%H` # the current hour
MINUTE=`date +%M` # the current minute
SECOND=`date +%S` # the current second
 
WIKI_ROOT=/usr/local/dokuwiki/data/pages
 
if [ ! -d $WIKI_ROOT/$HOSTNAME/$SERVICEDESC/$YEAR/$MONTH/ ]
then
        mkdir -p $WIKI_ROOT/$HOSTNAME/$SERVICEDESC/$YEAR/$MONTH/
fi
 
if [ ! -f $WIKI_ROOT/$HOSTNAME/$SERVICEDESC/$YEAR/$MONTH/$DAY.txt ]
then
        echo "====== Incidents du $DAY/$MONTH/$YEAR ======" >> $WIKI_ROOT/$HOSTNAME/$SERVICEDESC/$YEAR/$MONTH/$DAY.txt
        echo "^ Heure      ^ Status       ^ State       ^ # Attempts       ^ Information       ^ Check Command          ^" >> $WIKI_ROOT/$HOSTNAME/$SERVICEDESC/$YEAR/$MONTH/$DAY.txt
fi
 
echo "| $HOUR:$MINUTE:$SECOND | $SERVICESTATE | $SERVICESTATETYPE | $SERVICEATTEMPT | $SERVICEOUTPUT $LONGSERVICEOUTPUT | $SERVICECHECKCOMMAND |" >> $WIKI_ROOT/$HOSTNAME/$SERVICEDESC/$YEAR/$MONTH/$DAY.txt
 
exit 0
nagios/event_handlers.txt · Dernière modification: 02/03/2017 16:41 (modification externe)
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0