Installer et configurer le système de supervision Nagios

Auteur : Olivier BOYER - oboyer () ajoute ! org

Mots clés

Nagios, supervision, OpenBSD, ssh

Introduction

Ce document décrit comment mettre en place le système de supervision Nagios sur un système OpenBSD 4.3.

Le produit Nagios utilisé ici est la version 2.10, disponible à l'url : http://www.nagios.org

Présentation de la maquette

La maquette présentée dans se document est assez simple. Elle comprend :

  • un serveur Nagios : smoking.leaves.org
  • une machine à superviser : machine.test.org

Sur la machine à superviser deux services vont être scrutés :

  • le fonctionnement du daemon sshd
  • l'espace disque disponible sur la partirion racine (/)

Le test de fonctionnement du service sshd s'effectue à distance. Le serveur Nagios opérant comme un client standard du service. Par contre, l'analyse de l'espace disque disponible sur la partition racine oblige le serveur Nagios à se connecter sur la machine cliente, à exécuter la commande de diagnostique, et à retourner les informations collectées au serveur Nagios. Pour des raisons de sécurité (authentification et confidentialité) la connexion du serveur Nagios à la machine à superviser se fera via ssh.

Note

Toutes les commandes présentées ici, sont à exécuter, sauf mention contraire, en tant qu'administrateur de la machine.

Pré-requis

Sur la machine serveur Nagios, les pré-requis suivants doivent être validés :

  • Le système OpenBSD doit être installé et fonctionnel
  • Le serveur web livré par défaut avec OpenBSD doit être activé avec le support SSL
  • Le client OpenSSH doit être fonctionnel

Sur la machine à superviser, les pré-requis suivants doivent être validés :

  • Les plugins Nagios doivent être installés dans le répertoire /usr/local/libexec/nagios
  • Le serveur OpenSSH doit être fonctionnel et actif

Installer Nagios sur le serveur

Installer les ports

Les plugins

Dans ce document, le produit Nagios fonctionnera dans un chroot(2), à partir du répertoire /var/www/nagios. Les packages de Nagios livrés par OpenBSD intègrent cette posibilité. Pour installer Nagios dans un chroot(2), exécutez les commandes suivantes :

# export PKG_PATH="ftp://ftp.irisa.fr/pub/OpenBSD/$(uname -r)/packages/i386/"
# pkg_add nagios-plugins-1.4.11
nagios-plugins-1.4.11: complete                                              
--- nagios-plugins-1.4.11 -------------------
The check_dhcp and check_icmp plugins need to run with superuser
privileges. For security reasons they are not installed suid root
by default. If you want to use them, you have to either change
their mode manually or use systrace's privilege elevation feature.

For further details see /usr/local/share/doc/nagios-plugins/README.OpenBSD.

Nagios

# export PKG_PATH="ftp://ftp.irisa.fr/pub/OpenBSD/$(uname -r)/packages/i386/"
# pkg_add nagios-2.10p0-chroot
libltdl-1.5.22p3: complete                                                   
useradd: Warning: home directory `/var/www/nagios' doesn't exist, and -m was not specified
nagios-2.10p0-chroot: complete                                               
--- nagios-2.10p0-chroot -------------------
Sample configuration files and web server configuration can be found in
/usr/local/share/examples/nagios.

Beware that Nagios might or might not work correctly on 64bit machines.

To start nagios automatically, add these lines to /etc/rc.local

if [ -x /usr/local/sbin/nagios ]; then
        install -d -o _nagios /var/run/nagios
        echo -n ' nagios'; /usr/local/sbin/nagios -d /etc/nagios/nagios.cfg
fi

Le frontal web

# export PKG_PATH="ftp://ftp.irisa.fr/pub/OpenBSD/$(uname -r)/packages/i386/"
# pkg_add nagios-web-2.10-chroot
nagios-web-2.10-chroot: complete

Créer un répertoire le pid

Le daemon nagios requière un répertoire particulier pour stocker son fichier de pid. Pour le créer, procédez comme suit :

# mkdir /var/run/nagios
# chown _nagios:_nagios /var/run/nagios
# chmod 750 /var/run/nagios

Configurer le serveur web Apache

Nagios utilise une interface web pour visualiser l'état des machines supervisées. Avant de procéder à la configuration à proprement parler de Nagios il faut commencer par configurer le serveur web pour qu'il prenne en compte les pages et CGI de Nagios.

Fichier /var/www/conf/httpd.conf

Modifiez comme suit le fichier /var/www/conf/httpd.conf

#
## nagios
#
ScriptAlias /cgi-bin/nagios /var/www/cgi-bin/nagios
<Directory "/var/www/cgi-bin/nagios">
        # Enable SSL for nagios cgi engine
        SSLVerifyClient none
        SSLRequireSSL
        Options ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthType Basic
        AuthUserFile /var/www/etc/nagios/htpasswd
        Require valid-user
</Directory>

Alias /nagios /var/www/nagios
<Directory "/var/www/nagios">
        # Enable SSL for nagios engine
        SSLVerifyClient none
        SSLRequireSSL
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthType Basic
        AuthUserFile /var/www/etc/nagios/htpasswd
        Require valid-user
</Directory>

Redémarrer le serveur Apache

Pour prendre en compte les modifications de configuration, il faut redémarrer le serveur Apache. Procédez comme suit :

# apachectl stop
# apachectl start

Créer un utilisateur web dédié

Créez un utilisateur web autorisé à accéder à l'interface web comme suit :

# htpasswd -c /var/www/etc/nagios/htpasswd user
New password:
Re-type new password:
Adding password for user user

Pour ajouter d'autres utilisateurs, exécutez la commande suivante :

# htpasswd /var/www/etc/nagios/htpasswd user2
New password:
Re-type new password:
Adding password for user user2

Premier test

Pour tester votre configuration, logez-vous en tant qu'utilisateur depuis un client du réseau, puis, dans un navigateur graphique (par exemple firefox), saisissez l'url suivante :

https://smoking.leaves.org/nagios

Une fenêtre popup s'ouvre et vous demande de vous authentifier. Saisissez le login user et le mot de passe associé. Vous devez voir apparaître la page de garde de Nagios. Dans le cas contraire, reprenez la configuration présentée dans ce chapitre.

Configurer l'accès SSH

Le système Nagios va scruter l'espace disque disponible sur la machine distante machine.test.org via le plugin check_by_ssh. Il s’agit d’une sur couche de la commande ssh(1). Il faut donc réaliser une configuration spécifique du service OpenSSH sur le client machine.test.org et le serveur.

Le serveur Nagios agit comme un client ssh qui se connecte au daemon sshd de la machine à superviser pour exécuter le plugin. Le serveur nagios fonctionne sur le serveur sous l'identité du pseudo-utilisateur _nagios.

Il faut, sur le serveur nagios, sous l'identité du pseudo-utilisateur _nagios générer une paire de clés, et la copier dans la home de l'utilisateur distant sur la machine à superviser.

Configuration du serveur Nagios

Sous l'identité de l'utilisateur _nagios, générer une paire de clés. Procédez comme suit :

Créez le répertoire personnel de configuration de ssh pour l'utilisateur _nagios :

# mkdir /var/www/nagios/.ssh
# chown _nagios:_nagios /var/www/nagios/.ssh
# chmod 700 /var/www/nagios/.ssh

Modifiez le shell de l'utilisateur _nagios pour pouvoir s'authentifier sous son identité :

# chsh -s /bin/ksh _nagios

Générez les clés pour l'utilisateur _nagios, sous l'identité de l'utilisateur _nagios

# su - _nagios
$ ssh-keygen -t rsa
[...]
$ ssh-keygen -t dsa
[...]
$ exit

Repositionnez le shell du pseudo-utilisateur _nagios :

# chsh -s /sbin/nologin _nagios

Configuration de la machine à superviser

La machine à superviser machine.test.org doit avoir le service sshd actif et autoriser les connexions utilisateurs par clés.

Créer un utilisateur dédié pour le check_by_ssh

Sur la machine à superviser machine.test.org, en tant qu'utilisateur root, exécutez la commande suivante :

# useradd -m -c "Nagios check_by_ssh User" sshcheck
# passwd sshcheck

Remarque : Il faut tout d'abord saisir un mot de passe pour l'utilisateur sshcheck pour que l'on puisse se connecter à la machine machine.test.org et copier les clés. Par la suite, dans le cadre de la supervision via Nagios, il est possible de vérouiller le mot de passe de cet utilisateur, puisque l'authentification s'effectuera par échanges de clés.

Copie des clés sur la machine à superviser

Depuis le serveur Nagios copiez les clés générées sur la machine à superviser. Exécutez la commande suivante :

# cd /var/www/nagios/.ssh
# scp id_dsa.pub id_rsa.pub sshcheck@machine.test.org:~/.ssh

Intégrer les clés

Sur la machine à superviser machine.test.org, en tant qu'utilisateur sshcheck, exécutez les commandes suivantes :

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat id_dsa.pub >> .ssh/authorized_keys
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$
$ rm *.pub
$ exit

Tester l'accès à la machine à superviser

Sur le serveur Nagios, en tant qu'utilisateur _nagios, exécutez les commandes suivantes :

# chsh -s /bin/ksh _nagios
# su - _nagios
$
$ ssh sshcheck@machine.test.org
The authenticity of host 'machine.test.org (www.xxx.yyy.zzz)' can't be established.
RSA key fingerprint is 6b:5a:19:bc:1b:45:27:83:36:11:48:cc:4c:83:ff:b6.
Are you sure you want to continue connecting (yes/no)? yes
[...]

Vous devez être automatiquement logé sur machine.test.org. Dans le cas contraire, regardez le fichier de log sur machine.test.org. Une fois logé, vous pouvez vous déconnecter, l'authentification par échange de clés fonctionne.

Repositionnez le shell du pseudo-utilisateur _nagios :

# chsh -s /sbin/nologin _nagios

Configurer Nagios

Maintenant que l'interface de visualisation de Nagios est configurée sur le serveur, il faut configurer le daemon nagios lui-même.

Tous les fichiers de configuration de Nagios sont installés dans le répertoire /var/www/etc/nagios.

Configurer le fuseau horaire

Pour positionner le bon fuseau horaire, exécutez la commande suivante :

# cp /etc/localtime /var/www/etc

Configurer la résolution de noms

Pour configurer la résolution de noms, exécutez la commande suivante :

# cp /etc/resolv.conf /var/www/etc

Présentation des fichiers de configurations

Fichier Description
nagios.cfgFichier de configuration principal de nagios.
cgi.cfgConfigure les autorisations liées à l’exécution des CGI.
resource.cfgDéfini les différentes macros et variables utilisées dans nagios
checkcommands.cfgDéfini les commandes faisant appel aux modules.
contacts.cfgDéfini des personnes qui recevront les notifications.
contactgroups.cfgRegroupe des contacts par groupe.
dependencies.cfgEtabli des dépendances entre les services.
escalations.cfgDéfini d’éventuelles escalades suite à certaines notifications.
hostextinfo.cfgDéfini des informations externes à nagios pour chaque machine (ex. les logos)
hosts.cfgDéfini les machines à superviser.
hostgroups.cfgRegroupe des machines par groupe.
misccommands.cfgDéfini les commandes qui ne sont pas liés aux modules (ex. les notifications)
services.cfgDéfini les services à surveiller pour chaque machine.
timeperiods.cfgDéfini les plages horaires.

Dans la version 2.x de Nagios, tous les fichiers ce configuration, hormis nagios.cfg, cgi.cfg et resource.cfg sont regroupés dans un seul : minimal.cfg

Attention Après chaque modification d'un fichier de configuration, il faut redémarrer nagios.

Fichier nagios.cfg

Le fichier de configuration principal du daemon nagios est /var/www/etc/nagios/nagios.cfg. La configuration par défaut est plutôt bien faite. Modifiez juste les éléments suivants :

# Activer les commandes via l'interface web
check_external_commands=1

# Desactive les log via syslog
# Log dans le fichier NetAlarm
use_syslog=0

# Affiche les dates au format europeen
date_format=euro

Fichier cgi.cfg

Le paramétrage de l’exécution des CGI ainsi que les permissions liées aux scripts CGI s’effectue dans le fichier de configuration /var/www/etc/nagios/cgi.cfg.

Le fichier de configuration final doit être semblable à celui ci-dessous :

# egrep -v '^#|^ |^$' /var/www/etc/nagios/cgi.cfg    
main_config_file=/etc/nagios/nagios.cfg
physical_html_path=/nagios
url_html_path=/nagios
show_context_help=0
nagios_check_command=/usr/local/libexec/nagios/check_nagios /var/nagios/status.dat 5 '/usr/local/bin/nagios'
use_authentication=1
authorized_for_system_information=user
authorized_for_configuration_information=user
authorized_for_system_commands=user
authorized_for_all_services=user
authorized_for_all_hosts=user
authorized_for_all_service_commands=user
authorized_for_all_host_commands=user
default_statusmap_layout=5
default_statuswrl_layout=4
ping_syntax=/sbin/ping -n -c 5 $HOSTADDRESS$
refresh_rate=90

ATTENTION :
A chaque création d’un nouvel utilisateur web dans la base /var/www/etc/nagios/htpasswd, il faut ajouter cet utilisateur au fichier cgi.cfg, dans les sections authorized_for_*. Les utilisateurs sont séparés par des virgules.

Par exemple :

authorized_for_system_information=user,user2
authorized_for_configuration_information=user,user2
authorized_for_system_commands=user,user2
authorized_for_all_services=user,user2
authorized_for_all_hosts=user,user2
authorized_for_all_service_commands=user,user2
authorized_for_all_host_commands=user,user2

Fichier minimal.cfg

Ce fichier est la concaténation des différents fichiers de configuration de Nagios présents dans les versions 1.x.

Section COMMANDS

Cette section définie les aliases utilisés dans les services pour tester les machines (ou groupes de machines) supervisées.

Dans cette maquette, deux services vont être testés sur la machine distante :

  • le serveur sshd, via le plugin check_ssh installé sur le serveur Nagios.
  • un espace disque disponible, via le plugin check_disk installé sur la machine distante. Pour accéder à ce plugin, nous utilisons le plugin check_by_ssh installé sur le serveur Nagios.

Pour définir ces deux services, ajoutez les lignes suivantes dans la section COMMANDS du fichier minimal.cfg :

# Command to check sshd daemon
define command{
        command_name        check_sshd
        command_line        $USER1$/check_ssh $HOSTADDRESS$
        }

# Command to check by ssh disk usage
define command{
        command_name        ssh_check_disk
        command_line        $USER1$/check_by_ssh -H $HOSTADDRESS$ -l $ARG1$ -C "$USER1$/check_disk
-w $ARG2$ -c $ARG3$ -p $ARG4$"
        }

Section HOSTS

La section HOSTS définie les machines à superviser via Nagios.

Déclarez comme suit la machine à superviser : machine.test.org

# machine.test.org
define host{
        use                     generic-host        ; Name of host template to use
        host_name               machine.test.org
        alias                   machine.test.org
        address                 machine.test.org
        check_command           check-host-alive
        max_check_attempts      10
        notification_interval   120
        notification_period     24x7
        notification_options    d,r
        contact_groups          _nagios-admins
        }

Section SERVICES

La section SERVICES décrit :

  • la machine (ou groupe de machines) visée,
  • le service à tester sur cette marchine (ou ce groupe de machines),
  • l'alias de la commande à utiliser,
  • la période de test.

Pour faciliter la déclaration des services, il est plus simple de regrouper les définitions semblables dans un template, et d'utiliser ce nouveau template pour décrire ensuite les services.

Les lignes suivantes définissent un nouveau template host-svc et associent les services à tester à la machine machine.test.org :

## Template for services on host
define service{
        name                            host-svc         ; template name
        use                             generic-service  ; template to use
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              4
        normal_check_interval           15
        retry_check_interval            1
        contact_groups                  _nagios-admins
        notification_options            w,u,c,r
        notification_interval           960
        notification_period             24x7
        register                        0       ; DONT REGISTER THIS DEFINITION -
ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }

define service{
        use                             host-svc ; template to use
        host_name                       machine.test.org
        service_description             SSHD Service
        check_command                   check_sshd
        }

define service{
        use                             host-svc ; template to use
        host_name                       machine.test.org
        service_description             Root Partition
        check_command                   ssh_check_disk!sshcheck!20%!10%!/
        }

Tester la configuration de Nagios

Pour tester d'éventuelles erreurs dans la configuration de Nagios, procédez comme suit :

# nagios -v /var/www/etc/nagios/nagios.cfg
[...]
Total Warnings: 0
Total Errors:   0

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

Le résultat du test ne doit indiquer aucune erreur. Faites attention aux warning.

Dernières configurations

Démarrer automatiquement Nagios

Une fois que vous avez testé la configuration de nagios vous pouvez le démarrer. Pour que nagios soit activé automatiquement au démarrage de la machine, ajoutez les lignes suivantes au fichier /etc/rc.local :

# Start nagios (monitoring hosts & services daemon)
if [ -x /usr/local/sbin/nagios ]; then
   echo -n ' nagios';
   /usr/local/sbin/nagios -d /var/www/etc/nagios/nagios.cfg
fi

Suivre l'évolution des fichiers de configuration

Pour suivre automatiquement l'évolution des fichiers de configuration de Nagios, ajouter les lignes suivantes au fichier /etc/changelist :

/var/www/etc/nagios/htpasswd
/var/www/etc/nagios/cgi.cfg
/var/www/etc/nagios/minimal.cfg
/var/www/etc/nagios/nagios.cfg
/var/www/etc/nagios/resource.cfg

Liens

 
doc/openbsd/nagios.txt · Dernière modification: 2009/12/23 22:36 (édition externe)     Haut de page