Des nouvelles d’Argos Panoptès, la solution de supervision de sites web simple et efficace

Cela fait déjà plus de 8 mois que nous avons annoncé la sortie de la première version d’Argos Panoptès, notre logiciel de supervision dédié aux sites web, sur le Framablog et il est temps de faire un petit point d’étape.

Testé sur le champ de bataille

Si nous avions fait développer Argos, c’était évidemment pour l’utiliser ! Dans le cadre de Framaspace, nous savions que nous allions devoir surveiller un grand nombre de sites web. En effet, outre nos services classiques, il fallait pouvoir vérifier le bon fonctionnement de toutes les instances Nextcloud déployées, et comme nous prévoyons d’en héberger 10 000, ça en fait des sites !

La bonne tenue du service

Nous sommes passés d’un peu plus de 1 000 espaces Framaspace en mai dernier à près de 1 700 aujourd’hui, sans compter nos quelques centaines d’autres sites à surveiller (entre les services, les sites vitrines, les services avec plusieurs instances comme les pads, les services en test sur Framalab). On peut se dire que ça ne fait pas une grosse différence, mais sachant que d’autres solutions de supervision (comme statping-ng et Uptime Kuma que nous avions testés) ne supportent pas quelques centaines de sites…

Et surtout, nous avons multiplié les sondes ! Vous le verrez plus bas, nous avons ajouté de nouvelles capacités de supervision à Argos, ce qui nous permet de surveiller plusieurs aspects d’un même site, là où les tests étaient plus basiques auparavant.

Ainsi, pour plus ou moins 700 sites en plus à surveiller, nous sommes passés de 1 986 tests en mai 2024 à 5 585 tests au 20 novembre de la même année, 11 654 tests au 25 novembre (5 jours plus tard !), 26 584 tests au 28 janvier 2025 ! Et ça tient formidablement bien ! Nous n’avons pas dû ajouter d’agent supplémentaire, la base de données ne couine pas, nous sommes alertés très rapidement en cas de défaillance d’un site… Bref, tout marche bien navette 🙂

Une configuration automatisable et automatisée

Un des points importants du cahier des charges d’Argos était d’avoir une configuration facilement lisible (et écrivable) pour un humain, mais surtout automatisable, à savoir pouvoir générer cette configuration par un script ou tout autre moyen informatique. Un des outils testé avant de partir sur un nouveau logiciel ne permettait, pour sa configuration, que l’usage d’une API HTTP (utilisable via une interface web, et qui ne convenait pas très bien pour automatiser complètement le processus de configuration), ce qui n’était pas bien pratique.

La configuration étant en YAML, c’était chose entendue. Un script Python, lisant les Pillars Salt où nous déclarons nos serveurs, les sites qu’ils hébergent et les instances Framaspace déployées, nous permet de générer la configuration d’Argos. Il nous a suffit de l’utiliser dans une recette Salt, elle-même appelée par Hermès, l’agent de manipulation des espaces Framaspace, après l’exécution de sa liste de travaux (ajout ou suppression d’espace, changement de suite office…) pour qu’Argos ait une liste de sites à superviser toujours à jour, sans aucune intervention de notre part.

Un flux de travail très satisfaisant

Ne parlons pas de la configuration d’Argos, ce sujet ayant été traité ci-dessus.

Qu’en est-il de l’utilisation d’Argos au quotidien ? Et bien celui-ci s’insère fort bien dans notre infrastructure de supervision existante :

il utilise le mail et Gotify pour nous alerter des problèmes. Gotify est un service (libre, que nous hébergeons nous-même, cela va de soi) qui permet d’envoyer et recevoir des messages. Si on peut avoir un client Gotify sur son téléphone, c’est plutôt via son client web que nous l’utilisons. Lorsqu’Argos envoie un message au serveur Gotify, une notification s’affiche sur mon bureau, me permettant de voir les alertes (et les rétablissements) en temps réel ;

n’étant pas devant mon écran 24 heures sur 24, je peux toujours consulter les mails ou les messages sur l’interface web de Gotify. Mais pour savoir que je dois consulter ces messages du passé, j’ai créé une commande pour servir de sonde Nagios, utilisée dans notre service de supervision généraliste (mais vieillissant), Shinken. Couplé à un petit gadget nommé BlinkStick strip et un script de mon cru, je peux observer l’état de la supervision simplement en jetant un œil en haut de mon écran.

En résumé : Argos est très malléable et peut s’insérer dans plus ou moins n’importe quel manière de travailler.

De nombreuses évolutions ces six derniers mois

Lors de notre article de mai, Argos était en version 0.1.1. Depuis, pas moins de 14 nouvelles versions sont sorties, dont 6 que l’on peut qualifier de majeures. Nous en sommes aujourd’hui à la version 0.7.3.

Parmi les améliorations notables, on peut noter :

la génération d’un fichier d’exemple de configuration, pratique pour une première installation : il n’y a plus qu’à le modifier, et en plus il est auto-documenté ;

un système d’authentification intégré (fini l’authentification HTTP), ainsi que l’usage possible d’un serveur LDAP ;

la possibilité toutefois de laisser un accès anonyme à tout ou partie d’Argos si on le souhaite ;

une commande pour être averti si aucun agent ne s’est connecté depuis longtemps (ce qui évite d’avoir un Argos qui dit que tout est OK avec des informations datant de Mathusalem) ;

une commande pour tester l’envoi de mails, pour valider les paramètres de configuration mail du logiciel ;

une commande pour tester l’envoi de messages Gotify ;

une commande qui peut être utilisée pour une sonde Nagios ;

l’ajout d’Apprise comme moyen d’envoyer des notifications. Apprise est un véritable couteau suisse de la communication, qui peut être utilisé pour envoyer des messages par mail, SMS, Mattermost, Mastodon et plein d’autres protocoles libres ou non ;

l’ajout de nombreux nouveaux types de sondes, permettant aisément :

de s’assurer de la correspondance partielle ou complète d’un fichier JSON avec ce qu’on attend de lui ;

de s’assurer de la présence ou de la correspondance d’en-têtes HTTP attendues ;

de s’assurer que le code de statut HTTP retourné par le site correspond à l’un des codes attendus (on ne pouvait auparavant que tester une correspondance avec un seul code de statut) ;

d’utiliser des expressions rationnelles dans certains types de tests (sur du JSON, des en-têtes et le corps de la réponse du site) ;

de s’assurer de la redirection de la version HTTP vers la version HTTPS du site (il fallait auparavant déclarer les deux versions du site dans le fichier de configuration d’Argos)

une retentative immédiate de requête en cas d’erreur httpx.ReadError (pour éviter les hoquets du réseau) ;

la possibilité d’attendre plusieurs états non conformes à ce qui est attendu avant d’émettre une notification (pour éviter les hoquets de service et les problèmes temporaires) ;

la possibilité de choisir une fréquence de sonde inférieure à la minute ;

les sondes peuvent maintenant tester les sites en IPv4 ou en IPv6 (par défaut, sans configuration, Argos teste les deux) ;

les requêtes identiques sont maintenant mutualisées : au lieu de faire deux requêtes pour tester le code de retour et le contenu HTML d’une même page, Argos n’en fera qu’une seule ;

la possibilité d’envoyer des données dans les requêtes des sondes (pour tester une authentification, par exemple).

D’autres évolutions à venir…

Mais moins ! Argos en est à un point qui nous convient très bien. Des idées d’évolutions sont là, mais rien d’aussi nécessaire que les évolutions évoquées ci-dessus.

Bien évidemment, nous continuerons à chouchouter ce logiciel, et à le maintenir, mais Framasoft a un carnet de bal bien rempli pour l’année à venir, et nous devons placer nos points d’énergie là où nous en avons le plus besoin.

Soutenez Framasoft !

Que ce soit pour nos services, les logiciels que nous produisons (y a pas qu’Argos, très loin de là !), nos interventions auprès du public ou juste parce qu’on fait des mèmes trop stylés, qui ont encore plus la classe que Georges Abitbol, n’hésitez pas à nous faire un petit don sur notre page de soutien pour que nous puissions continuer nos actions 🙂
Ce don est défiscalisable en France à hauteur de 66 % (si vous payez des impôts).