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
}
| Champ | Signification |
|---|---|
use | Modèle de base à réutiliser (linux-server, défini dans templates.cfg). |
host_name | Nom unique de la machine dans Nagios : pc- suivi du prénom et du nom, en minuscules, sans accent ni espace. |
alias | Description lisible : PC de suivi du prénom et du nom. |
address | Adresse IP (ou nom DNS) de la machine. |
max_check_attempts | Nombre d’échecs de test avant de déclarer la machine en panne. |
check_period | Plage horaire des vérifications (24x7 = tout le temps). |
notification_interval | Minutes entre deux alertes tant que le problème dure. |
notification_period | Plage 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_namedoit être le nom d’une machine déjà définie danshost.cfg.service_descriptionest le nom affiché dans l’interface.check_ping!100.0,20%!500.0,60%utilise le plugincheck_pingavec 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"