787 Words Cours TP

Objectifs

  • Installer Nagios Core avec un seul script, ouvrir son interface web.
  • Lui faire surveiller des machines (hôtes) et des services.

Prérequis : une machine virtuelle Ubuntu 22.04, un utilisateur avec sudo, un accès Internet, le système déjà à jour.

Personnalisation : remplacer prenom-nom par son propre prénom et nom. Pour les noms techniques, écrire en minuscules, sans accent ni espace (exemple : Sami Ben Ali devient sami-benali).

1. Installation automatique

Préparer le système

sudo apt update
sudo apt upgrade
sudo apt install build-essential apache2 apache2-utils php libgd-dev libapache2-mod-php libperl-dev libssl-dev daemon wget
ip a   # relever l'adresse IP de la machine

Créer et lancer le script

Créer install_nagios.sh (contenu en annexe ci-dessous), puis le lancer :

nano install_nagios.sh
sudo bash install_nagios.sh MonMotDePasse

MonMotDePasse devient le mot de passe de l’utilisateur nagiosadmin (par défaut nagios si omis). L’installation dure quelques minutes (Nagios est compilé) ; le script affiche sa progression de [1/7] à [7/7].

Vérifier

sudo systemctl status nagios

Le statut doit afficher active (running). Ouvrir ensuite http://adresse_ip_du_serveur/nagios et se connecter avec nagiosadmin et le mot de passe choisi. Au début, seule la machine locale (localhost) est visible : il faut ajouter les autres machines.

2. Configuration de Nagios

Personnaliser le contact

Le fichier des contacts définit qui est prévenu en cas de problème :

sudo nano /usr/local/nagios/etc/objects/contacts.cfg

Dans le bloc define contact de nagiosadmin, modifier seulement l’alias (prénom et nom) et l’adresse e-mail :

alias           Prénom NOM
email           votre.email@exemple.com

Ne pas changer contact_name : il doit rester nagiosadmin, lié au compte de connexion à l’interface web.

Ajouter une machine à surveiller

sudo nano /usr/local/nagios/etc/servers/host.cfg
define host {
    use                     linux-server
    host_name               pc-prenom-nom
    alias                   PC de Prénom NOM
    address                 192.168.1.100
    max_check_attempts      3
    check_period            24x7
    notification_interval   30
    notification_period     24x7
}
ChampSignification
useModèle de base à réutiliser (linux-server, défini dans templates.cfg).
host_nameNom unique de la machine dans Nagios : pc- suivi du prénom et du nom, en minuscules, sans accent ni espace.
aliasDescription lisible : PC de suivi du prénom et du nom.
addressAdresse IP (ou nom DNS) de la machine.
max_check_attemptsNombre d’échecs de test avant de déclarer la machine en panne.
check_periodPlage horaire des vérifications (24x7 = tout le temps).
notification_intervalMinutes entre deux alertes tant que le problème dure.
notification_periodPlage horaire où les alertes sont autorisées.

Pour une deuxième machine, ajouter un nouveau bloc define host { ... } dans le même fichier, avec un autre host_name et une autre address. Vérifier la syntaxe, puis recharger Nagios :

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl reload nagios

Vérification : dans l’interface, cliquer sur hosts à gauche, le nom de la machine doit apparaître avec le statut UP.

Surveiller un service (exemple PING)

sudo nano /usr/local/nagios/etc/servers/services.cfg
define service {
    use                     generic-service
    host_name               pc-prenom-nom
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}
  • host_name doit être le nom d’une machine déjà définie dans host.cfg.
  • service_description est le nom affiché dans l’interface.
  • check_ping!100.0,20%!500.0,60% utilise le plugin check_ping avec deux seuils : alerte (WARNING) à 100 ms de délai ou 20 % de paquets perdus, critique (CRITICAL) à 500 ms ou 60 %.
sudo systemctl reload nagios

Vérification : dans l’interface, cliquer sur Services à gauche, le service PING doit apparaître en vert (OK).

Annexe : le script install_nagios.sh

#!/bin/bash
# Installation automatique de Nagios Core sur Ubuntu 22.04
# Utilisation : sudo bash install_nagios.sh [mot_de_passe_nagiosadmin]
set -e
export DEBIAN_FRONTEND=noninteractive

NAGIOS_VERSION="4.5.9"
PLUGINS_VERSION="2.4.10"
ADMIN_PASS="${1:-nagios}"
CFG=/usr/local/nagios/etc

if [ "$(id -u)" -ne 0 ]; then
    echo "Erreur : lancez ce script avec sudo."
    exit 1
fi

echo "[1/7] Installation des prérequis..."
apt install -y build-essential apache2 apache2-utils php libgd-dev libapache2-mod-php \
libperl-dev libssl-dev daemon wget

echo "[2/7] Création de l'utilisateur et des groupes..."
id nagios >/dev/null 2>&1 || useradd nagios
getent group nagcmd >/dev/null || groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagios,nagcmd www-data

echo "[3/7] Téléchargement et compilation de Nagios Core $NAGIOS_VERSION..."
cd /tmp
wget -q "https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-$NAGIOS_VERSION/nagios-$NAGIOS_VERSION.tar.gz"
tar -xzf "nagios-$NAGIOS_VERSION.tar.gz"
cd "nagios-$NAGIOS_VERSION"
./configure --with-nagios-group=nagios --with-command-group=nagcmd
make all

echo "[4/7] Installation de Nagios et de l'interface web..."
make install
make install-commandmode
make install-init
make install-config
install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers

echo "[5/7] Installation des plugins Nagios $PLUGINS_VERSION..."
cd /tmp
wget -q "https://nagios-plugins.org/download/nagios-plugins-$PLUGINS_VERSION.tar.gz"
tar -xzf "nagios-plugins-$PLUGINS_VERSION.tar.gz"
cd "nagios-plugins-$PLUGINS_VERSION"
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make
make install

echo "[6/7] Configuration de Nagios et d'Apache..."
mkdir -p $CFG/servers
sed -i 's|^#cfg_dir=/usr/local/nagios/etc/servers|cfg_dir=/usr/local/nagios/etc/servers|' $CFG/nagios.cfg
grep -q '^cfg_dir=/usr/local/nagios/etc/servers' $CFG/nagios.cfg || echo 'cfg_dir=/usr/local/nagios/etc/servers' >> $CFG/nagios.cfg
ln -sf /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/nagios.conf
a2enmod rewrite cgi
htpasswd -bc $CFG/htpasswd.users nagiosadmin "$ADMIN_PASS"

echo "[7/7] Démarrage des services..."
systemctl enable nagios apache2
systemctl restart nagios
systemctl restart apache2

IP=$(hostname -I | awk '{print $1}')
echo ""
echo "Installation terminée."
echo "Interface web : http://$IP/nagios"
echo "Utilisateur : nagiosadmin / Mot de passe : $ADMIN_PASS"