Installer Nagios sur Debian
Nagios est un logiciel de supervision d'infrastructure informatique très puissant. Il permet d'obtenir des informations détaillées sur le fonctionnement des serveurs, ainsi que des alertes mail, SMS et autres. Ce guide vous aide à l'installer depuis les sources sur Debian.
Ce guide est testé sur:
- Debian 5.0 Lenny
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
Ce guide est testé avec ces versions de Nagios:
- 3.4.1
- 3.5.0
- 4.0.2
Pré-requis
Ce guide nécessite:
- a2tools, l'outil d'administration simplifiée d'Apache 2.
- un serveur HTTP avec support du PHP, comme décrit par Installer PHP-FPM sur Debian.
Paramètres
Renseignez le nom de domaine ou sera disponible l'application:
DOMAIN="nagios.domain.com"
Renseignez le nom du certificat SSL à utiliser pour chiffrer l'application avec HTTPS (créé via la procédure Créer un certificat SSL / TLS sur Debian) (optionnel, recommandé):
SSL_KEY_NAME="${DOMAIN}"
Installation
Préparation de l'environnement
Installez les paquets nécessaires à la mise en place de l'outil:
command apt-get install wget build-essential subversion\ libgd2-xpm-dev traceroute libltdl3-dev \ libssl-dev libgnutls-dev libbind-dev \ libpq-dev libkrb5-dev libradius1-dev libldap2-dev \ libmysqlclient15-dev openssh-client fping \ dnsutils snmp openssl mysql-client postgresql-client \ qstat libsnmp-perl libsnmp-session-perl libnet-snmp-perl
Mise en place du cœur de Nagios
Téléchargez les sources de la dernière version à l'aide du script sf-downloader:
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
SOURCE="$(command bash '/tmp/sf-downloader' --tgz 'nagios' 'nagios-VERSION.tar.gz')"
Placez-vous dans le dossier obtenu:
command pushd "${SOURCE}"
Renseignez l'emplacement de l'installation:
./configure \ --prefix="/usr/share/nagios" \ --bindir="/usr/bin" \ --with-lockfile="/var/lock/nagios.lock" \ --with-checkresult-dir="/var/spool/nagios/checkresult" \ --with-httpd-conf="/etc/apache2/conf.d" \ --sysconfdir="/etc/nagios" \ --sharedstatedir="/var/lib/nagios/com" \ --localstatedir="/var/lib/nagios/var" \ --datadir="/usr/share/nagios/html" \ --with-cgiurl="/cgi-bin" \ --with-htmlurl="/" \
--with-command-group='nagioscmd'
Lancez la compilation:
command make all
Une fois la compilation terminée, créez l'utilisateur système dédié à Nagios:
command adduser --system \ --home '/usr/share/nagios' \ --no-create-home \ --group 'nagios'
Créez le groupe système dédié aux commandes Nagios et ajoutez-y les utilisateurs nagios et www-data:
command addgroup --system 'nagioscmd'
command adduser 'nagios' 'nagioscmd'
command adduser 'www-data' 'nagioscmd'
Installez le coeur de Nagios:
command make install
Mettez en place les exemples de configuration:
command make install-config
Mettez en place le fichier init.d de Nagios 3 (celui de Nagios 4 n'étant pas compatible avec Debian):
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/nagios.default' \
--quiet --no-check-certificate --output-document='/etc/default/nagios'
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/nagios.init-d' \
--quiet --no-check-certificate --output-document='/etc/init.d/nagios'
command chmod +x '/etc/init.d/nagios'
Assurez-vous que le fichier '/etc/nagios/cgi.cfg' contienne l'option nagios_check_command:
if [ -z "$(command grep '^nagios_check_command=' '/etc/nagios/cgi.cfg')" ]; then
echo '# Nagios check command
nagios_check_command="/usr/share/nagios/libexec/check_nagios"' \
>> '/etc/nagios/cgi.cfg'
fi
Ajustez les permissions des fichiers pour les commandes nagios:
command make install-commandmode
Quittez le dossier des sources:
command popd
Ajoutez Nagios au démarrage du système:
command update-rc.d nagios defaults
Créez le dossier destiné à recevoir les logs de Nagios:
command mkdir "/var/log/nagios" command chown nagios:nagios "/var/log/nagios"
Ajout des plugins Nagios
Téléchargez les sources de la dernière version à l'aide du script sf-downloader:
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
SOURCE="$(command bash '/tmp/sf-downloader' --tgz --generic='https://www.nagios-plugins.org/download/' \
'nagiosplug' 'nagios-plugins-VERSION.tar.gz')"
Placez-vous dans le dossier obtenu:
command pushd "${SOURCE}"
Configurez l'installation des plugins:
./configure --prefix="/usr/share/nagios"
Lancez la compilation:
command make
Installez les plugins:
command make install
command popd
Mise en place d'une configuration modulaire
Afin d'accélérer la gestion quotidienne de l'application, j'ai modularisé la structure de la configuration de Nagios pour la remplacer par une infrastructure de dossier "available" / "enabled" similaire à celle d'Apache 2 sur Debian. Suivez les instructions qui suivent pour mettre en place cette structure modulaire.
Sauvegardez la configuration par défaut mise en place par la procédure d'installation :
command mv '/etc/nagios' '/etc/nagios.orig'
Téléchargez l'archive de la configuration modulaire :
command wget 'https://howto.biapy.com/fr/debian-gnu-linux/applications-web/supervision/installer-nagios-sur-debian/nagios.tar.gz/at_download/file' \ --no-check-certificate --output-document='/tmp/nagios.tar.gz'
Décompressez le fichier téléchargé :
command tar --directory='/etc' -xzf '/tmp/nagios.tar.gz'
Mettez en place les scripts d'assistance à la configuration de l'application :
/etc/nagios/scripts/install-tools.sh
Configuration du serveur Web
Créez la configuration spécifique à l'outil:
CUSTOM_VHOST=" # Fix nagios charset display. AddDefaultCharset UTF-8 ScriptAlias /cgi-bin /usr/share/nagios/sbin <Directory /usr/share/nagios/sbin> AllowOverride AuthConfig Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all AuthName \"Nagios Access\" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users require valid-user </Directory> DocumentRoot /usr/share/nagios/html/ <Directory /usr/share/nagios/html/> Options Indexes FollowSymLinks MultiViews AllowOverride AuthConfig Order allow,deny allow from all AuthName \"Nagios Access\" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users require valid-user </Directory> "
Activez la configuration de Nagios spécifique à votre serveur HTTP à l'aide de l'outil a2tools :
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command a2tools --template='custom' --ssl="${SSL_KEY_NAME}" "${DOMAIN}" "${CUSTOM_VHOST}"
command a2tools --template='redirect' "${DOMAIN}" "https://${DOMAIN}/"
else
command a2tools --template='custom' "${DOMAIN}" "${CUSTOM_VHOST}"
fi
Faites en sorte que le fichier des commandes nagios puisse être modifié par le serveur HTTP :
command touch '/var/lib/nagios/var/nagios.cmd'
command chown nagios:nagioscmd '/var/lib/nagios/var/nagios.cmd'
Paramétrage initial
Afin que votre configuration de Nagios soit fonctionnelle, activez une configuration minimale :
command nagios-enable-timeperiod 24x7 command nagios-enable-contactgroup admins command nagios-enable-hostgroup servers command nagios-enable-hosts-template \ generic-host linux-server windows-server command nagios-enable-host localhost command nagios-enable-service-template \ generic-service local-service network-service command nagios-enable-service \ localhost-disk-root localhost-load localhost-ping localhost-apt \ localhost-total-procs localhost-zombie-procs localhost-users command nagios-enable-servicegroup \ disks loads pings procs ssh swaps upgrades users
Créez le contact d'administration de votre outil à l'aide de l'outil nagios-tools :
command nagios-tools add-contact "admin" "Nagios administrator" "root@localhost" "admins"
Assignez-lui un mot de passe, et notez précieusement les paramètres d'identification ainsi obtenus :
command nagios-tools set-contact-password "admin"
Premier démarrage
Vérifiez que la configuration ne contient aucune erreur :
command nagios -v /etc/nagios/nagios.cfg
Si cette commande ne vous signale aucune erreur, démarrez le démon de surveillance :
/etc/init.d/nagios start
Vous pouvez maintenant accédez à l'outil via l'URL fournie par la commande :
command echo "http://${DOMAIN}"
Utilisez l'utilisateur configuré précédemment dans ce guide pour vous identifier.
Description succincte des outils mis en place par ce guide
Ce guide met en place quelques outils destinés à simplifier l'administration de Nagios. Le principal est le script nagios-tools. Ce script permet de créer simplement et rapidement des services, des hôtes, des contacts, etc... Par exemple, pour créer un "host" nagios pour le serveur "mon-serveur.domaine.fr", utilisez la commande :
command nagios-tools add-host "mon-serveur.domaine.fr" "servers"
L'adresse IP du serveur est détectée automatiquement, la configuration est créée dans le dossier hosts-available, activée, et le service nagios est redémarré automatiquement si la configuration obtenue ne contient aucune erreur.
Pour en savoir plus sur les fonctionnalités de nagios-tools, je vous invite à expérimenter en vous basant sur la documentation minimale fournie par la commande :
command nagios-tools
En complément de nagios-tools, ce guide met en place des scripts permettant d'activer ou de désactiver rapidement des morceaux de configuration nagios. Le fonctionnement de ces scripts est similaire à celui des scripts Apache 2 a2ensite et a2dissite. Pour obtenir la liste des scripts d'administration de la configuration Nagios disponibles, utilisez cette commande :
command find '/usr/bin' -type l -name 'nagios-*able-*' | command sort
Les dossiers correspondants à ce scripts se trouvent dans le dossier de configuration /etc/nagios.
Exemple de configuration
Si vous gérez plusieurs serveurs, hébergeant des sites Plone 3, Wordpress, Redmine, vTiger, voici un exemple complet de configuration.
Organisation des services
Créez un groupe de services destiné à grouper les réponses aux ping de vos serveurs :
command nagios-tools add-servicegroup pings "Ping replies"
Créez un groupe de services destiné à grouper l'état des serveurs SSH de vos serveurs :
command nagios-tools add-servicegroup ssh "SSH servers"
Créez un groupe de services destiné à grouper l'état des sites Wordpress de vos serveurs :
command nagios-tools add-servicegroup wordpress "Wordress sites"
Créez un groupe de services destiné à grouper l'état de vos serveurs de base de données :
command nagios-tools add-servicegroup databases "Database servers"
Ajout d'un serveur
Voici un exemple de procédure d'ajout de serveur. Renseignez le nom d'hôte du serveur :
SERVER="server.domaine.fr"
Ajoutez l'hôte Nagios pour le serveur (l'adresse IP est détectée automatiquement si le nom de votre serveur est un nom de domaine valide) :
command nagios-tools add-host "${SERVER}" "servers"
Remarque : "servers" est le groupe de serveur dans lequel nous ajoutons notre serveur.
Ajoutez le service de vérification du ping pour le serveur :
command nagios-tools add-service "${SERVER}" "pings" "ping"
Ajoutez le service de vérification de la connexion SSH pour le serveur :
command nagios-tools add-service "${SERVER}" "ssh" "ssh"
- Ajout d'un site internet sur le serveur :
Pour ajoutez une vérification d'hébergement de site Wordpress sur votre serveur, utilisez la commande suivante (l'URL du site Wordpress à vérifier est la valeur graissée. Modifiez-la à votre convenance) :
command nagios-tools add-service "${SERVER}" "wordpress" "http" "http://blog.domaine.fr"
Remarque : la valeur "wordpress" correspond au groupe de services auquel est ajouté le service.
Pour allez plus loin
Installation de l'extension de surveillance délocalisée NRPE
L'add-on NRPE permet de surveiller les caractéristiques de machines distances (utilisation CPU, espace disque, etc...). Il est indispensable si vous devez surveiller un parc de serveurs. Cet add-on se divise en deux parties : une extension Nagios a mettre en place sur votre instance, et un démon à installer sur la machine distante.
Récupérez l'URL de la dernière version de l'extension :
SOURCE_URL="$(command wget --output-document=- --quiet \ 'http://exchange.nagios.org/directory/Addons/Monitoring-Agents/NRPE--2D-Nagios-Remote-Plugin-Executor/details' \ | command grep 'href=.*nrpe-.*.tar.gz' \ | command sed -e 's/^.*href="\([^"]*\)".*href.*$/\1/')"
Récupérez le numéro de version à partir de l'URL:
VERSION=$(command echo "${SOURCE_URL}" \ | command sed -e 's/^.*nrpe-\([^/]*\).tar.gz.*$/\1/')
Téléchargez les sources:
command wget "${SOURCE_URL}" \ --output-document="/tmp/nrpe-${VERSION}.tar.gz"
Décompressez l'archive ainsi obtenue:
command tar --directory "/tmp" -xzf "/tmp/nrpe-${VERSION}.tar.gz"
Placez-vous dans le dossier ainsi créé:
command pushd "/tmp/nrpe-${VERSION}"
Détectez l'emplacement de la bibliothèque SSL:
command test -e '/usr/lib/libssl.so' && SSL_LIB_PATH='/usr/lib'
command test -e "/usr/lib/$(command uname --machine)-linux-gnu/libssl.so" && SSL_LIB_PATH="/usr/lib/$(command uname --machine)-linux-gnu"
Configurez l'installation du plugin:
./configure --prefix="/usr/share/nagios" --with-ssl-lib="${SSL_LIB_PATH}"
Lancez la compilation:
command make check_nrpe
Installez l'extension NRPE sur votre système:
command make install-plugin command popd
Ajoutez la commande check_nrpe à votre configuration Nagios:
echo 'define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }' | tee /etc/nagios/commands-available/check_nrpe.cfg command nagios-enable-command check_nrpe
Vous pouvez maintenant surveiller les machines exécutant le démon NRPE à distance.
Si vous souhaitez mettre en place une surveillance via NRPE sur l'un de vos serveur, je vous invite à lire Installer l'outil de supervision distante NRPE sur Debian.
Pour plus d'information sur l'installation de NRPE sur les machines distantes, je vous invite à lire Monitorer les hôtes Linux (Debian) distant avec le serveur NRPE de Nagios.
Mise à jour
Mise à jour du cœur de Nagios
Téléchargez les sources de la dernière version à l'aide du script sf-downloader:
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
SOURCE="$(command bash '/tmp/sf-downloader' --tgz 'nagios' 'nagios-VERSION.tar.gz')"
Placez-vous dans le dossier obtenu:
command pushd "${SOURCE}"
Renseignez l'emplacement de l'installation:
./configure \ --prefix="/usr/share/nagios" \ --bindir="/usr/bin" \ --with-lockfile="/var/lock/nagios.lock" \ --with-checkresult-dir="/var/spool/nagios/checkresult" \ --with-httpd-conf="/etc/apache2/conf.d" \ --sysconfdir="/etc/nagios" \ --sharedstatedir="/var/lib/nagios/com" \ --localstatedir="/var/lib/nagios/var" \ --datadir="/usr/share/nagios/html" \ --with-cgiurl="/cgi-bin" \ --with-htmlurl="/" \
--with-command-group='nagioscmd'
Lancez la compilation:
command make all
Installez le coeur de Nagios:
command make install command popd
Redémarrez le serveur:
/etc/init.d/nagios restart
Mise à jour des plugins Nagios
Téléchargez les sources de la dernière version à l'aide du script sf-downloader:
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
SOURCE="$(command bash '/tmp/sf-downloader' --tgz --generic='https://www.nagios-plugins.org/download/' \
'nagiosplug' 'nagios-plugins-VERSION.tar.gz')"
Placez-vous dans le dossier obtenu:
command pushd "${SOURCE}"
Configurez l'installation des plugins:
./configure --prefix="/usr/share/nagios"
Lancez la compilation:
command make
Installez les plugins:
command make install
command popd
Redémarrez le serveur:
/etc/init.d/nagios restart
Mise à jour de NRPE
Récupérez l'URL de la dernière version de l'extension :
SOURCE_URL="$(command wget --output-document=- --quiet \ 'http://exchange.nagios.org/directory/Addons/Monitoring-Agents/NRPE--2D-Nagios-Remote-Plugin-Executor/details' \ | command grep 'href=.*nrpe-.*.tar.gz' \ | command sed -e 's/^.*href="\([^"]*\)".*href.*$/\1/')"
Récupérez le numéro de version à partir de l'URL:
VERSION=$(command echo "${SOURCE_URL}" \ | command sed -e 's/^.*nrpe-\([^/]*\).tar.gz.*$/\1/')
Téléchargez les sources:
command wget "${SOURCE_URL}" \ --output-document="/tmp/nrpe-${VERSION}.tar.gz"
Décompressez l'archive ainsi obtenue:
command tar --directory "/tmp" -xzf "/tmp/nrpe-${VERSION}.tar.gz"
Placez-vous dans le dossier ainsi créé:
command pushd "/tmp/nrpe-${VERSION}"
Détectez l'emplacement de la bibliothèque SSL:
command test -e '/usr/lib/libssl.so' && SSL_LIB_PATH='/usr/lib'
command test -e "/usr/lib/$(command uname --machine)-linux-gnu/libssl.so" && SSL_LIB_PATH="/usr/lib/$(command uname --machine)-linux-gnu"
Configurez l'installation du plugin:
./configure --prefix="/usr/share/nagios" --with-ssl-lib="${SSL_LIB_PATH}"
Lancez la compilation:
command make check_nrpe
Installez l'extension NRPE sur votre système:
command make install-plugin command popd
Redémarrez le serveur:
/etc/init.d/nagios restart
Remerciements
- Merci aux développeurs du logiciel de supervision d'infrastructure informatique Nagios (en)
- Merci au site Monitoring Exchange (en) pour la mise à disposition de nombreux plugins Nagios.
- Merci au site Monitoring-fr (fr) pour ses nombreuses informations, et ses guides d'installation.