Nagios: Surveillance de serveurs Debian

Hello,

Suite à l’article précédent sur Nagios Nagios: Installation d’un outil de monitoring sur FreeBSD, nous avons mis en place un outil de surveillance réseau qui prend en charge déjà le serveur Nagios lui même. En naviguant dans Hosts et Services, nous pouvons voir l’état du serveur et des services surveillés.

http://tinoob.free.fr/images/nagios/nagios_03.png http://tinoob.free.fr/images/nagios/nagios_04.png


Serveurs et services distants

Le monitoring de postes distants se fait à l’aide d’un module supplémentaire. Ce module, appelé nrpe, n’est pas installé avec Nagios. Il est nécessaire de l’installer sur le serveur Nagios.

Note : Si vous avez dèjà installé le module nrpe sur votre serveur Nagios, vous devez sauter cette étape.


Nrpe sur le serveur Nagios

On se rend dans le dossier d’installation et on lance la commande d’install.
Note: Lors de l’installation, on active le support des « command argument ».

# cd /usr/ports/net-mgmt/nrpe2
# make install clean
[X] ARGS  Enable command argument processing **Security Risk**

On ajoute dans le fichier commands.cfg, après le check_nt, l’objet commande pour les requetes nrpe :

# ee /usr/local/etc/nagios/objects/commands.cfg
# 'check_nt' command definition
define command{
        command_name    check_nt
        command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
        }


# 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe2 -H $HOSTADDRESS$ -n -u -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$ $ARG5$ $ARG6$
        }


Parametrage des serveurs Debian

On créé un groupe et un utilisateur nagios pour nrpe:

# groupadd nagios
# useradd -g nagios nagios

On install nrpe depuis les sources :

# cd /usr/src
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
# tar xzf nrpe-2.12.tar.gz
# cd nrpe-2.12/
# ./configure --disable-ssl --enable-command-args
# make all
# make install
# make install-daemon-config

Note : Si jamais vous avez le message d’erreur ci dessous, il faut installer le paquet build-essential (aptitude install build-essential).

# ./configure --disable-ssl --enable-command-args
checking for a BSD-compatible install... /usr/bin/install -c
checking build system type... i686-pc-linux-gnuoldld
checking host system type... i686-pc-linux-gnuoldld
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.

On met en place le script de démarrage de nrpe :

# cp -a init-script.debian /etc/init.d/nrpe
# chmod a+x /etc/init.d/nrpe
# update-rc.d nrpe defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'nrpe' missing LSB tags and overrides

On met en place les tags LSB:

# nano /etc/init.d/nrpe
#!/bin/sh
# Start/stop the nrpe daemon.
#
# Contributed by Andrew Ryder 06-22-02
# Slight mods by Ethan Galstad 07-09-02
### BEGIN INIT INFO
# Provides:             nrpe
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:   The NRPE daemon
### END INIT INFO
…

On relance la commande update-rc pour vérifier que les tags bien pris en compte :

# update-rc.d nrpe defaults
update-rc.d: using dependency based boot sequencing

On modifie le fichier de configuration de nrpe pour y mettre l’adresse ip du serveur nagios et autoriser les command args.

# nano /usr/local/nagios/etc/nrpe.cfg
…
allowed_hosts=127.0.0.1,AdresseIpServeurNagios
…
dont_blame_nrpe=1
…

Le serveur nrpe repose sur les plugins nagios, on install donc ces derniers depuis les sources :

# cd /usr/src
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
# tar xzf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15/
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install

On démarre le serveur nrpe :

# /etc/init.d/nrpe start

On vérifie qu’il tourne bien :

# netstat -ntlp | grep nrpe
tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN      25017/nrpe

On vérifie depuis le serveur nagios qu’on peut interroger le poste distant :

# /usr/local/libexec/nagios/check_nrpe2 -H AdresseIpClientDebian
NRPE v2.12


Intégration dans Nagios

On créé un dossier qui contiendra la config de toutes les machines de types Linux et on ajoute ce dossier dans Nagios :

# mkdir /usr/local/etc/nagios/serveurs_linux
# ee /usr/local/etc/nagios/nagios.cfg
…
#cfg_dir=/usr/local/etc/nagios/routers
cfg_dir=/usr/local/etc/nagios/serveurs_linux
…

On créé un nouveau template nommé linux-server :

# ee /usr/local/etc/nagios/objects/templates.cfg
# FreeBSD host definition template - This is NOT a real host, just a template!

define host{
        name                            freebsd-server  ; The name of this host template
        use                             generic-host    ; This template inherits other values from the generic-host template
        check_period                    24x7            ; By default, FreeBSD hosts are checked round the clock
        check_interval                  5               ; Actively check the host every 5 minutes
        retry_interval                  1               ; Schedule host check retries at 1 minute intervals
        max_check_attempts              10              ; Check each FreeBSD host 10 times (max)
        check_command                   check-host-alive ; Default command to check FreeBSD hosts
        notification_period             workhours       ; FreeBSD admins hate to be woken up, so we only notify during the day
                                                        ; Note that the notification_period variable is being overridden from
                                                        ; the value that is inherited from the generic-host template!
        notification_interval           120             ; Resend notifications every 2 hours
        notification_options            d,u,r           ; Only send notifications for specific host states
        contact_groups                  admins          ; Notifications get sent to the admins by default
        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }


# Linux host definition template - This is NOT a real host, just a template!

define host{
        name                            linux-server  ; The name of this host template
        use                             generic-host    ; This template inherits other values from the generic-host template
        check_period                    24x7            ; By default, Linux hosts are checked round the clock
        check_interval                  5               ; Actively check the host every 5 minutes
        retry_interval                  1               ; Schedule host check retries at 1 minute intervals
        max_check_attempts              10              ; Check each Linux host 10 times (max)
        check_command                   check-host-alive ; Default command to check Linux hosts
        notification_period             workhours       ; Linux admins hate to be woken up, so we only notify during the day
                                                        ; Note that the notification_period variable is being overridden from
                                                        ; the value that is inherited from the generic-host template!
        notification_interval           120             ; Resend notifications every 2 hours
        notification_options            d,u,r           ; Only send notifications for specific host states
        contact_groups                  admins          ; Notifications get sent to the admins by default
        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }

On créé un nouvel hôte nommé debiantest dans le dossier serveurs-linux. Toutes les commandes directement liée à la machine se font avec nrpe. On oubli pas de mettre ce serveur dans le groupe linux-servers. Le fichier simple correspondant a cette machine est ci dessous.

# ee /usr/local/etc/nagios/serveurs_linux/debiantest.cfg
###############################################################################
###############################################################################
#
# HOST DEFINITION
#
###############################################################################
###############################################################################

# Define a host for the local machine

define host{
        use                     linux-server          ; Name of host template to use
                                                        ; This host definition will inherit all variables that are defined
                                                        ; in (or inherited by) the linux-server host template definition.
        host_name               debiantest
        alias                   Test Debian
        address                 adresseIPServeurDebian
        hostgroups              linux-servers
        }


 ###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################


# Define a service to "ping" the local machine

define service{
        use                             local-service         ; Name of service template to use
        host_name                       debiantest
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }


# Define a service to check the number of currently logged in
# users on the local machine.  Warning if > 20 users, critical
# if > 50 users.

define service{
        use                             local-service         ; Name of service template to use
        host_name                       debiantest
        service_description             Current Users
        check_command                   check_nrpe!check_users!20!50
        }


# Define a service to check the load on the local machine.

define service{
        use                             local-service         ; Name of service template to use
        host_name                       debiantest
        service_description             Current Load
        check_command                   check_nrpe!check_load!5.0,4.0,3.0!10.0,6.0,4.0
        }

Note : Il ne s’agit que d’un fichier de démonstration. Vous pouvez ajouter autant de services que vous le souhait voulez.

On créé un groupe pour les serveurs linux :

# ee /usr/local/etc/nagios/serveurs_linux/hostgroup_linux.cfg
###############################################################################
###############################################################################
#
# HOST GROUP DEFINITION
#
###############################################################################
###############################################################################

# Define an optional hostgroup for Linux machines

define hostgroup{
        hostgroup_name  linux-servers ; The name of the hostgroup
        alias           Linux Servers ; Long name of the group
        }

On vérifie qu’il n’y a pas d’erreurs dans la configuration :

# /usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg 
Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

On redémarre Nagios pour prendre en compte les modifications :

# service nagios restart
Performing sanity check of nagios configuration: OK
Stopping nagios.
Performing sanity check of nagios configuration: OK
Starting nagios.

Et on va vérifier sur l’interface web de Nagios que le nouvel hôte est présent. En passant par Hosts, Services et Host Groups, on s’assure que tout est correct.

http://tinoob.free.fr/images/nagios/nagios_08.png http://tinoob.free.fr/images/nagios/nagios_09.png http://tinoob.free.fr/images/nagios/nagios_10.png

A très bientot pour d’autres articles sortis tout droits de mes cartons.

Laisser un commentaire

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


− trois = 3

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>