Argos PanoptĂšs : la supervision de sites web simple et efficace
Il y a un nouveau venu parmi les logiciels de supervision : Argos PanoptĂšs !
Loin de la complexitĂ© des Nagios, Centreon, Icinga et autres mastodontes qui font le cafĂ©, Argos PanoptĂšs (on lâappellera Argos dans la suite de ce texte) ne surveille que des sites web, ce qui lui permet dâĂȘtre bien plus simple et lĂ©ger.
Argos a été développé par Alexis Métaireau pour Framasoft dans le cadre de Framaspace (du Nextcloud fourni gracieusement par Framasoft aux associations et collectifs militants).
Framasoft a fait appel Ă un prestataire, faute de temps disponible pour dĂ©velopper nous-mĂȘme lâoutil.
- lien ná” 1 : Site officiel
- lien ná” 2 : Framasoft
- lien ná” 3 : Site dâAlexis MĂ©taireau
- lien ná” 4 : Annonce sur le Framablog
- lien nᔠ5 : Interview des développeurs
- lien ná” 6 : Soutenir Framasoft
Sommaire
Pourquoi cet outil ? Lorsque l'on prĂ©voit de crĂ©er plein dâespace Nextcloud, il semble pertinent de les surveiller.
Et comme Framasoft prĂ©voit de dĂ©ployer jusquâĂ 10 000 espaces, il fallait quelque chose qui tienne la route⊠ce que le Shinken de lâassociation ne permettait pas : trop de sondes Ă exĂ©cuter, trop peu de temps pour le faire et on se retrouve avec des coups de sondes pas assez frĂ©quents, laissant les sites avec des problĂšmes avec de trop longs dĂ©lais de dĂ©tection.
Sans compter que Shinken est en Python 2, qui est obsolÚte depuis déjà bien longtemps.
Le passage Ă une nouvelle solution de supervision complĂšte (nous lorgnons sur Icinga) Ă©tant trop chronophage pour le temps que nous avons Ă lui consacrer pour lâinstant, nous avons prĂ©fĂ©rĂ© partir sur une solution de surveillance de sites web, suivant lâadage UNIX « un logiciel qui fait une seule chose, mais qui la fait bien ».
Mais enfin, y a déjà des outils pour ça !
Bien sĂ»r ! Nous avons testĂ© statping-ng et Uptime Kuma mais avec nos trĂšs nombreux sites Ă surveiller, cela les mettait Ă genoux⊠ou alors câest le navigateur qui ne tenait pas : ces deux solutions affichent sur la page dâaccueil lâĂ©tat de tous les sites Ă surveiller, et avec un historique de leur Ă©tat en plus. Lorsque l'on veut surveiller des centaines de sites avec au moins trois coups de sondes chacun (un pour vĂ©rifier que le site HTTP redirige bien vers la version sĂ©curisĂ©e, un pour vĂ©rifier que la version sĂ©curisĂ©e rĂ©pond bien, et un pour vĂ©rifier lâexpiration du certificat du site), ça fait Ă©normĂ©ment dâappels AJAX au serveur quand on consulte le site et soit câest le serveur qui a du mal, soit câest le navigateur qui peine.
Ainsi est nĂ©e lâidĂ©e du dĂ©veloppement dâune solution qui remplisse notre cahier des charges
Le nom
Argos PanoptĂšs fait rĂ©fĂ©rence au gĂ©ant aux cent yeux de lâantiquitĂ© grecque, « PanoptĂšs » signifiant « celui qui voit tout ».
Le cahier des charges
Il Ă©tait simple mais toutefois complet, rĂ©digĂ© par votre serviteur (Ă©tant adminSys et dĂ©veloppant aussi, jâavais mon idĂ©e sur ce que je voulais dĂ©ployer et ce que jâaurais voulu coder moi-mĂȘme) :
- un langage simple, qui peut attirer du monde pour les contributions : Python ;
- un langage moderne : la cible Ă©tait Python 3.11, Ă savoir la version de Debian Bookworm ;
- le support dâune base de donnĂ©e robuste : PostgreSQL ;
- une architecture agents / serveur, permettant dâajouter des agents pour les coups de sondes au fur et Ă mesure de lâaugmentation des besoins. Ceci pour Ă©viter le goulot dâĂ©tranglement constatĂ© sur Shinken (lâajout de plus dâagents Shinken nâĂ©tant pas possible puisque Python2) ;
- une configuration simple et automatisable : lâinfrastructure de Framasoft Ă©tant gĂ©rĂ©e via Salt, de mĂȘme que la configuration des sondes de Shinken, il Ă©tait vital de pouvoir crĂ©er la configuration des sites Ă surveiller de façon programmatique. Le YAML fut choisi pour cela ainsi que pour sa simplicitĂ© de lecture par un humain ;
- divers moyens de notifications, courriel et Gotify a minima.
Le code
Le code dâArgos est sur la forge logicielle de Framasoft : https://framagit.org/framasoft/framaspace/argos/.
Une suite de tests est exĂ©cutĂ©e en intĂ©gration continue, ainsi que du linting, ce qui permet dâĂ©viter autant que possible les rĂ©gressions et de maintenir un style de code uniforme.
Pour les dĂ©pendances, rien dâexotique (et câest tant mieux !) :
- Click pour l'interface en ligne de commande ;
- FastAPI est le cadriciel qui nous permet d'exposer l'API HTTP ;
- HTTPX est utilisĂ© pour Ă©mettre des requĂȘtes asynchrones dans les agents ;
- Jinja gĂšre la mise en page ;
- Pydantic est utile pour s'assurer que les données correspondent à nos attentes ;
- SQLAlchemy est l'ORM que nous utilisons pour nous connecter Ă notre base de donnĂ©es et lancer des requĂȘtes ;
- Alembic est utilisé pour les migrations de bases de données ;
- Tenacity un petit utilitaire pour réessayer une fonction en cas d'erreur ;
- Uvicorn est l'outil utilisé pour faire tourner notre serveur ;
- Gunicorn est le serveur WSGI HTTP recommandé pour la production.
Pour aider les potentiels contributeurs, une partie du site officiel est dédiée au développement.
LâAPI dâArgos est auto-documentĂ©e : en installant Argos, vous aurez des pages de documentation aux formats Swagger et Redoc.
Le fonctionnement en production
Si Argos a été annoncé sur le Framablog mi-mai 2024, cela faisait déjà plusieurs mois que la version de développement était en production.
Le moins quâon puisse dire, câest quâArgos tient ses promesses ! Il est rapide⊠trĂšs rapide !
Lors du dernier dĂ©marrage Ă vide dâune version de dĂ©veloppement, Argos a lancĂ© ses 2145 tests configurĂ©s Ă une vitesse impressionnante : il ne lui a fallu quâune minute et 15 secondes pour tous les effectuer.
LâAPI prĂ©sentant un point permettant de connaĂźtre le nombre de sondes dans chaque Ă©tat (les classiques ok
, warning
, critical
et unknown
), nous avons ajoutĂ© une sonde Ă notre Shinken pour intĂ©grer les rĂ©sultats dâArgos dans celui-ci.
En effet, avoir un outil dĂ©diĂ©, câest sympa, mais si ça fait une page web de plus Ă consulter, câest enquiquinant. La centralisation de la supervision au sein de Shinken permet de contourner ce problĂšme.
Le futur
Depuis la premiĂšre version et une version de micro-changements, la majeure partie des modifications sâest concentrĂ©e sur lâamĂ©lioration de la documentation, ainsi que sur la simplification de la configuration et de lâinstallation.
Quelques nouvelles fonctionnalités seront de la partie, réduisant quelques frictions rencontrées depuis la mise en production de la derniÚre version.
Les contributions sont les bienvenues (peut-ĂȘtre quelquâun intĂ©grera-t-il les notifications via Apprise ?) đ
One more thing
Framasoft est actuellement en pleine campagne de collecte de fonds dans le cadre de la dĂ©marche de soin de nos services en ligne « Dorlotons DĂ©googlisons » (mais ça, vous le saviez peut-ĂȘtre dĂ©jĂ ).
Merci de nous soutenir si vous le pouvez ! đ
Commentaires : voir le flux Atom ouvrir dans le navigateur