Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / Supervision / Installer Nagios sur Debian

Installer Nagios sur Debian

Par Pierre-Yves Landuré Dernière modification 26/11/2016 11:51

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:

    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