Déploiement et Configuration de LibreNMS

🚀 Déploiement de LibreNMS

Contexte

Installation de A à Z d'un serveur de supervision réseau centralisé (LibreNMS) sur Linux (Debian/Ubuntu), suivie de l'ajout d'équipements hétérogènes (Cisco, pare-feux Stormshield, serveurs Windows).


🏗️ Phase 0 : Installation de LibreNMS (Prérequis)

L'installation de LibreNMS repose sur une pile standard (Serveur Web, PHP, Base de données MariaDB). Voici les grandes étapes de l'installation initiale :

1. Préparation du système et de l'utilisateur

Bash

# Ajout de l'utilisateur système dédié
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"

# Téléchargement de l'application depuis Github
cd /opt
git clone https://github.com/librenms/librenms.git
chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms

# Installation des dépendances PHP (Composer)
su - librenms -c "./scripts/composer_wrapper.php install --no-dev"

2. Création de la Base de Données (MariaDB)

Il faut créer une base de données dédiée et un utilisateur avec les bons droits :

SQL

CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'MOT_DE_PASSE';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit

3. Installation Web finale

Une fois le serveur web (Nginx ou Apache) configuré pour pointer sur /opt/librenms/html, l'installation se termine via l'interface graphique :

  • Accéder à http://IP_DU_SERVEUR
  • Renseigner les identifiants de la base de données.
  • Créer le premier compte Administrateur de LibreNMS.

🛠️ Phase 1 : Résolution des erreurs post-installation (Core)

Suite à l'installation graphique, la commande ./validate.php lève souvent des erreurs liées à l'architecture. Voici comment les corriger pour un serveur unique (Standalone) :

  • Conflit Cron vs Scheduler : Transition vers le nouveau planificateur librenms-scheduler.timer.
  • Désactivation de RRDcached : Désactivé car inutile hors architecture multi-serveurs (Distributed Polling).
  • Problème de permissions : Réinitialisation des droits (ACL) sur les dossiers de stockage.

Commandes de résolution (Cheatsheet)

Bash

# Forcer le rechargement des services Linux
systemctl daemon-reload

# Activer et démarrer le Scheduler LibreNMS (Pilote automatique)
systemctl enable --now librenms-scheduler.timer

# Désactiver le mode Poller Distribué (erreur rrdcached)
su - librenms -c "./lnms config:set distributed_poller false"

# Réparer les permissions des dossiers (ACL)
chown -R librenms:librenms /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

📡 Phase 2 : Ajout des équipements (SNMP)

Le protocole principal utilisé pour la supervision est le SNMP v2c (Port de destination : UDP 161). La communauté SNMP (mot de passe) choisie pour le labo est : Berlin.

1. Switch Cisco (192.168.32.181)

  • Statut : 🟢 Actif
  • Ajout direct via l'interface web. Détection automatique du modèle (Cisco Small Business) et génération des graphiques 100% fonctionnelles.

2. Serveurs & Clients Windows (ex: 192.168.32.185)

  • Statut : 🟢 Actif
  • Configuration de la Sécurité locale (services.msc) :
    • Onglet Sécurité > Droits restreints en Lecture Seule.
    • Onglet Sécurité > Filtrage IP activé : Seule l'IP du serveur LibreNMS (192.168.32.178) est autorisée à interroger le service.
Astuce pour Windows 10/11

Le service SNMP n'est plus installé par défaut. Il faut l'ajouter via une invite de commande PowerShell (en tant qu'Administrateur) :

Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"

3. Pare-feux Stormshield (ex: 192.168.32.182 & 172.16.32.254)

  • Statut : 🟢 Actif
  • Résolution du Timeout SNMP (Aucune réponse du pare-feu) :
    1. Filtrage (Règle de Pare-feu) : La règle entrante (In) vers le pare-feu limitait le trafic à ICMP (Ping). Modification pour autoriser Any (ou spécifiquement le port snmp en UDP 161).
    2. Communauté : Vérification stricte de la casse. La communauté dans LibreNMS (Berlin) doit correspondre exactement à l'agent SNMP du pare-feu.
  • Résolution de l'erreur "Duplicate sysName" (Lors de l'ajout du 2ème pare-feu) :
    • Lors de l'ajout d'un nouvel équipement cloné (ou avec le même numéro de série par défaut), LibreNMS bloque l'ajout.
    • Solution appliquée côté serveur Linux pour autoriser les doublons de nom d'hôte : Bash
      su - librenms -c "./lnms config:set allow_duplicate_sysName true"
      

⚙️ Commandes Utiles (Maintenance au quotidien)

Action Commande (à taper en root)
Lancer un diagnostic santé complet su - librenms -c "./validate.php"
Forcer l'interrogation immédiate d'un équipement su - librenms -c "./poller.php -h <ADRESSE_IP>"
Forcer l'interrogation avec affichage des erreurs (Debug) su - librenms -c "./poller.php -h <ADRESSE_IP> -d"
Vérifier si le pilote automatique fonctionne systemctl status librenms-scheduler.timer