Exécutez journalctl avec une fenêtre temporelle et -o json, et vous obtenez un objet JSON par ligne avec chaque champ stocké par le journal :
sudo journalctl --since "2026-10-19 00:00" --until "2026-10-20 00:00" -o json --no-pager> web-03_journal.jsonl
Pour obtenir un fichier texte de type syslog à la place, utilisez -o short-iso. Sans sudo ou appartenance aux groupes systemd-journal, adm ou wheel, vous ne voyez que votre propre journal utilisateur, pas celui du système.
Sur la plupart des distributions modernes, le journal est l’endroit où tout arrive en premier : services, noyau, sudo, cron, connexions. Sur Debian 12 et versions ultérieures, Fedora et Arch, c’est souvent le seul endroit, car rsyslog n’est pas installé. Prime Core dispose de {N} règles de détection pour les journaux système Linux, mappées à {M} techniques MITRE ATT&CK, dont la persistance cron (T1053.003), les services systemd malveillants (T1543.002) et l’abus de sudo (T1548.003).
Avant de commencer
Autorisations. Les mêmes règles que pour tout journal système : root, ou les groupes ci-dessus. Notre [guide des autorisations de journaux Linux] contient les détails.
Est-ce que le journal survit aux redémarrages ? Si /var/log/journal n’existe pas, les journaux résident en mémoire sous /run/log/journal et disparaissent au redémarrage. journalctl –list-boots montre combien de démarrages vous avez réellement. S’il ne répertorie que le courant, l’historique ancien est perdu.
Quelle est la quantité ? journalctl –disk-usage vous le dit avant que vous ne le déversiez entièrement dans un fichier. Par défaut, un journal persistant peut atteindre 10% de son système de fichiers, plafonné à 4 Go. C’est bien plus que ce que vous voulez télécharger en un seul morceau.
Fuseaux horaires. Le journal enregistre les horodatages en UTC, mais journalctl imprime l’heure locale à moins que vous n’ajoutiez –utc. La sortie JSON transporte l’horodatage brut en microsecondes UTC (__REALTIME_TIMESTAMP) dans les deux cas.
Étape 1 : Réduisez la portée
Choisissez les filtres qui correspondent à votre question. Ils se combinent :
| Filtre | Ce qu’il fait |
|---|---|
| –since / –until | Fenêtre temporelle ; accepte « 2026-10-19 14:00 », hier ou « il y a 2 heures » |
| -b, -b -1 | Démarrage actuel, démarrage précédent |
| -u nginx -u ssh | Une ou plusieurs unités systemd |
| -p warning | Cette priorité et toute priorité plus sévère |
| -k | Messages du noyau uniquement |
| _COMM=sudo, _UID=0 | Faire correspondre exactement n’importe quel champ du journal |
Étape 2 : Choisissez le format de sortie
- -o json: un objet JSON par ligne, avec chaque champ. C’est le choix par défaut pour LogTotal, car rien n’est perdu.
- -o json –output-fields=MESSAGE,_HOSTNAME,_COMM,_PID,SYSLOG_IDENTIFIER,PRIORITY: pareil, mais réduit. Quelques champs, comme les horodatages et l’ID de démarrage, sont toujours inclus. Cela réduit considérablement la taille du fichier.
- -o short-iso: texte de style syslog avec des horodatages ISO complets. Plus petit et facile à lire à l’œil nu. [PROOF : confirmer que LogTotal analyse le short-iso]
N’utilisez pas -o export. Malgré le nom, c’est un format de sérialisation pour l’envoi de journaux entre machines systemd, pas quelque chose à analyser.
Nous vous recommandons un export typique avec une portée :
sudo journalctl -b -1 -p info -u ssh -u cron
-o json --no-pager> web-03_prevboot.jsonl
Étape 3 (facultatif) : Lire les fichiers de journal d’une autre machine
Dans les travaux d’incidents, vous avez souvent une image de disque ou un dossier /var/log/journal copié plutôt qu’un système actif. journalctl les lit directement :
journalctl -D /mnt/evidence/var/log/journal -o json --no-pager> evidence_journal.jsonl
Utilisez –file pour pointer vers des fichiers .journal individuels. Un journal d’un système planté ou arrêté de manière incorrecte peut imprimer des avertissements de corruption. La plupart des entrées sortent généralement quand même.
Téléchargez, assainissez et passez en revue dans LogTotal
- Téléchargez. Ouvrir logtotal.com et déposez le fichier .jsonl. [PROOF : écran de téléchargement, limite de taille]
- Assainissez. [PROOF: what gets masked in journal JSON: hostnames, usernames, IPs, machine and boot IDs]. Look it over before you continue.
- Passez en revue. [PROOF: what the results screen shows]
Ce à quoi cela ressemble avec des données réelles. Nous avons exporté une journée de journal à partir de [PROOF : source d’exemple, par exemple un VM de test jetable après avoir ajouté une tâche cron, un nouvel utilisateur et un service systemd suspect]. LogTotal a signalé [PROOF : résultats réels]. [PROOF : lien vers le fichier d’échantillon]
Quand ça tourne mal
| Symptôme | Cause probable | Fix |
|---|---|---|
| Indication ne pas voir les messages des autres utilisateurs | Pas root, et pas dans les groupes de journaux | sudo, ou ajoutez le compte au systemd-journal |
| — Aucune entrée — | Fenêtre temporelle ou nom d’unité ne correspondent pas ; confusion locale vs UTC | Élargissez la fenêtre ; essayez –utc ; vérifiez systemctl list-units |
| Seul le démarrage actuel existe | Journal volatil | Les journaux plus anciens sont partis ; vérifiez votre expéditeur de journaux ou SIEM |
| La sortie semble binaire ou brouillée | -o export a été utilisé | Utilisez -o json |
| Le fichier est en gigaoctets | Aucun filtre | Ajoutez des unités, priorité, –output-fields |
FAQ
JSON ou texte ?
JSON pour l’analyse, car il garde PID, unité, ID de démarrage et horodatages exacts en tant que champs distincts. Texte lorsqu’une personne le lira, ou lorsque la taille est importante.
Le journal est-il le même que /var/log/syslog ?
Non. Lors de l’installation de rsyslog, il copie les messages du journal dans des fichiers texte, vous pouvez donc avoir les deux. Quand il n’est pas installé, le journal est tout ce qu’il y a.