62 votes

Les journaux de Systemd (`journalctl`) sont trop volumineux et lents

Mon journalctl conserve plus de 300 Mo de journaux, comme l'a révélé l'enquête de la Commission européenne. journalctl --disk-usage . Tout semble être en ordre lorsque je lance journalctl --verify :

$ journalctl --disk-usage
Archived and active journals take up 328.0M on disk.

$ journalctl --verify
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/system.journal    
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-65534.journal
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/system@02f1aae76e32467390ab88ba03ae559e-0000000000000001-00056515dbdcd67e.journal
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-1000.journal 
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-65534@9838f64d6ee047bebec9d30d329064d4-00000000000005bb-00056515dbfe8d9d.journal

J'ai remarqué à quel point le système est lent quand je pipe pour grep de journalctl .

Comment puis-je réduire de manière raisonnable la taille de ce que je garde dans mon ordinateur ? journalctl ?

Image .GIF originale

90voto

WinEunuuchs2Unix Points 91128

# systemd est livré avec un aspirateur très pratique

Pour limiter les fichiers journaux à une taille spécifique systemd fournit un vacuum pour "aspirer" les anciennes informations des fichiers journaux. Les paramètres autorisés sont :

 --vacuum-size=BYTES   Reduce disk usage below specified size
 --vacuum-files=INT    Leave only the specified number of journal files
 --vacuum-time=TIME    Remove journal files older than specified time

Par exemple, pour réduire la consommation de 312 Mo à 200 Mo (ou moins), utilisez :

$ journalctl --vacuum-size=200M
Deleted archived journal /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/system@00056515dbdd9a4e-a6fe2ec77e516045.journal~ (56.0M).
Deleted archived journal /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-65534@00056515dbfe731d-b7bab56cb4efcbf6.journal~ (8.0M).
Deleted archived journal /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-1000@1bbb77599cf14c65a18af51646751696-000000000000064f-00056444d58433e1.journal (112.0M).
Vacuuming done, freed 176.0M of archived journals on disk.

Espace disque économisé

En journalctl est considérablement réduite :

$ journalctl --disk-usage
Archived and active journals take up 136.0M on disk.

La taille est passée de 312 Mo à 136 Mo, soit une économie de 176 Mo et 64 Mo de plus que prévu. Il s'agit probablement d'une anomalie ponctuelle due à un fichier journal unique de taille extraordinaire. Je réviserai cette réponse après un mois si de nouvelles informations apparaissent.

Boot Logs réduit

Le nombre de journalctl Les registres de bottes étaient de 32 mais maintenant ils sont réduits à 26 :

$ journalctl --list-boots
-26 0f230cc546fd4aec8f5233e0074ab3e1 Tue 2018-02-13 03:57:20 MST—Wed 2018-02-14 
-25 c0d2c0141dd840cbab75d3c2254f8781 Wed 2018-02-14 22:59:13 MST—Sat 2018-02-17 
-24 aafb2573a6374e019a7165cb8eee74a0 Sun 2018-02-18 06:02:03 MST—Mon 2018-02-19 
-23 8462f1969c6f4d61973e7e245014b846 Mon 2018-02-19 04:16:53 MST—Sat 2018-02-24 
-22 7f71ac2fb9714c49aa05989b741655f2 Sat 2018-02-24 04:24:36 MST—Sat 2018-02-24 
-21 b12a48c363474e5fb39311a166a98d54 Sat 2018-02-24 04:28:09 MST—Sun 2018-02-25 
-20 fbef1e659de64a0cbdcb9994f5a39457 Sun 2018-02-25 17:48:20 MST—Mon 2018-02-26 
-19 3d9b4c10f98d4ef7aab1cb2baa9b74e1 Mon 2018-02-26 08:37:01 MST—Mon 2018-02-26 
-18 4412b117dcc648aa9eceabcd0f205207 Mon 2018-02-26 08:38:00 MST—Mon 2018-02-26 
-17 f6794cbb7fb24213a6f2c3e368f666a1 Mon 2018-02-26 08:39:12 MST—Mon 2018-02-26 
-16 472f968506ed446ab12cf7abc65fa81a Mon 2018-02-26 08:49:37 MST—Mon 2018-02-26 
-15 d575c609d82e4ecd8dcebb70d40160d7 Mon 2018-02-26 17:07:36 MST—Mon 2018-02-26 
-14 878cfd9239a84dae80c62e7413c72951 Mon 2018-02-26 17:24:54 MST—Mon 2018-02-26 
-13 7f9913c7dbff46ab9bbd7c2cbefc4d7d Mon 2018-02-26 17:35:19 MST—Mon 2018-02-26 
-12 bf90829ef13a4e9fa1794bf0a88f4033 Mon 2018-02-26 17:45:12 MST—Wed 2018-02-28 
-11 fb879a836c7c459ab27f6332bee6013b Wed 2018-02-28 03:56:29 MST—Wed 2018-02-28 
-10 b0fec230765046f5bf3d654db1dc13ee Wed 2018-02-28 20:03:15 MST—Thu 2018-03-01 
 -9 72a2d6789eab4396be16348d9ead0408 Thu 2018-03-01 03:58:25 MST—Fri 2018-03-02 
 -8 8bccdc9b16124d26af05c34c8a30a0f5 Fri 2018-03-02 16:54:36 MST—Sat 2018-03-03 
 -7 40c2875db30349f5a9b1dfc849a47c05 Sat 2018-03-03 10:03:48 MST—Sat 2018-03-03 
 -6 781c79d2ec7946afba0fa2300e8ebe56 Sat 2018-03-03 10:04:34 MST—Sat 2018-03-03 
 -5 bb66dc875e414021940b7233072516d2 Sat 2018-03-03 17:43:08 MST—Tue 2018-03-06 
 -4 ba3bcfdc71584757b8bef9df16e7b0f6 Tue 2018-03-06 16:56:36 MST—Tue 2018-03-06 
 -3 60faa0fda99a4ef4b14b73c412d69e50 Tue 2018-03-06 17:00:47 MST—Tue 2018-03-06 
 -2 9b317bb8403344ca84dd2f288bc90410 Tue 2018-03-06 17:02:15 MST—Tue 2018-03-06 
 -1 dcb126be665a4531aae4312af7e51a34 Tue 2018-03-06 17:09:00 MST—Tue 2018-03-06 
  0 6a105af650d5442a9b03004165e58adf Tue 2018-03-06 17:42:45 MST—Wed 2018-03-07 

Amélioration des performances

Le moment de vérifier journalctl L'intégrité est sensiblement plus rapide :

journalctl verify 2.png

Le temps est passé de 10 secondes à 4 secondes.

Credit to this Source :


Solutions à long terme

J'ai créé un cron pour passer l'aspirateur une fois par mois.

Une autre option, comme mentionné dans les commentaires, est de définir SystemMaxUse=50M en /etc/systemd/journald.conf . Il existe en fait quatre endroits différents où vous pouvez définir cette option :

/etc/systemd/journald.conf
/etc/systemd/journald.conf.d/*.conf
/run/systemd/journald.conf.d/*.conf
/usr/lib/systemd/journald.conf.d/*.conf

Il y a en fait plusieurs options que vous pouvez utiliser pour des objectifs similaires :

SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize=, SystemMaxFiles=, RuntimeMaxUse=, RuntimeKeepFree=, RuntimeMaxFileSize=, RuntimeMaxFiles=

recharger la conf :

$ sudo systemctl reload systemd-journald

7voto

TSJNachos117 Points 1344

Vous pouvez demander à journalctl d'afficher une plus petite quantité de choses. Il y a plusieurs façons de le faire, comme par exemple :

  • -u [unit] o --unit=[unit] : ceci indique à journalctl de n'afficher que les journaux provenant d'une unité systemd. Vous pouvez, par exemple, taper journalctl -u NetworkManager.service et vous obtiendrez les journaux de NetworkManager.
  • -s [time] o --since=[time] : Ceci indique à journalctl d'ignorer toutes les entrées antérieures à un certain temps, spécifié comme yyyy-mm-dd hh:mm:ss . Si vous ne voulez pas indiquer l'heure, journalctl utilisera 00:00:00. De même, si vous omettez la date, journalctl utilisera la date du jour. Voici un exemple, tiré de la page de manuel : journalctl -s 2012-10-30 18:17:16 .
  • -U [time] o --until=[time] cette liste est assez similaire à la précédente, sauf qu'elle omet les entrées de après que le temps spécifié. Les arguments et la syntaxe sont les mêmes.
  • -n [x] o --lines [x] : limite le nombre de lignes de sortie, où "x" est un nombre entier. Si vous tapez journalctl -n 12 seulement les douze le plus récent les journaux seront affichés.

Vous pouvez également réduire la quantité de données conservées, mais WinEunuuchs2Unix l'a déjà signalé, je ne vais donc pas perdre de temps à répéter cette information.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X