This is an old revision of the document!
Table of Contents
supervision libre
Nagios
Nagios est un programme de supervision libre composé d'un scheduler, de greffons (plugins) et d'une interface web de management. Il est couramment utilisé pour faire des PING sur des équipements ou tester des services (HTTP, SMTP) via ses greffons.
Installation du paquet Ubuntu
Installation classique sous Ubuntu avec résolution automatique des dépendances :
aptitude install nagios3
Puis il faut créer un utilisateur et lui attribuer un mot de passe (si ce n'est pas déjà fait lors de l'installation) pour l'accès à l'interface web :
htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin
Tout est automatique c'est bien pour voir ce que ça donne. Mais si on veut :
- maitriser le logiciel
- profiter de la dernière version
- utiliser l'installation de base pour simplifier l'installation de nouveaux plugins ou addons
… alors il faut le compiler à partir des sources.
Installation via les sources
sous Redhat 5.4 EL
Prérequis
- Il faut disposer d'un serveur web (Apache2 par exemple) avec PHP (5 par exemple), la librairie GD et des outils de compilation (gcc & co) :
yum install httpd yum install gd gd-devel yum install gcc glibc glibc-common
Vérifier que le serveur web se lance bien au démarrage classique :
chkconfig --list | grep httpd
Si le service n'est pas listé, l'ajouter à la liste :
chkconfig --add httpd chkconfig --list | grep httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
S'il n'est pas chargé au démarrage, l'y ajouter (runlevels de 2 à 5 par défaut) :
chkconfig httpd on chkconfig --list | grep httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- création des utilisateurs et groupes qui seront utilisés par Nagios
# groupadd nagios # groupadd nagcmd # useradd -g nagios -G nagcmd -c "Nagios Admin" nagios
Nagios core
La dernière version de nagios “gratuit” (renommée nagios core, en opposition avec nagios XI qui est la version “pro” et payante) en date à l'heure actuelle (15/04/2010) est la 3.2.1. Pour information, le terme Nagios OSS désigne les composant libres et gratuits nagios core, nagios-plugins et nagios addons.
- téléchargement + décompression
$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz $ tar -zxf nagios-3.2.1.tar.gz $ cd nagios-3.2.1
- configurer les options de compilation :
$ ./configure --enable-event-broker --enable-embedded-perl --with-command-group=nagcmd
- L'option
–enable-event-broker
n'est pas utile si on utilise juste Nagios et ses plugins de base ; en revanche si on veut utiliser l'addon NDOutils (par exemple) il faut l'activer. –enable-embedded-perl
permet de pouvoir utiliser le moteur d'exécution de perl intégré à nagios (je paraphrase ^^). Il permet d'optimiser l'exécution des plugins perl donc il est conseillé.–with-command-group=nagcmd
permet de spécifier le groupe de l'utilisateur (par défaut nagios) qui lancera les command-group.
- lancer la compilation
$ make all
- installation : ceci se fait en root
Ceci va copier les fichiers aux bons endroits :
- make install : installe les binaires, CGI et fichiers HTML
- make install-init : installe le script de démarrage dans /etc/rc.d/init.d
- make install-commandmode : configuration du répertoire et du pipe pour les commandes externes (/usr/local/nagios/var/rw/nagios.cmd)
- make install-config : installe les modèles de configuration par défaut dans /usr/local/nagios/etc
- make install-webconf : installation du fichier de configuration d'Apache pour Nagios. Ce dernier sera accessible sur http://127.0.0.1/nagios/
# make install # make install-init # make install-commandmode # make install-config # make install-webconf
- limitation de l'accès à Nagios : protection par authentification
On utilise un htaccess pour demander un login/mot de passe afin d'obtenir l'accès à l'interface web de Nagios.
<note> Attention, pour l'instant le mot de passe transite en clair (HTTP oblige) entre votre machine et le serveur Nagios. Pour une vraie sécurité, il est conseillé de passer en SSL (HTTPS). </note>
On ajoute l'utilisateur nagiosadmin au fichier htpasswd.users qui contient les couples login/mot de passe hashé. Puis on donne l'accès au fichier à l'utilisateur apache, sur lequel doit tourner le service httpd.
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin # chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users # usermod -a -G nagios,nagcmd apache
- lancement de Nagios au démarrage du système
Configuration pour que Nagios se lance automatiquement au démarrage du système :
# chkconfig --add nagios # chkconfig nagios on
- redémarrage du serveur web pour qu'il prenne en compte sa nouvelle configuration
service httpd restart
Avant d'avoir un Nagios qui fonctionne correctement, il reste 2 étapes :
- installer les plugins “de base” (nagios-plugins)
- lancer le service nagios
Nagios-plugins
Ce pack contient tous les plugins de base de Nagios (d'autres pourront être ajoutés plus tard).
- téléchargement et décompression
$ wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz $ tar zxf nagios-plugins-1.4.14.tar.gz $ cd nagios-plugins-1.4.14
- configuration des options de compilation
$ ./configure --with-command-group=nagcmd --enable-perl-modules
Les options suivent la logique de compilation de Nagios.
- compilation
$ make
- installation
# make install
- vérification de la configuration de Nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
- enfin, on lance Nagios
service nagios start
Configuration
Les fichiers principaux se trouvent dans /etc/nagios3/
: nagios.cfg
et cgi.cfg
.
Contacts et groupes de contacts
On renseigne les personnes de contact (qui seront notifiées lors d'un problème) dans le fichier /etc/nagios3/conf.d/contacts_nagios2.cfg
. Exemple de déclaration :
define contact{ contact_name root alias Root service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email root@localhost }
On voit, dans l'ordre, le nom d'utilisateur, le nom complet, les périodes de notifications pour les “service” et les “host”, les options de notification, et les moyens de notification. Chaque valeur est un objet défini dans la configuration de Nagios (on retrouve par exemple les périodes de temps), alors que les options de notifications définissent le degré d'alerte.
Pour les services (service_notification_options) :
- w (Warning) : avertissement
- u (Unknown) : inconnu
- c (Critical) : critique
- r (Recovery) : retour à l'état normal (up)
Pour les machines (host_notification_options) :
- d (Down) : machine éteinte
- u (Unreachable) : machine injoignable
- r (Recovery) : retour à l'état normal (up)
On définit dans ce même fichier les groupes de contact :
define contactgroup{ contactgroup_name admins alias Nagios Administrators members root }
Droits des contacts
Pour attribuer des droits à un utilisateur, il faut éditer le fichier /etc/nagios3/cgi.cfg
et ajouter les noms d'utilisateurs après les directives idoines, séparés par des virgules ; par exemple :
authorized_for_system_information=nagiosadmin,toto
Périodes de temps
On peut consulter ou définir des périodes de temps dans le fichier /etc/nagios3/conf.d/timeperiods_nagios2.cfg
. Voici un exemple de déclaration :
define timeperiod{ timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 }
Déclaration d'un host
Ça se passe dans le fichier /etc/nagios3/conf.d/localhost_nagios2.cfg :
define host{ use generic-host host_name routeur1 alias Routeur passerelle R1 address 192.168.0.254 check_command check-host-alive }
Cet host utilise le template generic-host qui définit tous les paramètres nécessaires par défaut. On peut surcharger l'objet càd redéfinir les paramètres du template en modifiant leurs valeurs.
Création de hostgroup
On doit mettre chaque host dans un hostgroup, défini dans le fichier /etc/nagios3/conf.d/hostgroups_nagios2.cfg :
define hostgroup { hostgroup_name routeurs alias Debian GNU/Linux Servers members routeur1 contact_groups admins-routeur }
Création d'un service
Ils sont déclarés dans le fichier /etc/nagios3/conf.d/service_nagios2.cfg
define service { hostgroup_name ping-servers service_description PING check_command check_ping!100.0,20%!500.0,60% use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
Ce service utilise le greffon check_ping ; en fonction du retour de ce dernier, on passe à différents niveau d'alerte :
- un temps de réponse > 100 ms ou 20% de perte et on passe à l'état WARNING
- un temps de réponse > 500 ms ou 60% de perte et on passe à l'état CRITICAL
L'intervalle de notification (notification_interval) indique si l'alerte doit être répétée si le problème perdure.
D'autres arguments sont intéressants à utiliser :
normal_check_interval 5
définit l'intervalle de check du service, en minutesmax_check_attempts 3
définit le seuil au delà duquel le service passe en HARD stateretry_check_interval 1
si le statut du service est nOK, on passe en SOFT state et on reteste le service toutes les X minutes
Vérifications
Pour vérifier la validité de la configuration de Nagios sans relancer le démon :
nagios3 -v /etc/nagios3/nagios.cfg
(très utile quand on travaille sur de la prod !)
Installation de Nagvis
Nagvis est un addon pour Nagios qui permet d'afficher ses état sur un carte interactive. Il nécessite beaucoup de prérequis, qui ont eux-même des prérequis. Cette partie traite de l'installation à partir des sources de Nagvis, NDOutils et Graphviz.
MySQL
MySQL est un prérequis de notre installation de NDOUtils.
# Installation du serveur, du client des librairies de développement. yum install mysql-server mysql-devel # Lancement du service service mysqld start # Assistant de configuration (mot de passe root, etc) /usr/bin/mysql_secure_installation # Lancement automatique du serveur MySQL au démarrage chkconfig mysqld on chkconfig --list | grep sql mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
NDOUtils
installation depuis les sources : ndoutils-1.4b9.tar.gz
NDOUtils est un addon qui récupère les états, la configuration, etc… de Nagios pour les enregistrer dans une base (MySQL dans notre cas).
wget http://prdownloads.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz tar zxf ndoutils-1.4b9.tar.gz cd ndoutils-1.4b9 ./configure --disable-pgsql make
Configuration de la base de donnée : Se connecter avec
mysql -u root -p # créer l'utilisateur MySQL "ndouser" et la base "ndoutils" mysqladmin -u root -p create ndoutils mysql -u root -p mysql mysql> GRANT ALL ON ndoutils.* TO ndouser@localhost IDENTIFIED BY 'ndopassword'; mysql> FLUSH PRIVILEGES;
Création de la structure de la base avec le script fourni :
cd db/ ./installdb -u ndouser -p ndopassword -h localhost -d ndoutils DBD::mysql::db do failed: Table 'ndoutils.nagios_dbversion' doesn't exist at ./installdb line 51. ** Creating tables for version 1.4b9 Using mysql.sql for installation... ** Updating table nagios_dbversion Done!
J'obtiens un message d'erreur qui n'empêche pas la terre de tourner…
Installation du module :
# binaires cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db chown nagios:nagios /usr/local/nagios/bin/ndo* chmod 774 /usr/local/nagios/bin/ndo* # fichiers de config cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg chown nagios:nagios /usr/local/nagios/etc/ndo* chmod 660 /usr/local/nagios/etc/ndo* # paramétrage du fichier de config vi /usr/local/nagios/etc/ndo2db.cfg db_name=ndoutils db_prefix=nagios_ db_user=ndouser db_pass=ndopassword # ajout du broker dans le fichier de conf de nagios : vi /usr/local/nagios/etc/nagios.cfg event_broker_options=-1 broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg # création du script de démarrage ('tention aux yeux) # idée de script (conçu pour ubuntu) : http://www.nicolargo.com/blogdata/ndo2db vi /etc/rc.d/init.d/ndoutils #!/bin/sh /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg # lancer le service NDOUtils et redémarrer nagios /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg service nagios restart # vérif tail -f /usr/local/nagios/var/nagios.log
Graphviz
Il existe un paquet pour Redhat dont l'installation est décrite ici : http://www.graphviz.org/Download_linux_rhel.php
# ajout du repository à wget wget http://www.graphviz.org/graphviz-rhel.repo mv graphviz-rhel.repo /etc/yum.repos.d/ # vérification de bonne pirse en compte par yum yum list available 'graphviz*' Loaded plugins: rhnplugin Available Packages graphviz.i386 2.26.3-1.el5 graphviz-stable graphviz-devel.i386 2.26.3-1.el5 graphviz-stable graphviz-doc.i386 2.26.3-1.el5 graphviz-stable graphviz-gd.i386 2.26.3-1.el5 graphviz-stable graphviz-graphs.i386 2.26.3-1.el5 graphviz-stable graphviz-guile.i386 2.26.3-1.el5 graphviz-stable graphviz-java.i386 2.26.3-1.el5 graphviz-stable graphviz-perl.i386 2.26.3-1.el5 graphviz-stable graphviz-php.i386 2.16-1.el5 graphviz-stable graphviz-python.i386 2.26.3-1.el5 graphviz-stable graphviz-ruby.i386 2.26.3-1.el5 graphviz-stable graphviz-tcl.i386 2.26.3-1.el5 graphviz-stable # Installation des paquets idoines yum install graphviz.i386 graphviz-gd.i386 graphviz-perl.i386 graphviz-doc.i386 graphviz-graphs.i386 # oui, il y a pas mal de dépendances : ==================================================================================================== Package Arch Version Repository Size ==================================================================================================== Installing: graphviz i386 2.26.3-1.el5 graphviz-stable 1.5 M graphviz-doc i386 2.26.3-1.el5 graphviz-stable 2.4 M graphviz-gd i386 2.26.3-1.el5 graphviz-stable 117 k graphviz-graphs i386 2.26.3-1.el5 graphviz-stable 4.3 M graphviz-perl i386 2.26.3-1.el5 graphviz-stable 54 k Installing for dependencies: alsa-lib i386 1.0.17-1.el5 bt-rhel-i386-server-5 411 k audiofile i386 1:0.2.6-5 bt-rhel-i386-server-5 107 k avahi-glib i386 0.6.16-7.el5 bt-rhel-i386-server-5 15 k chkfontpath i386 1.10.1-1.1 bt-rhel-i386-server-5 15 k esound i386 1:0.2.36-3 bt-rhel-i386-server-5 130 k freeglut i386 2.4.0-7.1.el5 bt-rhel-i386-server-5 142 k gnome-keyring i386 0.6.0-1.fc6 bt-rhel-i386-server-5 170 k gnome-mime-data i386 2.4.2-3.1 bt-rhel-i386-server-5 691 k gnome-mount i386 0.5-3.el5 bt-rhel-i386-server-5 70 k gnome-vfs2 i386 2.16.2-6.el5 bt-rhel-i386-server-5 1.2 M gtkglext-libs i386 1.2.0-6.el5 graphviz-stable 149 k gts i386 0.7.6-11.el5 graphviz-stable 202 k libFS i386 1.0.0-3.1 bt-rhel-i386-server-5 30 k libXaw i386 1.0.2-8.1 bt-rhel-i386-server-5 325 k libXfont i386 1.2.2-1.0.3.el5_1 bt-rhel-i386-server-5 241 k libXmu i386 1.0.2-5 bt-rhel-i386-server-5 63 k libart_lgpl i386 2.3.17-4 bt-rhel-i386-server-5 76 k libbonobo i386 2.16.0-1.fc6 bt-rhel-i386-server-5 501 k libbonoboui i386 2.16.0-1.fc6 bt-rhel-i386-server-5 390 k libcroco i386 0.6.1-2.1 bt-rhel-i386-server-5 127 k libfontenc i386 1.0.2-2.2.el5 bt-rhel-i386-server-5 19 k libglade2 i386 2.6.0-2 bt-rhel-i386-server-5 96 k libgnome i386 2.16.0-6.el5 bt-rhel-i386-server-5 859 k libgnomecanvas i386 2.14.0-4.1 bt-rhel-i386-server-5 222 k libgnomeui i386 2.16.0-5.el5 bt-rhel-i386-server-5 977 k libgsf i386 1.14.1-6.1 bt-rhel-i386-server-5 116 k librsvg2 i386 2.16.1-1.el5 bt-rhel-i386-server-5 179 k libxslt i386 1.1.17-2.el5_2.2 bt-rhel-i386-server-5 485 k mesa-libGLU i386 6.5.1-7.8.el5 bt-rhel-i386-server-5 225 k netpbm i386 10.35.58-8.el5 bt-rhel-i386-server-5 834 k shared-mime-info i386 0.19-5.el5 bt-rhel-i386-server-5 148 k ttmkfdir i386 3.0.9-23.el5 bt-rhel-i386-server-5 46 k urw-fonts noarch 2.3-6.1.1 bt-rhel-i386-server-5 4.5 M xorg-x11-font-utils i386 1:7.1-2 bt-rhel-i386-server-5 75 k xorg-x11-xfs i386 1:1.0.2-4 bt-rhel-i386-server-5 68 k Transaction Summary ====================================================================================================
Nagvis
Paquets à installer :
yum install php-gd php-mbstring php-xml php-mysql
Redémarrage du serveur HTTP pour prise en compte des paquets PHP
service httpd restart
wget http://downloads.sourceforge.net/project/nagvis/NagVis%201.4%20%28stable%29/nagvis-1.4.7.tar.gz?use_mirror=freefr tar zxf nagvis-1.4.7.tar.gz cd nagvis-1.4.7 # lancer l'assistant installeur ./install.sh [..] +------------------------------------------------------------------------------+ | Summary | +------------------------------------------------------------------------------+ | NagVis home will be: /usr/local/nagios/share/nagvis | | Owner of NagVis files will be: apache | | Group of NagVis files will be: apache | | Path to Apache config dir is: /etc/httpd/conf.d | | | | Installation mode: install | | | | Do you really want to continue? [y]: +------------------------------------------------------------------------------+ | Starting installation | +------------------------------------------------------------------------------+ | Creating directory /usr/local/nagios/share/nagvis... done | | Copying files to /usr/local/nagios/share/nagvis... done | | Creating main configuration file... done | | | | | | | +--- Setting permissions... ---------------------------------------------------+ | /usr/local/nagios/share/nagvis/etc/nagvis.ini.php-sample done | | /usr/local/nagios/share/nagvis/etc/maps done | | /usr/local/nagios/share/nagvis/nagvis/images/maps done | | | +------------------------------------------------------------------------------+ | Installation complete | | | | You can safely remove this source directory. | | | | What to do next? | | - Read the documentation | | - Maybe you want to edit the main configuration file? | | Its location is: /usr/local/nagios/share/nagvis/etc/nagvis.ini.php | | - Configure NagVis via browser | | <http://localhost/nagios/nagvis/nagvis/config.php> | +------------------------------------------------------------------------------+ # Prise en compte de la base SQL vi /usr/local/nagios/share/nagvis/etc/nagvis.ini.php dbname="ndoutils" dbuser="ndouser" dbpass="ndopassword"
Les images dans /usr/local/nagios/share/nagvis/nagvis/images/maps/
Problèmes et solutions
Installation du paquet Ubuntu par défaut
Sous Ubuntu (9.10) il y a 2 problèmes avec l'installation par défaut :
- problème avec le plugin check_ssh : en fait il n'y a pas de serveur SSH installé sous Ubuntu par défaut. Pour l'installer il faut installer le paquet openssh-server.
- * problème de droit d'accès avec le plugin check_disk :
DISK CRITIQUE - /home/<user>/.gvfs is not accessible: Permission non accordée
Pour ignorer le fichier qui pose ce problème de droit d'accès, il faut éditer la configuration du plugin check_disk et ajouter à la fin de la ligne : -A -i .gvfs
sudo vi /etc/nagios-plugins/config/disk.cfg # 'check_all_disks' command definition define command{ command_name check_all_disks #ancienne ligne #command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e #nouvelle ligne command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -A -i .gvfs }
Puis il faut recharger la conf dans Nagios :
sudo service nagios3 stop * Stopping nagios3 monitoring daemon nagios3 sudo service nagios3 start [ OK ] * Starting nagios3 monitoring daemon nagios3 kill: 1: No such process [ OK ]
source : https://help.ubuntu.com/community/Nagios3#Post%20Install%20Tasks