Il y a quelques mois, naviguant sur les Internets, j’ai remarqué une soudaine perte de ma connexion Internet. À peine le temps d’en trouver l’origine, que la connexion revenait. L’histoire aurait pu s’arrêter là, mais des incidents similaires se sont répétés, tout du moins, lorsque je m’en rendais compte. J’ai pu déterminer d’où venait le souci : ma borne Internet perdait sa connexion, mais après quelques minutes seulement, tout revenait en ordre. Alors que j’avais commencé à historiser manuellement ces incidents, prêt à me plaindre à mon fournisseur d’accès, je me suis rendu compte que je passais sûrement à côté d’incidents se produisant lorsque je n’utilisais pas Internet, ou que je n’étais pas chez moi.
Tableau de bord de l’outil Connectivity.
C’est ainsi que j’ai mis en place une surveillance automatisée de ma connexion Internet, depuis l’intérieur de mon réseau, avec un Raspberry Pi. Toutes les cinq minutes, un script interroge trois services pour vérifier la connexion vers l’extérieur, et un tableau de bord mensuel permet de visualiser la disponibilité, la latence, et les incidents. Le code source est disponible dans le dépôt Connectivity sur GitHub.
Installation
Il est nécessaire d’avoir un appareil connecté en permanence pour surveiller le réseau. De mon côté, j’ai utilisé un Raspberry Pi, mais n’importe quelle machine avec une distribution Debian ou similaire fait l’affaire. Le script nécessite bash, ping et awk. Pour afficher le tableau de bord, il faut avoir PHP et un serveur web.
Récupération des sources
Le plus simple est de récupérer la dernière version sur GitHub, et de placer le dossier décompressé à la racine de votre serveur web. Dans la suite, on considère que le dossier connectivity est placé dans /var/www/html/.
Une autre option, si vous avez Git installé sur la machine, est de cloner le dépôt.
Configuration
On s’assure que le script est bien exécutable :
sudo chmod +x /var/www/html/connectivity/check.sh
Pour l’exécuter toutes les cinq minutes, on va ajouter une planification CRON :
Pour en savoir plus, ou si vous avez une installation différente, vous pouvez vous référer à la documentation (en anglais).
Résultats
Une fois la première exécution effectuée, on peut se rendre à l’adresse http://<your-server>/connectivity pour visualiser les résultats. La page se recharge automatiquement toutes les cinq minutes.
Si l’on veut accéder aux résultats bruts, ils sont stockés au format CSV dans le sous-dossier logs.
L’outil a été développé avec l’aide de Claude, au niveau D1 sur l’échelle DALIA.