Ăa a mis un peu de temps (Câest ce qui arrive quand un dev backend travaille sur du front), mais ça y est, PandApache3.4 est disponible ! Release
Cette nouvelle version apporte beaucoup de nouveautés que nous allons voir ensemble maintenant.
AprĂšs la version 3.3, qui Ă©tait trĂšs axĂ©e sur la partie administration, PandApache continue sur le chemin dâĂȘtre un serveur web fait pour et par un SRE. Pas de fonctionnalitĂ©s pour les utilisateurs finaux, mais juste pour nous, les administrateurs ! Au programme : tĂ©lĂ©mĂ©trie, monitoring et opĂ©rations dâadministration simplifiĂ©es.
Câest parti !
Architecture modulaire
Pour un développement et une administration plus simples, le service PandApache3 est maintenant découpé en modules. Trois précisément au moment de cette version :
- Le module Web
- Le module Admin
- Le module Télémétrie
Le module Web est tout simplement le cĆur de PandApache, il sâagit du module qui sert Ă Ă©couter sur le port 80, câest le module qui permet de rediriger chaque requĂȘte HTTP vers la bonne ressource.
Le module Admin nâest pas nouveau, câest toujours le deuxiĂšme service web qui tourne par dĂ©faut sur le port 4040 et qui permet dâexĂ©cuter des endpoints afin de rĂ©aliser des tĂąches dâadministration, comme arrĂȘter ou redĂ©marrer le serveur.
Le module TĂ©lĂ©mĂ©trie, lui, est nouveau. On en parlera un peu plus tard, mais câest un module qui permet de recueillir en temps rĂ©el des informations sur votre systĂšme afin de sâassurer par exemple que votre systĂšme hĂŽte a toujours assez de mĂ©moire, assez de CPU, vĂ©rifier les Ă©critures sur le disque, etc.
Cette nouvelle architecture est trĂšs importante pour plusieurs raisons :
- Simplifier grandement le développement dans le futur grùce à cette approche plus modulaire.
- Diagnostiquer des problÚmes plus finement, notamment grùce aux logs séparés. Vous pouvez mettre le module Web en mode debug et garder les autres en mode info ou erreur pour ne pas polluer vos logs.
- En cas de problĂšme sur un module, il peut simplement ĂȘtre dĂ©sactivĂ©, tout en continuant Ă profiter des autres modules.
Ces modules sont indĂ©pendants et peuvent donc ĂȘtre activĂ©s ou dĂ©sactivĂ©s comme vous le souhaitez.
En vrai, câest un peu bĂȘte dâactiver le module TĂ©lĂ©mĂ©trie sans le module Admin par exemple, car vous nâaurez pas accĂšs aux endpoints pour recueillir les infos de tĂ©lĂ©mĂ©trie. Et ça serait trĂšs bizarre de ne pas avoir de module Web sur un serveur web, mais aprĂšs vous faites ce que vous voulez, hein.
Par contre, vous pouvez trĂšs bien nâavoir que le module Web, ou que le module Web et Admin. Les endpoints de tĂ©lĂ©mĂ©trie ne fonctionneront pas, mais le reste marchera sans problĂšme.
Ils ont aussi leur propre fichier de log, ce qui permet un troubleshooting plus efficace, en plus d'avoir leur propre niveau de log.
Voici un exemple de la configuration des modules :
<Module Telemetry>
ModuleLogLevel error
enable true
ModuleLogFile telemetry.log
</Module>
<Module Web>
enable true
ModuleLogLevel debug
ModuleLogFile web.log
</Module>
<Module Admin>
enable true
ModuleLogFile admin.log
</Module>
Entre nous :
le serveur lui-mĂȘme est visible comme un module, on peut donc avoir dans les logs des entrĂ©es qui viennent du module « Serveur ». Câest tout simplement le processus principal qui lance tous les autres modules et lui ne peut bien sĂ»r pas ĂȘtre dĂ©sactivĂ©.
Toujours entre nous :
La tĂ©lĂ©mĂ©trie Ă©tant quelque chose de trĂšs spĂ©cifique Ă lâOS, mais aussi Ă la langue, elle ne fonctionne que sur Windows. Cependant, le gros du travail est fait pour pouvoir itĂ©rer sur cette premiĂšre base de modules et permettre dans le futur un monitoring plus large sur les diffĂ©rents systĂšmes.
Télémétrie
Vous le savez, la tĂ©lĂ©mĂ©trie pour assurer la fiabilitĂ© dâun service est essentielle, aussi bien pour le service lui-mĂȘme que pour son hĂŽte. Câest pourquoi un nouveau endpoint /admin/monitor a vu le jour. Sous ce endpoint, vous allez pouvoir retrouver plusieurs mĂ©triques afin de vĂ©rifier le bon fonctionnement de votre service et de votre systĂšme. Retrouvez notamment les endpoints suivants :
/monitor/cpu-
/monitor/availablememory -
/monitor/diskread -
/monitor/diskwrite -
/monitor/diskqueue -
/monitor/gcheapsize
Et d'autres encore.
Ces endpoints vous permettent de connaßtre en temps réel les valeurs de votre systÚme correspondant à la métrique associée.
Voici par exemple le résultat du endpoint : http://127.0.0.1:4040/admin/monitor/cpu : 72,80516052246094. Correspondant à la valeur actuelle du CPU.
Bien sûr, cette métrique change à chaque fois. Voici par exemple 3 valeurs différentes obtenues à la suite :
72,80516052246094
64,66727752685547
55,4402359008789
Pour ne pas demander à votre systÚme de monitoring de venir récupérer chaque nouvelle valeur chaque seconde. Il y a un dernier endpoint fonctionnant avec un paramÚtre: /monitor/metric.
Le paramĂštre name peut ĂȘtre utilisĂ© avec les valeurs suivantes :
-
CpuUsagePercentage -
AvailableMemoryMB -
DiskReadBytesPerSecond -
DiskWriteBytesPerSecond -
DiskQueueLength -
GCCollectionCount -
GCHeapSizeBytes
Ce endpoint renverra, contrairement aux autres, une réponse au format JSON :
[{"Key":"2024-12-01T23:57:30.1295087+02:00","Value":57.67658710479736},
{"Key":"2024-12-01T23:57:38.7241797+02:00","Value":59.110374450683594},
{"Key":"2024-12-01T23:58:08.2192014+02:00","Value":62.357760747273765},
{"Key":"2024-12-01T23:58:12.4449679+02:00","Value":54.44178104400635},
{"Key":"2024-12-01T23:58:21.103619+02:00","Value":65.64530436197917},
{"Key":"2024-12-01T23:58:21.1044157+02:00","Value":76.43288993835449},
{"Key":"2024-12-01T23:58:29.665167+02:00","Value":64.24466037750244},
{"Key":"2024-12-01T23:58:59.2308917+02:00","Value":74.4074338277181},
{"Key":"2024-12-01T23:59:03.3638932+02:00","Value":78.21070289611816},
{"Key":"2024-12-01T23:59:11.9931579+02:00","Value":73.42640749613444},
{"Key":"2024-12-01T23:59:11.993631+02:00","Value":84.76824760437012},
{"Key":"2024-12-01T23:59:20.7471495+02:00","Value":92.40722846984863},
{"Key":"2024-12-01T23:59:29.3142203+02:00","Value":65.4045352935791}]
Cela permet dâobtenir plusieurs valeurs sur un temps plus long.
Entre nous :
chaque métrique est capturée toutes les 30 secondes en faisant une moyenne des valeurs obtenues, et les 10 derniÚres métriques vous sont renvoyées ensuite sous un format qui permet facilement de visualiser l'information sur un graphique.
La console dâadministration
Souvenez-vous, lors de la prĂ©cĂ©dente version, la 3.3, nous expliquions que des endpoints administratifs pouvaient ĂȘtre utilisĂ©s pour administrer facilement, de maniĂšre programmatique, un ou plusieurs services PandApache3, mais aussi pour construire une console dâadministration si nous le souhaitions.
Câest dĂ©sormais chose faite avec la version 3.4, bienvenue dans la console dâadministration de PandApache !
Il nây a rien de plus dur et chiant pour un dev backend que de faire une interface graphique, alors je remercie chaleureusement lâĂ©quipe d'AdminLTE pour leur template de console dâadministration. Câest leur travail qui a Ă©tĂ© repris pour rĂ©aliser une console fonctionnelle et vous allez voir, que leur template envoie du pĂątĂ© !
La console dâadministration dispose, pour le moment, de 4 sous-sections :
Status :
Une page pour du troubleshooting rapide. Elle permet de connaĂźtre le statut de votre service, ainsi que dâavoir un bref historique des derniers logs, dont le format a dâailleurs Ă©tĂ© retravaillĂ©.
En plus de lâinformation du module qui emet les logs, vous avez Ă©galement son thread ID. Toute la partie gestion de tache de PandApache a Ă©tĂ© revue.
Health :
Une page avec les métriques de PandApache. Comme vu dans la partie télémétrie, les métriques sont maintenant disponibles via API. Nous en avons donc fait un joli dashboard pour voir en temps réel ce qui se passe.
(Encore une fois, merci à AdminLTE pour leur travail qui a permis une intégration assez facile !)
Management :
Cette page permet dâeffectuer des opĂ©rations sur le service PandApache3, et vous allez voir quâil nây a pas beaucoup de limites Ă ce que vous pouvez y faire !
Il y a bien sĂ»r les opĂ©rations de base qui Ă©taient dĂ©jĂ implĂ©mentĂ©es : Recharger la configuration, redĂ©marrer le service ou lâarrĂȘter.
Mais vous pouvez aussi maintenant avoir des scripts personnalisés exécutés directement par le service !
Les scripts exécutables sont ceux présents dans votre dossier admin. Nous listons tous les scripts PowerShell ou Shell selon la plateforme.
Vous pouvez, via un nouveau endpoint, les exécuter et obtenir le résultat du script.
Avant de faire une syncope en pensant quâil est possible dâexĂ©cuter du code Ă distance, sachez que cette option est bien sĂ»r dĂ©sactivable dans la configuration. Mais les vrais savent Ă quel point câest une fonctionnalitĂ© importante pour la bonne maintenance dâun service.
Configuration :
Enfin, la derniĂšre page vous affiche la configuration actuelle au format JSON.
Bien que le fichier de configuration au format JSON ne soit pas encore implémenté, cela vous donne un avant-goût du futur : plus de formats de configuration supportés et une gestion de la configuration et de ses changements facilitée.
_Entre nous : _
LâexĂ©cution des scripts et leurs rĂ©sultats est, pour le moment, synchrone. Ce nâest pas idĂ©al, notamment car certains scripts peuvent ĂȘtre longs Ă sâexĂ©cuter. Un systĂšme asynchrone avec un task ID qui vous sera renvoyĂ© pour connaĂźtre lâĂ©tat de votre script va ĂȘtre proposĂ© dans le futur, toujours pour faciliter au mieux lâadministration du service.
Pour finir
CâĂ©tait une prĂ©sentation rapide des nouvelles fonctionnalitĂ©s clĂ©s de PandApache 3.4. JâespĂšre que ce tour dâhorizon vous a plu. Cette nouvelle version vient avec, bien sĂ»r, plein de changements non visibles (gestion des logs, gestion des threads, etc.), mais bien rĂ©els et qui seront le sujet de futurs articles de blog plus techniques, oĂč nous nous concentrerons sur une problĂ©matique Ă la fois (sinon ce blog post serait beaucoup trop long !).
Comme pour toute nouvelle version, il faut sâattendre Ă quelques corrections mineures dans les prochains jours, lorsque de nouveaux problĂšmes seront dĂ©tectĂ©s au fur et Ă mesure du dĂ©ploiement sur diffĂ©rentes configurations.
Suivez mes aventures sur Bluesky @pykpyky.bsky.social pour rester informĂ© de toutes les nouveautĂ©s. Vous pouvez Ă©galement explorer le projet complet sur GitHub et me rejoindre pour des sessions de codage en direct sur Twitch pour des moments excitants et interactifs. Ă bientĂŽt derriĂšre lâĂ©cran !







Top comments (0)