L’objectif de ce groupe de travail était le prototypage d’une application “cahier de suivi de production”.
Admirallog
L’idée est d’obtenir un flux
formatés à l’aide d’une syntaxe “markdown”.
Un client en ligne de commande permettra ensuite de créer des entrées directement depuis le serveur (en mode interactif ou non) avec possibilité d’enregistrer des sessions shell.
.
Les événements pertinents
Les événements sont générés par l’activité des serveurs de façon automatisée mais il est possible d’en
- journaux d’activités : logs E
- commandes exécutées
- saisis
Deux modes de fonctionnement sont possibles pour récupérer les informations:
- mode actif : le service
- mode passif :
Les composants à étudier
Plusieurs composants ont été identifiés afin de mettre en œuvre les différents éléments de ce projet :
- )
- Prototypage : https://www.npmjs.com/package/parrot-ui) :
- ACL
Le périmètre abordé lors du hackathon
Durant les deux jours du hackathon, l’attention s’est portée sur deux composants du système :
- un client pour la création d’entrées de trois types dans le journal d’exploitation (enregistrement de session, texte formaté en markdown ;
- l’application de consultation de ces entrées.
Le transport est assuré par systemd-journal. Le format d’enregistrement de session est celui de asciinema.
Cette architecture n’a pas été mise à profit dans son intégralité lors de la restitution du hackathon. Un problème de configuration de systemd-journal-remote a impliqué une démonstration entre l’émetteur et le récepteur sur le même serveur.
Côté émetteur
Le client développé permet de produire assez simplement un événement à enregistrer dans le journal d’exploitation. Ces événements peuvent être des messages courts, des textes plus conséquents saisis dans un éditeur de texte, ou l’enregistrement d’une session shell complète. Chaque événement peut être accompagné de tags permettant leur filtrage ultérieur lors d’une consultation.
La version 0.1 créée à l’issue du hackathon utilise assez naïvement les commandes asciinema et vim pour le côté création de l’entrée et system-cat pour la transmission.
L’émetteur en version 0.1 : https://forge.cadoles.com/bbohard/caplo/src/v0.1
asciinema
Le format asciinema
propose l’enregistrement d’une session en chronométrant les saisies clavier. Le fichier au format JSON produit peut être interprété pour jouer à nouveau la session.
La version disponible dans les dépôts d’Ubuntu au moment du hackathon ne disposait pas de l’enregistrement en local de la session mais uniquement d’export directement vers un serveur asciinema. C’est la version du PPA ppa:zanchey/asciinema
qui a été utilisée.
system-cat
La commande system-cat
permet de transmettre les entrées de journaux via systemd-journal.
Côté récepteur
L’application développée pour l’affichage des entrées du journal d’exploitation propose une présentation adaptée au deux types de contenu envoyés par le client :
- une interprétation du markdown pour les entrées textuelles
- un lecteur asciinema pour les enregistrements de session
Conclusion
Quoique l’un des éléments fondamentaux du dispositif, la transmission sécurisée entre deux serveurs via systemd-journal, n’ait pas pu être testé sur le moment, le bilan de ce groupe de travail est plutôt positif. Il est apparu que les fonctionnalités basiques sont assez faciles à implémenter en s’appuyant sur des projets comme systemd-journal et asciinema. Tous les points n’ont cependant pas pu être abordés.
Depuis la fin du hackathon, des améliorations ont été apportées au client et la configuration de systemd-journal a pu être testée avec succès. Le manque d’une gestion des ACL ne permet toutefois pas d’envisager un déploiement dans un contexte de production dans l’état actuel des composants du système.