Depuis la version 0.0.65, conservez les actions manuelles et automatiques, leurs résultats et les notifications prises en charge, puis exportez-les ou transmettez-les en HTTPS.
Événements et identité
Chaque événement comporte une date UTC, un identifiant, la source manuelle ou automatique, l’acteur et le résultat. Les étapes d’une même action partagent un identifiant de corrélation. Les commandes et secrets ne sont pas enregistrés. L’identité provient du compte local en ligne de commande ou d’un proxy d’authentification explicitement approuvé ; sans identité fiable, elle vaut anonymous.
Sur la démo publique, les visiteurs sont anonymes. La page Journal partagée affiche les vraies actions de démonstration et leurs résultats, avec filtres et exports CSV/JSONL de la page affichée. Le redémarrage des conteneurs de test par le timer du VPS est enregistré séparément dans le journal système.
Stockage persistant et rétention
Montez un volume persistant sur le répertoire du journal. Par défaut, cinq fichiers de 5 Mio au maximum sont conservés, avec des permissions 0600. Les plus anciens événements expirent par taille. Le journal structuré est également émis sur stderr pour les collecteurs de logs.
monit-docker --audit-file /var/lib/monit-docker/events.jsonl \
--audit-max-bytes 5242880 --audit-files 5 \
serve --state-file /var/lib/monit-docker/state.json --cmd 'status == exited ? start'
Si l’événement initial ne peut pas être écrit, l’action ne démarre pas. Un échec d’écriture après exécution conserve le résultat réel et produit une alerte sur stderr ; il ne provoque pas une nouvelle exécution.
La version 0.0.65 utilisait 10 Mio par fichier. La nouvelle limite s’applique aux écritures et rotations à venir ; les anciennes archives ne sont pas tronquées. Pour exporter une archive plus grande, conservez temporairement son ancien paramètre de taille.
Consulter le journal dans l’interface
Depuis la version 0.0.66, la page Journal affiche les actions, notifications, dates, auteurs et résultats. Filtrez par période, conteneur, origine manuelle ou automatique, catégorie et résultat. Chaque page contient au maximum 100 événements ; les boutons CSV et JSONL exportent uniquement cette page. Utilisez la ligne de commande pour exporter tout l’historique conservé.
Pour une nouvelle installation privée, depuis le clone v1.3.3 :
cd examples/ui
python3 prepare.py --journal --self-signed
docker compose -f compose.yaml -f compose.journal.yaml up -d
Connectez-vous sur https://localhost:8443/logs. Le certificat autosigné convient au test local ; utilisez un certificat reconnu à distance. Le journal peut être vide tant qu’aucune action ou notification n’a eu lieu. Cette variante ne permet pas d’exécuter des actions manuelles.
L’accès est désactivé par défaut et nécessite un secret de lecture distinct, conservé côté proxy. Tous les utilisateurs authentifiés de ce proxy peuvent consulter le journal configuré. Sur une installation existante, préservez vos secrets et suivez le guide d’activation : les variantes Compose remplacent la commande de l’agent et ne doivent pas être empilées sans réunir leurs options.
La lecture est limitée à 1 Mio par requête, sans chargement de tout le journal ni actualisation automatique. Un filtre rare peut donner une page vide avec un bouton pour poursuivre. Actualisez si la pagination expire après une rotation ou un redémarrage. Seul le journal dédié à la démo est public ; conservez l’authentification sur vos installations.
Exporter ou transmettre
Les options du journal se placent avant le sous-ordre. Ces commandes ne se connectent pas à Docker. Utilisez les mêmes paramètres de rétention que le service.
umask 077
monit-docker --audit-file /var/lib/monit-docker/events.jsonl audit-export > events.jsonl
monit-docker --audit-file /var/lib/monit-docker/events.jsonl audit-export --format csv > events.csv
monit-docker --audit-file /var/lib/monit-docker/events.jsonl \
audit-send --url https://logs.example.org/events --token-file /run/secrets/logs-token
L’envoi HTTPS transmet un événement JSON par requête, vérifie le certificat et refuse les redirections. Le récepteur doit accepter ce format et dédupliquer par identifiant d’événement. Il n’y a pas de file d’attente ni de reprise automatique ; les données locales restent disponibles après un échec.
Protection commune des valeurs
Le schéma 2 protège les champs textuels avant stockage et export : les contrôles, caractères de formatage et préfixes de formule deviennent des échappements visibles. Les accents restent lisibles. Les anciens journaux sont convertis à la lecture, sans réécriture. Les consommateurs doivent conserver ces valeurs échappées et utiliser le sérialiseur adapté à leur format.
Résultats des notifications
Le webhook Alertmanager journalise la réception des alertes, sans affirmer qu’un email ou message Slack a été livré. Les adaptateurs Redis et DWho HTTP enregistrent leurs tentatives et l’acceptation ou l’échec côté destination. Consultez le guide complet pour l’activation du webhook privé, les volumes des adaptateurs et la récupération après incident.
Depuis la 0.0.71, les événements apparaissent dans des bandeaux colorés : vert pour un succès, rouge pour un échec ou un refus, jaune pour une action ignorée, bleu pour une action en attente ou une notification acceptée, violet pour une action en cours (depuis la 0.0.72), et gris pour une simulation. Les titres et les raisons restent en anglais ; la raison est directement visible. Les champs techniques restent disponibles dans les détails et les exports. Une acceptation ne prouve pas qu’une personne a reçu la notification.
De petits encadrés distinguent les actions manuelles (bleu) et automatiques (ambre), avec l’acteur et l’hôte sur fond gris clair.
Depuis la 0.0.73, les événements occupent moins de hauteur : action, hôte et date figurent en haut, séparés par des points médians, avec les détails à droite. Le conteneur, la source et l’acteur sont regroupés en dessous.
Le contrat API HTTP et métriques détaille les réponses, les erreurs, la fraîcheur et les exports, avec des exemples curl.
Consultez la compatibilité du journal pour les anciens schémas, les limites des exports, la sauvegarde et le retour arrière.
Consultez les notes de version 1.3.3 pour le contrat de compatibilité, les mises à niveau testées et les limites de validation.
Utilisez des secrets distincts pour les actions, les notifications, la lecture du journal et les métriques. Pour conserver un curseur par utilisateur, activez --trust-proxy-user uniquement derrière un proxy qui authentifie les utilisateurs, remplace l’en-tête de l’acteur et limite l’accès direct à l’agent. Sinon, les lecteurs partagent le curseur anonyme.

