Outils personnels
Vous êtes ici : Accueil GNU / Linux Ubuntu Dapper Drake Développement et serveurs Nagios 2.6 sur Ubuntu Dapper Drake
Actions sur le document
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Nagios 2.6 sur Ubuntu Dapper Drake

Par admin - Dernière modification 23/05/2007 10:58

Nagios est un logiciel surveillant en permanence l'état de vos serveur, et pouvant vous prévenir si l'un d'entre eux tombe. Il est indispensable à tout administrateur réseau d'avoir ce type de mécanisme en place pour assurer le bon fonctionnement de son réseau.

Contrairement à mon habitude, et à ma politique, nous n'installerons pas Nagios à l'aide de paquet Debian. La principale raison à cela est que les paquets fournis par Ubuntu et / ou Debian ne sont plus maintenus. N'ayant moi-même pas le temps de faire mes propres paquets, je vais me contenter d'installer Nagios depuis les sources. Un conseil toutefois, si vous ne souhaitez pas abîmer votre système, installez Nagios dans un chroot. Vous pouvez si vous le souhaitez suivre mon tutoriel sur la création d'un chroot pour ce faire.

Installation

Nous installons maintenant les paquets nécessaires à la compilation de Nagios.

sudo apt-get install wget build-essential traceroute libltdl3-dev libgd2-xpm-dev \
libssl-dev libgnutls-dev libbind-dev libpq-dev libkrb5-dev \
g77 libradius1-dev libldap2-dev libmysqlclient15-dev \
dnsutils smbclient turqstat snmp openssh-client fping \
qstat libsnmp-perl libsnmp-session-perl libnet-snmp-perl

Nous téléchargeons les sources de Nagios :

mkdir ~/NAGIOS
wget --output-document=$HOME/NAGIOS/nagios-2.6.tar.gz http://mesh.dl.sourceforge.net/sourceforge/nagios/nagios-2.6.tar.gz
tar --directory ~/NAGIOS -xzf ~/NAGIOS/nagios-2.6.tar.gz

Nous pouvons maintenant commencer la compilation de Nagios.

cd ~/NAGIOS/nagios-2.6
./configure --prefix=/usr/share/nagios --with-lockfile=/var/lock/nagios.lock \
  --bindir=/usr/bin --sbindir=/usr/share/nagios/cgi-bin --sysconfdir=/etc/nagios \
--localstatedir=/var/lib/nagios --datadir=/usr/share/nagios/html
make all
sudo adduser --system --home /usr/share/nagios --no-create-home --group nagios
sudo make install
sudo make install-config
sudo make install-init
sudo mkdir /var/log/nagios
sudo chown nagios:nagios /var/log/nagios

Nous devons maintenant télécharger les plugins de surveillance de nagios et les installer :

wget --output-document=$HOME/NAGIOS/nagios-plugins-1.4.5.tar.gz http://puzzle.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.5.tar.gz
sudo mkdir /usr/share/nagios/libexec
tar --directory ~/NAGIOS -xzf ~/NAGIOS/nagios-plugins-1.4.5.tar.gz

Nous pouvons maintenant compiler et installer les plugins :

cd ~/NAGIOS/nagios-plugins-1.4.5
./configure --prefix=/usr/share/nagios
make
sudo make install

Il vous reste à configurer Apache 2 façon à pouvoir accéder à l'interface Web. Vous pouvez vous inspirer du fichier nagios-apache2.conf pour votre propre configuration :

sudo wget --output-document=/etc/apache2/sites-available/nagios http://howto.landure.fr/gnu-linux/ubuntu-dapper-drake/logiciels/nagios-2.6/nagios-apache2.conf
sudo ln -s ../sites-available/nagios /etc/apache2/sites-enabled/100-nagios

Enfin, nous configurons le mot de passe d'accès à l'interface Web de l'administrateur par défaut de Nagios :

sudo htpasswd -c /etc/nagios/htpasswd.users nagios-admin

Configuration initiale

L'installation de Nagios est simple. Sa configuration l'est beaucoup moins ! Mais que cela ne vous rebute pas, car Nagios est un outil très flexible.

Architecture des fichiers de configuration

L'architecture des fichiers de configuration d'exemple fourni par l'installation de Nagios est simple, voire trop simple lorsque vous devez gérer plusieurs services sur plusieurs serveurs. Nous allons donc réorganiser les fichiers de configuration afin qu'il soit plus simple de faire évoluer votre configuration. Pour ce faire, je me suis grandement inspiré de l'architecture de la configuration d'Apache 2. En premier lieu, nous allons créer des dossiers correspondant aux différentes sections de la configuration de Nagios. A chaque section correspond 2 dossier:

  • Le dossier section-available contient les fichiers de configuration disponible pour une intégration dans notre configuration de travail.
  • Le dossier section-enabled contient des liens symboliques vers les fichiers du dossier section-available que nous souhaitons ajouter à notre configuration. Dans l'idéal, ces liens symboliques sont numérotés afin que nous puissions contrôler l'ordre dans lequel ils apparaissent dans la configuration de Nagios.

Nous allons donc créer les dossiers suivants :

  • Pour la configuration des commandes de vérification : commands-available et commands-enabled
  • Pour la configuration des périodes de notification : timeperiods-available et timeperiods-enabled
  • Pour la configuration des utilisateurs à contacter si un problème apparaît : contacts-available et contacts-enabled
  • Pour la configuration des groupes d'utilisateurs : contacts-groups-available et contacts-groups-enabled
  • Pour la configuration des modèles de serveurs : hosts-templates-available et hosts-templates-enabled
  • Pour la configuration des modèles de services : services-available et services-enabled
  • Pour la configuration des serveurs à surveiller : hosts-available et hosts-enabled
  • Pour la configuration des groupes de serveurs : hosts-groups-available et hosts-groups-enabled
  • Pour la configuration des groupes de services : services-groups-available et services-groups-enabled

Pour vous simplifier la tâche, j'ai préparé une archive contenant l'ensemble de ces dossiers avec une configuration minimale dans chaque. Pour installer les dossiers, exécutez les commandes :

wget --output-document=$HOME/NAGIOS/nagios-splitted-config.tar.gz http://howto.landure.fr/gnu-linux/ubuntu-dapper-drake/logiciels/nagios-2.6/nagios-splitted-config.tar.gz
sudo tar --directory /etc -xzf ~/NAGIOS/nagios-splitted-config.tar.gz

Le fichier de configuration principal : nagios.cfg

Commençons par faire une copie de travail du fichier d'exemple :

sudo cp /etc/nagios/nagios.cfg-sample /etc/nagios/nagios.cfg
sudo gvim /etc/nagios/nagios.cfg

La première modification à effectuer dans ce fichier est l'emplacement des fichiers de log. Remplacez les lignes :

log_file=/var/lib/nagios/nagios.log
log_archive_path=/var/lib/nagios/archives

par :

log_file=/var/log/nagios/nagios.log
log_archive_path=/var/log/nagios/archives

Nous modifions ensuite le format des dates, en remplaçant :

date_format=us

par :

date_format=euro

Enfin, nous devons faire en sorte que les dossiers de configuration que nous avons créé ci-avant soient pris en compte. Pour ce faire, commentez les lignes :

cfg_file=/etc/nagios/commands.cfg
cfg_file=/etc/nagios/localhost.cfg

et ajoutez les lignes suivantes sous les lignes que vous venez de commenter :

cfg_dir=/etc/nagios/commands-enabled
cfg_dir=/etc/nagios/timeperiods-enabled
cfg_dir=/etc/nagios/contacts-enabled
cfg_dir=/etc/nagios/contacts-groups-enabled
cfg_dir=/etc/nagios/services-enabled
cfg_dir=/etc/nagios/hosts-templates-enabled
cfg_dir=/etc/nagios/hosts-enabled
cfg_dir=/etc/nagios/hosts-groups-enabled
cfg_dir=/etc/nagios/services-groups-enabled

Enregistrez vos modifications et passons à la suite de la configuration.

Le fichier de configuration des ressources : ressource.cfg

Commençons par faire une copie de travail du fichier d'exemple :

sudo cp /etc/nagios/resource.cfg-sample /etc/nagios/resource.cfg
sudo gvim /etc/nagios/resource.cfg

Ce fichier contient les variables réutilisable dans les autres fichiers de configuration. Par exemple, il défini la variable USER1 qui contient le chemin du dossier des plugins.

Le fichier de configuration des ressources : cgi.cfg

Commençons par faire une copie de travail du fichier d'exemple :

sudo cp /etc/nagios/cgi.cfg-sample /etc/nagios/cgi.cfg
sudo gvim /etc/nagios/cgi.cfg

Ce fichier contient la configuration des permissions associées aux différentes parties de l'interface Web de Nagios.

Surveillance de votre réseau

Nous allons maintenant ajouter les spécificités de votre réseau à la configuration de Nagios.

Contacts

En premier lieu, il faut vous créer un utilisateur. Vous pouvez pour cela vous inspirer de l'utilisateur par défaut de Nagios :

sudo cp /etc/nagios/contacts-available/nagios-admin.cfg /etc/nagios/contacts-available/votre-login.cfg

Editez le fichier que vous venez de créer :

sudo gvim /etc/nagios/contacts-available/votre-login.cfg

et modifier les valeurs des lignes suivantes selon vos besoins :

  • contact_name : votre-login
  • alias : votre nom
  • email : votre email

Si vous souhaitez faire des modifications plus importantes, je vous conseille de lire en premier lieu la documentation de Nagios.

Une fois votre utilisateur configuré, il ne vous reste qu'a l'activer :

sudo ln -s ../contacts-available/votre-login.cfg /etc/nagios/contacts-enabled/votre-login.cfg

et a configurer son mot de passe :

sudo htpasswd /etc/nagios/htpasswd.users votre-login

Groupes de contacts

Le mécanisme de notification de Nagios utilise une structure de groupes. Si votre contact n'est membre d'aucun groupe, il ne recevra jamais aucune notification de problèmes. Nous allons donc faire en sorte que votre contact soit membre du groupe admins qui, dans la configuration par défaut, reçoit toutes les notifications de problèmes. Editez le fichier :

sudo gvim /etc/nagios/contacts-groups-available/admins.cfg

et ajouter votre login à la ligne members :

define contactgroup{
        contactgroup_name     admins
        alias                 Nagios Administrators
        members               nagios-admin, votre-login
        }

Vous pourrez par la suite définir de nouveau groupes de contacts assignés à la surveillance de services spécifiques, mais ce n'est pas le but de cet exercice.

Hôtes (serveurs)

Nous en venons maintenant au coeur de ce qui fait l'intérêt de Nagios, la surveillance de nos serveurs :D. Par choix, j'ai regroupé hôtes et services dans un même fichier. Il est ainsi plus simple de s'y retrouver. Commençons donc par créer le fichier de configuration de notre hôte:

touch /etc/nagios/hosts-available/mon-serveur.domaine.local

Voici ce que pourrait-être le contenu de ce fichier de configuration :

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 mon-serveur.domaine.local
alias mon-serveur.domaine.local
address 192.168.0.10
notification_period 24x7
}


###############################################################################
# SERVICES
###############################################################################

# Simple vérification que l'hôte est vivant
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local ; IMPORTANT : sans cette ligne,
; on ne sais pas sur quel hôte se situe le service.
service_description PING ; Nom du service
check_command check_ping!100.0,20%!500.0,60% ; Commande utilisée par le service
}

# Vérification que le serveur SSH est OK.
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local
service_description SSH
check_command check_ssh
}

# Vérification que le serveur DNS est OK.
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local
service_description DNS
check_command check_dns
}

# Vérification que le serveur SMTP est OK.
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local
service_description SMTP
check_command check_smtp
}

# Vérification que le serveur IMAP est OK.
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local
service_description IMAP
check_command check_imap
}

# Vérification que le serveur IMAPS est OK.
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local
service_description IMAPS
check_command check_imaps
}

# Vérification que le serveur HTTP est OK.
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local
service_description HTTP
check_command check_http
}

# Vérification que site mon-site.domaine.local hébergé sur ce serveur est OK.
define service{
use network-service ; Name of service template to use
host_name mon-serveur.domaine.local
service_description http://mon-site.domaine.local/
check_command check_http_url!http://mon-site.domaine.local/
}

Il s'agit bien sur d'un exemple incomplet mais il donne un bon aperçu de la manière de configurer la surveillance d'un serveur sous Nagios. Vous pouvez découvrir l'ensemble des commandes disponibles en étudiant le contenu des dossiers :

  • /etc/nagios/commands-available
  • /usr/share/nagios/libexec

Une fois votre serveur correctement configuré, il vous suffit de l'activer :

sudo ln -s ../hosts-available/mon-serveur.domaine.local /etc/nagios/hosts-enabled/mon-serveur.domaine.local

Groupes d'hôtes et de services

Lorsque vous devez surveiller de nombreux serveurs et services, les grouper vous facilite grandement la vie. Vous trouverez des exemples de comment configurer de tels groupes en étudiant les fichiers :

  • /etc/nagios/hosts-groups-available/test.cfg
  • /etc/nagios/services-groups-available/test.cfg

Je ne m'étendrais pas sur cette partie car elle est relativement simple.

Premier démarrage

Nous pouvons maintenant tester notre configuration de Nagios. En premier lieu, vérifions que nous n'avons fait aucune erreur :

sudo nagios -v /etc/nagios/nagios.cfg

Si cette commande ne vous signale aucune erreur, vous pouvez démarrer nagios :

sudo /etc/init.d/nagios start

et y accèder via l'URL http://localhost/nagios/

Le nom d'utilisateur demandé est celui dont vous avez configuré le mot de passe ci-dessus.

Conclusion

Ce document présente comment disposer rapidement d'une configuration Nagios fonctionnelle et relativement facile à modifier. Nagios permet toutefois beaucoup plus de chose, et je vous invite à lire attentivement la documentation et à expérimenter !

Liens

Attachements

Excellent tuto

Posté par Benjamin le 30/07/2009 16:54
Bonjour,

on est entrain de refaire de zéro notre nagios dans ma boite (50 hosts et environ 600 services), on était sur nagios2/etch et on passe (from scratch) à nagios3/lenny.
Je me suis inspiré de votre tutorial pour mieux organiser les répertoires de configuration (commands-enabled, commands-available ...), et c'est une excellente idée, c'est nettement plus clair ainsi. Pour aller encore plus loin je pense passer ces répertoires via Subversion pour permettre de suivre les modifications des autres admin système.

Juste pour vous remercier pour l'idée ;)

a+


Réalisé avec Plone

Ce site respecte les normes suivantes :

Wikio