La Lanterne Rouge

Warning: Geek Inside

Monitoring de connexion ADSL/Fibre avec Speedtest et Prometheus

- Posted in Sans catégorie by

Je sais pas vous, mais moi ce genre d'interfaces ça me m'attire franchement. Pouvoir surveiller tous ces indicateurs, ces courbes, zoomer dedans et tout... c'est mon petit kink.

Donc pour ça, la découverte de Grafana, avec un backend Prometheus (austère mais méchamment efficace) m'a occupé une bonne partie de l'année passée. Ça tombait bien, on avait du temps à perdre.

J'ai donc mis en place des exporters Prometheus sur toutes mes machines et tous les applicatifs possibles ou presque (Node, MySQL, Postgres, Apache, Jitsi, Docker, Rundeck et j'en passe) et avec eux toute une série de dashboards pour surveiller au plus près tous ces éléments.

Et le 6ème jour, j'ai regardé tout ça et je me suis dit que cela était bon. Mais... qu'on pouvait faire mieux. Oui il me manquait encore cette métrique ici, et une autre là. Alors j'ai cherché des exporters qui me permettraient de répondre à ces besoins. Et j'ai commencé à regarder du côté des exporters un peu plus génériques, ou configurables, comme bash-exporter, mais j'ai rapidement remarqué les limites de ces solutions.

La seule solution allait être de créer un nouvel exporter moi-même. En PHP bien sûr.

Du coup, voilà nanawel/prometheus-exphporter (Non c'est pas une coquille, c'est pour faire apparaître "php" dedans. Drôle.)

À l'heure actuelle ça permet entre autres d'exposer les métriques suivantes pour Prometheus :

  • les infos d'une Livebox (nécessite la super lib sysbus) comme l'état du WIFI, les machines connectées et le firmware utilisé
  • les mises à jour de packages disponibles (pour Debian-like et Arch)
  • quelques informations sur des dépôts Borg-Backup comme le volume utilisé total/dédupliqué
  • l'espace occupé par un dossier particulier (via du)
  • le nombre de fichiers contenus dans un dossier (via find)
  • la même chose mais par date

... et donc dernièrement et qui m'a incité à écrire le billet courant : les métriques récupérables par speedtest CLI et qui permettent de surveiller le débit effectif d'une connexion en effectuant des benchmarks Speedtest de manière régulière.

Mis en place il y a un peu plus d'une semaine, cela me permet de confirmer ou non des lenteurs sur la ligne et permet de tracer des graphes comme ci-dessous :

Il y a bien sûr une mise en cache (d'une heure par défaut) pour ne pas lancer de benchmark à chaque appel à /metrics ce qui serait totalement contre-productif. Personnellement je suis même passé à 12h car c'est largement suffisant pour mes besoins.

Cet utilitaire est évidemment sous licence libre, et sera amélioré et complété au fil de mes besoins. L'installation sous Linux est simple et utilise PHP avec son serveur embarqué. Un Makefile permet d'installer rapidement les dépendances via Composer et d'installer un service systemd.

Happy monitoring!