⚠️ Disclaimer
La méthode que je présente ici correspond à ma propre démarche d’apprentissage. Elle peut contenir des approximations ou des erreurs, car j’apprends et je progresse chaque jour un peu plus. Ne prenez donc pas ce que je fais comme une référence absolue, mais plutôt comme un retour d’expérience personnel.
Contexte du Projet
Dans le cadre de mon infrastructure de monitoring basée sur Prometheus et Grafana, j’ai entrepris d’intégrer la surveillance de mon NAS Synology DS732+ via le protocole SNMP v2c. Ce choix s’est imposé naturellement car SNMP est nativement supporté par DSM sans nécessiter l’installation d’agents tiers.
Architecture Mise en Place
L’infrastructure repose sur une stack Docker déployée sur Mac M4 Pro :
┌─────────────────────────────────────────┐
│ Docker Network: monitoring │
│ │
│ ┌────────────┐ ┌──────────────┐ │
│ │ Prometheus │◄─────┤ Grafana │ │
│ │ :9090 │ │ :3000 │ │
│ └─────┬──────┘ └──────────────┘ │
│ │ │
│ ┌─────▼──────┐ │
│ │ SNMP │ │
│ │ Exporter │ │
│ │ :9116 │ │
│ └─────┬──────┘ │
└────────┼────────────────────────────────┘
│
│ SNMP (UDP 161)
▼
┌─────────────┐
│ Synology │
│ DS732+ │
│ 192.168.2.15│
└─────────────┘
Le flux de données s’opère ainsi :
- SNMP Exporter interroge le NAS via SNMP (UDP port 161)
- Les réponses SNMP sont converties en métriques Prometheus
- Prometheus collecte ces métriques toutes les 30 secondes
- Grafana visualise les données stockées dans Prometheus
Configuration SNMP sur le NAS
Activation du Service
La configuration SNMP s’effectue directement dans l’interface DSM :
Panneau de configuration → Terminal & SNMP → Onglet SNMP
Paramètres appliqués :
☑ Activer le service SNMP
Version : ☑ SNMPv1, SNMPv2c service
Communauté : homelab-monitoring
Validation de la Configuration
Test de connectivité SNMP depuis le poste de travail :
| |
Résultat obtenu :
SNMPv2-MIB::sysDescr.0 = STRING: Linux DiskStation 4.4.302+ #69057 SMP
SNMPv2-MIB::sysUpTime.0 = Timeticks: (1234567) 3 days, 10:17:47.89
SNMPv2-MIB::sysName.0 = STRING: DiskStation
Déploiement de SNMP Exporter
Intégration Docker Compose
Ajout du service SNMP Exporter dans le fichier docker-compose.yml :
| |
Problème Rencontré : Configuration SNMP Personnalisée
Lors des premiers tests, SNMP Exporter retournait l’erreur Unknown auth 'homelab_monitoring'. La configuration par défaut de SNMP Exporter utilise la communauté public, or notre NAS était configuré avec homelab-monitoring, ce qui causait l’échec d’authentification.
Pour résoudre ça, j’ai créé un fichier de configuration personnalisé prometheus/snmp-config/snmp.yml :
| |
Cette configuration utilise la syntaxe moderne de SNMP Exporter v0.29.0+. Les anciennes syntaxes avec lookups et overrides ont été supprimées dans les versions récentes.
Après recréation du conteneur :
| |
Le test de connectivité a réussi :
| |
Configuration Prometheus
Job de Scraping SNMP
Configuration du job dans prometheus/prometheus.yml :
| |
Problème Rencontré : Paramètre Auth Manquant
Le target apparaissait DOWN dans Prometheus avec l’erreur error scraping target. L’absence du paramètre auth dans la section params empêchait SNMP Exporter d’utiliser la bonne authentification.
J’ai résolu le problème en ajoutant explicitement la ligne :
| |
Ce paramètre doit correspondre exactement au nom défini dans auths du fichier snmp.yml de l’exporter.
Après rechargement de la configuration :
| |
Le target est passé à l’état UP dans l’interface Prometheus.
Métriques Collectées
Métriques Réseau IF-MIB
Principales métriques disponibles via le module if_mib :
| Métrique | Type | Description |
|---|---|---|
ifInOctets | counter | Octets reçus (cumulatif) |
ifOutOctets | counter | Octets envoyés (cumulatif) |
ifInErrors | counter | Erreurs en réception |
ifOutErrors | counter | Erreurs en émission |
ifInDiscards | counter | Paquets reçus mais jetés |
ifOutDiscards | counter | Paquets émis mais jetés |
ifOperStatus | gauge | État opérationnel (1=UP, 2=DOWN) |
Requêtes PromQL Utilisées
Débit réseau entrant en Mbps :
| |
Débit réseau sortant en Mbps :
| |
Taux d’erreurs réseau :
| |
État des interfaces :
| |
Dashboards Grafana
Dashboard Communautaire
Import du dashboard SNMP Stats (ID Grafana : 11207) pour une visualisation rapide des métriques standard.
Dashboard Personnalisé
J’ai créé un dashboard sur mesure avec trois panels principaux : une vue d’ensemble montrant l’uptime du NAS et le nombre d’interfaces actives, un graphique temporel du débit réseau entrant et sortant (avec les requêtes PromQL appropriées en Mbps), et enfin un dernier panel dédié aux erreurs réseau qui suit les quatre métriques clés (erreurs entrantes, erreurs sortantes, paquets jetés à la réception et à l’émission).
Configuration des Alertes
Règles d’Alerte Implémentées
Fichier prometheus/rules/nas-alerts.yml :
| |
Rechargement de Prometheus :
| |
Vérification dans l’interface Prometheus (onglet Alerts) : les 4 règles apparaissent en état “Inactive”, confirmant leur bon chargement.
Problèmes Techniques Résolus
Configuration SNMP Exporter
La première difficulté majeure s’est présentée immédiatement : l’erreur « Unknown auth ». L’exporter utilise par défaut la communauté public, tandis que notre NAS avait une configuration spécifique. J’ai dû créer un fichier snmp.yml personnalisé. Cette première leçon a mis en évidence l’importance du cycle Docker complet : le volume doit être monté, et le conteneur doit être recréé plutôt que simplement redémarré.
Syntaxe de Configuration Moderne
La deuxième embûche venait de la documentation : de nombreux tutoriels en ligne utilisent les anciennes sections lookups et overrides, incompatibles avec SNMP Exporter v0.29.0+. J’ai dû adopter la syntaxe minimaliste actuelle. Cela m’a appris à toujours consulter la documentation officielle correspondant à la version exacte utilisée.
Paramètre Auth dans Prometheus
Même avec SNMP Exporter correctement configuré, le target restait DOWN dans Prometheus. Le paramètre auth: [homelab_monitoring] s’avérait obligatoire dans la section params de la configuration Prometheus. Cette subtilité de configuration m’a montré l’importance de la correspondance exacte entre les deux systèmes.
Relabel Configs
Comprendre le mécanisme de transformation des labels a nécessité du temps. Les relabel_configs opèrent en trois étapes pour achever le pattern multi-target exporter : transformer l’IP target en paramètre, préserver l’instance dans les métriques, et rediriger vers l’exporter plutôt que vers le target direct.
Résultats Obtenus
Métriques Opérationnelles
L’infrastructure de monitoring SNMP fournit désormais :
- Collecte toutes les 30 secondes
- 15+ métriques par interface réseau
- Latence de scraping < 2 secondes
- Rétention de 30 jours de données
- 4 alertes actives
Dashboards Disponibles
- Dashboard communautaire SNMP Stats (vue globale)
- Dashboard personnalisé avec 3 panels (débit, erreurs, overview)
- Toutes les métriques visualisables en temps réel
Points Techniques à Retenir
Architecture SNMP avec Prometheus
Le pattern utilisé (multi-target exporter) présente plusieurs avantages :
- Un seul conteneur SNMP Exporter pour plusieurs équipements
- Scalabilité horizontale simple
- Configuration centralisée dans Prometheus
- Isolation des protocoles (HTTP pour Prometheus, UDP pour SNMP)
Configuration Moderne de SNMP Exporter
La version 0.29.0+ a simplifié la configuration :
- Suppression des sections
lookupsetoverrides - Configuration minimaliste fonctionnelle
- Moins de risques d’erreurs de syntaxe
Relabel Configs
Le mécanisme de relabeling permet de :
- Transformer l’IP target en paramètre URL
- Préserver l’instance dans les métriques
- Rediriger vers l’exporter au lieu du target
Cette technique s’applique à tous les exporters multi-target (Blackbox, SNMP, etc.).
Conclusion
La mise en place du monitoring SNMP du NAS Synology a nécessité la résolution de plusieurs problématiques techniques, principalement liées à l’authentification SNMP et à la configuration moderne de l’exporter. L’architecture repose sur cinq éléments clés : SNMP v2c activé directement sur le NAS, SNMP Exporter avec une configuration personnalisée adaptée à notre infrastructure, Prometheus avec les relabel configs permettant la redirection multi-target, Grafana avec des dashboards dédiés à la visualisation des métriques réseau, et enfin un système d’alerting robuste pour la détection rapide d’anomalies.
L’ensemble est opérationnel et collecte des métriques fiables toutes les 30 secondes. Cette base servira pour l’intégration d’autres équipements réseau (routeur pfSense, switch MikroTik) utilisant également SNMP.
Configuration testée avec :
- Synology DS732+ (DSM 7.x)
- SNMP Exporter v0.29.0
- Prometheus v2.x
- Grafana v10.x
- Docker Compose v3.8