Générer automatiquement les fichiers de configuration de Nagios

Les fichiers de configurations de Nagios (version 2.0) sont assez fastidieux à remplir si l’on doit y ajouter fréquement des nouvelles machines. Voici deux scripts que j’utilise pour m’éviter la saisie à la main de toutes les nouvelles bornes wifi…

PS : Je répertorie ces bornes dans le fichier bornes.wifi suivant :


bornesA: maborneA1
bornesA: maborneA2
bornesA: maborneA3
bornesB: maborneB1
bornesC: maborneC1
...

Scripts config-hosts-wifi-nagios.pl pour la génération du fichier hosts.cfg :


#!/usr/bin/perl
# Ce script permet d'eviter la saisie fastidieuse du fichier de configuration nagios : hosts.cfg
#
# Il permet d'ajouter toutes les bornes wifi dans nagios
#
# Exemple d'emploi: ./config-hosts-wifi-nagios.pl > /usr/local/nagios/etc/hosts-wifi.cfg
# Dans nagios.cfg, il faut indiquer :
# cfg_file=/usr/local/nagios/etc/hosts-wifi.cfg
$f1 = "/home/wifi/bornes.wifi";
open (IN,$f1) || die "impossible d'ouvrir le fichier $f1 n";

while () {
        chop;
        $ligne=$_;
        ($site,$borne)= split(/ /,$ligne);
        $ip= `nslookup $borne | tail -n 2 | sed '/^[[:space:]]*$/d' | sed 's/Address: //g'`;
        print STDOUT  "

define host{
        use                     generic-host            ; Name of host template to use
        host_name               $borne
        alias                   $borne
        address                 $ip        check_command           check-host-alive
        max_check_attempts      10
        notification_interval   120
        notification_period     24x7
        notification_options    d,r
        contact_groups  admins
        }"
;
}

Exemple d’utilisation :


perceval:~# perl /usr/local/scripts/config-hosts-wifi-nagios.pl > /usr/local/nagios/etc/hosts-wifi.cfg

Scripts config-hostgroups-wifi-nagios.sh pour la génération du fichier hostgroups.cfg :


#!/bin/sh
# Ce script permet d'eviter la saisie fastidieuse du fichier de configuration nagios : hostgroups.cfg
#
# Il permet d'ajouter toutes les bornes wifi dans le hostgroup "wifi-ap"
#
# Exemple d'emploi: ./config-hostgroups-wifi-nagios.sh > /usr/local/nagios/etc/hostgroups-wifi.cfg
# Dans nagios.cfg, il faut indiquer :
# cfg_file=/usr/local/nagios/etc/hostgroups-wifi.cfg

fichier2conf=/home/wifi/bornes.wifi
ligne=`cat $fichier2conf | cut -d' ' -f2 | tr 'n' ','`;
echo "define hostgroup{"
echo "   hostgroup_name wifi-ap"
echo "   alias Points d'acces WIFI"
echo "   members $ligne"
echo "}"
echo

Exemple d’utilisation :


perceval:~# sh /usr/local/scripts/config-hostgroups-wifi-nagios.sh > /usr/local/nagios/etc/hostgroups-wifi.cfg

Avant de relancer Nagios, il faut s’assurer que les fichiers de configuration que l’on a générés aient été inlus dans le fichier de configuration général nagios.cfg :


cfg_file=/usr/local/nagios/etc/hosts-wifi.cfg
cfg_file=/usr/local/nagios/etc/hostgroups-wifi.cfg

Ultime vérification de la configuration de Nagios :


perceval:~# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cf

Si c’est OK, on peut relancer Nagios :


perceval:~# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cf

2 thoughts on “Générer automatiquement les fichiers de configuration de Nagios”

  1. Salut l’ami, je sais que ton poste est ancien mais j’aimerais te relancer, je suis très mauvais en programmation, je ne comprend pas du tout ton script.

    Ce que j’aimerais, c’est un script qui, déployer sur le réseau, puisse détecter toutes les machines et à chacune son IP, et remplir le fichier de configuration, par exemple hosts.cfg dans /etc/nagios3/conf.d/

    Uniquement cela, pour les services c’est pas méchant, étant minutieux, il ne faut pas un script pour les services. Mieux vaut les faire un par un.

    Voilà j’espère que tu y répondras.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.