SNMP Web Monitoring Solution for Network Infrastructure
Published:
Introduction au Projet
Dans un environnement réseau moderne, la disponibilité et la performance des équipements sont cruciales. Une défaillance non détectée sur un commutateur (switch) peut paralyser les opérations d’une entreprise. Ce projet vise à répondre à cette problématique en développant une plateforme web de supervision en temps réel pour les équipements réseau, spécifiquement les switchs HP. L’application permet non seulement de visualiser l’état des équipements (ports, température, etc.) via le protocole SNMP mais aussi de recevoir des alertes instantanées sur Telegram en cas d’anomalie. Le tout est présenté sur une interface web dynamique qui se met à jour automatiquement sans nécessiter de rechargement de page et génère des rapports quotidiens pour un suivi à long terme. En centralisant la surveillance et en automatisant les alertes, cette plateforme transforme une gestion réseau réactive (agir après la panne) en une approche proactive, permettant aux administrateurs d’anticiper les problèmes et de minimiser les temps d’arrêt.
Plan du Projet
Étape 1 : Architecture Technologique et Environnement
Étape 2 : Conception de la Base de Données
Étape 3 : Développement du Backend - Le Cœur SNMP
Étape 4 : Développement du Frontend - L’Interface de Supervision
Étape 5 : Système d’Alerting et de Reporting Automatisé
Réalisation du Projet
Étape 1 : Architecture Technologique et Environnement
Le succès de ce projet repose sur une sélection judicieuse de technologies robustes et complémentaires pour le backend, le frontend et l’environnement de test.
Backend
- Protocole SNMP (v2c) :Simple Network Management Protocol est un protocole standard permettant de superviser et de gérer des équipements sur un réseau IP. Dans ce projet il est utilisé pour interroger les switchs et collecter des données vitales grâce à des identifiants uniques appelés OIDs. La fonction snmp2_walk de PHP a été essentielle pour parcourir les OIDs et récupérer des informations telles que l’état des ports, le trafic entrant/sortant, etc…
- Les OIDs (Object Identifiers) : Sont des identifiants uniques utilisés dans le protocole SNMP pour représenter chaque information disponible sur un équipement réseau. Ils fonctionnent comme des adresses hiérarchiques dans une arborescence appelée MIB (Management Information Base). Chaque OID correspond à une donnée spécifique, par exemple l’état d’un port, le trafic entrant ou la description d’un périphérique. Lorsqu’un logiciel ou un script SNMP interroge un switch, il parcourt ces OIDs pour collecter les informations nécessaires à la supervision du réseau.
- Base de Données (MariaDB/MySQL) : Utilisée pour stocker les informations sur les switchs, l’historique des états et le journal des alertes. L’accès est sécurisé via PDO (PHP Data Objects), une interface qui prévient les injections SQL.
Frontend
- HTML/CSS : Pour la structure et le style d’une interface utilisateur moderne et responsive
- JavaScript (avec jQuery & AJAX) :: L’AJAX (Asynchronous JavaScript and XML) est la technologie clé qui rend l’application dynamique. Grâce à jQuery, des requêtes sont envoyées au serveur toutes les 30 secondes pour rafraîchir les données (état des ports, graphiques) sans que l’utilisateur ait à recharger la page, offrant une expérience de supervision en temps réel.
- Chart.js :Une bibliothèque JavaScript puissante pour créer des graphiques interactifs. Elle a été utilisée pour visualiser la répartition des ports (actifs/inactifs) sous forme de diagrammes en anneau et l’historique du trafic sous forme de graphiques en barres.
Environnement de Développement et de Test
- XAMPP :Une pile de distribution Apache locale qui inclut un serveur web (Apache), PHP et une base de données (MariaDB), permettant de simuler un environnement de production pour le développement et les tests.
- PuTTY :Un client SSH et Telnet indispensable pour la configuration initiale du switch HP via son interface en ligne de commande (CLI).
- Matériel Réseau :Les tests ont été menés sur un switch HP A3600-48 v2 SI, connecté à deux PC via des câbles Ethernet pour simuler un réseau local réaliste.
Étape 2 : Conception de la Base de Données
Une structure de base de données normalisée a été conçue pour stocker efficacement les données.
- switches : Contient les informations de base sur les équipements supervisés (ID, adresse IP, nom…).
- historique_ports: Enregistre périodiquement les données collectées via SNMP pour chaque port de chaque switch. C’est cette table qui permet de générer les graphiques d’historique.
- alert_log : Journalise chaque alerte envoyée pour éviter l’envoi de notifications répétitives pour un même événement.
Étape 3 : Développement du Backend - Le Cœur SNMP
Le script principal du backend est le moteur de l’application. Lorsqu’il est appelé via une requête AJAX, il exécute les tâches suivantes :
- Connexion au switch : Se connecte au switch spécifié en utilisant son adresse IP et la communauté SNMP configurée.
- Récupération des données via OIDs : Utilise la fonction
snmp2_walk
pour interroger une série d’OIDs standards et propriétaires (spécifiques au Switch utilisé) afin de récupérer :- L’état opérationnel de chaque port (Up, Down)
- La température interne
- L’état des ventilateurs et des alimentations
- Les compteurs de trafic (octets entrants et sortants)
- Traitement et formatage JSON : Traite et formate ces données en JSON; un format léger et universel, avant de les renvoyer au frontend pour affichage.
- Détection des changements : Compare l’état actuel des ports avec l’état précédent pour détecter les changements (ex: un port qui passe de ‘Up’ à ‘Down’).
Étape 4 : Développement du Frontend - L’Interface de Supervision
L’interface utilisateur a été décomposée en plusieurs modules pour une navigation intuitive :
- Tableau de Bord (accueil.php) : La page principale qui offre une vue d’ensemble de l’état du réseau. Des graphiques Chart.js montrent la répartition des ports pour chaque switch et une section met en évidence les alertes récentes.
- Gestion des Switches (gestion_switches.php) : Une interface CRUD (Create, Read, Update, Delete) complète pour ajouter, modifier ou supprimer les switchs à superviser.
- État Détaillé des Ports (etat_ports.php) : Permet de sélectionner un switch et d’afficher un tableau détaillé de l’état de chacun de ses ports en temps réel.
- Historique (historique.php) : Affiche des graphiques sur l’évolution du trafic réseau, permettant une analyse des tendances sur le long terme.
Étape 5 : Système d’Alerting et de Reporting Automatisé
Pour garantir une proactivité maximale, deux mécanismes automatisés ont été mis en place :
- Alertes Telegram : Si le backend détecte qu’un port est passé à l’état “Down”, il déclenche une fonction qui envoie un message formaté à un canal Telegram via l’API du bot Telegram. Le message contient l’adresse IP du switch, le nom du port et l’heure de l’incident.
- Rapports PDF Quotidiens : Un script (
generate_report.php
), exécuté chaque jour via une tâche planifiée (CRON sur Planificateur de tâches sur Windows) utilise la bibliothèque TCPDF pour générer un rapport PDF. Ce rapport résume l’état du réseau, les alertes des dernières 24 heures et est automatiquement envoyé sur le même canal Telegram.
Conclusion
Ce système de supervision réseau offre une solution complète pour le monitoring des switches via SNMP. Il combine une interface web intuitive avec des fonctionnalités robustes de collecte de données, de visualisation, de gestion des alertes et de génération de rapports.
Au-delà de sa fonctionnalité actuelle, ce projet sert de fondation solide pour de futures améliorations :
- Migration vers SNMPv3 : Pour garantir un niveau de sécurité adapté aux environnements de production.
- Tableau de Bord Avancé : Intégration de seuils d’alerte personnalisables et de graphiques prédictifs basés sur l’historique.
- Support Multi-vendeurs : Étendre la compatibilité à d’autres marques d’équipements (Cisco, Juniper, etc.) en implémentant le système de mapping d’OIDs.
- Conteneurisation : Empaqueter l’application avec Docker pour simplifier le déploiement et assurer la cohérence des environnements.