❌

Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraĂźchir la page.

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.

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 !

Anakin : « J’ai besoin d’un logiciel de supervision Â». Padme, tout sourire : « Donc tu vas en prendre un qui existe ? Â». Anakin ne dit rien et la regarde avec un rictus. Padme, inquiĂšte : « Tu vas en prendre un qui existe, hein ? Â»

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.

Quelqu’un susurre « PostgreSQL Â» Ă  l’oreille d’une autre personne, on voit un bras couvert de chair de poule

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.

Capture d’écran de la page de statut d’Argos

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

❌