Pourquoi mon UDM bat tous les exporters Docker sur le speedtest
Trois mois à essayer de monitorer mon débit WAN depuis un conteneur. Résultat : le chiffre le plus fiable venait déjà de la box.
J’ai passé trois mois à brancher des exporters speedtest dans Prometheus. Image
officielle Ookla, fork communautaire, wrapper Python maison qui tapait sur
librespeed, j’ai tout essayé. Le dashboard Grafana avait fière allure : courbe
download, courbe upload, latence, jitter, le tout scrapé toutes les 15 minutes
depuis un conteneur sur mon NUC.
Sauf que les chiffres étaient faux.
Le symptôme
4 Gb/s annoncés par l’opérateur. Mon exporter me sortait entre 800 Mb/s et 1.2 Gb/s, jamais au-delà. J’ai d’abord accusé le câble, puis le switch, puis Docker, puis la NIC du NUC. J’ai fini par sortir un laptop, le brancher en direct sur le port LAN de l’UDM, et là : 3.8 Gb/s. Propre.
Le problème n’était pas le réseau. C’était le point de mesure.
Ce que fait vraiment un exporter dans un conteneur
Un conteneur Docker sur un hôte Linux passe par le bridge docker0, qui passe
par le kernel de l’hôte, qui passe par la NIC de l’hôte, qui passe par le
switch, qui passe par l’UDM. À chaque saut vous perdez soit en débit soit en
overhead CPU. Sur un lien 1 Gb/s ça se voit à peine. Sur un lien 4 Gb/s
symétrique, vous plafonnez bien avant le WAN.
Et surtout : le test Ookla lancé depuis un conteneur choisit son serveur miroir en fonction de l’IP source vue côté serveur. Avec une NIC grand public et un MTU mal réglé, vous tapez sur un miroir à 600 km qui bride.
Ce que fait l’UDM
L’UDM embarque son propre client speedtest (ubnt-tools speedtest) qui tourne
directement sur le CPU du routeur, bypasse le bridge Docker de votre host, et
surtout choisit un serveur Ookla très proche — typiquement le miroir régional
du FAI lui-même. Résultat : le chiffre collé au débit WAN réel.
La commande qui m’a fait gagner trois mois :
ssh root@udm "ubnt-tools speedtest" | jq
Sortie JSON propre, exploitable directement. J’ai branché ça dans un script
bash côté host, qui écrit dans un fichier .prom lu par le node_exporter
en mode textfile collector. Trois lignes de code, une valeur fiable toutes
les 30 minutes.
Ce que ça m’a appris
Quand vous monitorez du réseau, mesurez depuis l’équipement qui fait le réseau. Pas depuis un conteneur qui traverse trois couches d’abstraction pour atteindre la fibre.
Les exporters Docker sont géniaux pour tout ce qui est applicatif. Dès que vous touchez à du bas-niveau — débit WAN, latence inter-VLAN, perte de paquets — remontez d’un cran. L’outil intégré au routeur ou au switch bat quasi systématiquement le conteneur.
Le dashboard Grafana n’a pas changé. Juste la source de vérité derrière.