User Tools

Site Tools


doc:appunti:linux:sa:journalctl

This is an old revision of the document!


Come limitare i log di journalctl

In Debian il processo systemd-journald scrive nella directory /var/log/journal/. Oltre a misurare lo spazio occupato dai file è possibile interrogare il servizio stesso per sapere lo spazio utilizzato con:

journalctl --disk-usage

Il file di configurazione è /etc/systemd/journald.conf. Questi alcuni parametri che possono essere impostati per limitare lo spazio utilizzato:

SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=1month
MaxFileSec=1week

Dopo aver modificato il file si deve riavviare il servizio:

systemctl restart systemd-journald

Per liberare spazio al volo è possibile utilizzare i comandi:

journalctl --vacuum-time=1month
journalctl --vacuum-size=500M

Utilizzo di journalctl

Vedere solo i messaggi recenti -S o --since:

journalctl  --since 9:30
journalctl  --since "10 min ago"

Aggiungendo il comando -f oppure --follow è possibile seguire la visualizzazione dei messaggi generati successivamente:

journalctl  --since "1 min ago" --follow

Vedere solo i messaggi di una certa systemd unit:

journalctl -u dbus.service

Per-user journal e storage volatile

L'utente non privilegiato può vedere i messaggi dei propri servizi eseguendo il comando:

journalctl --user

Tuttavia questa possibilità esiste solo se è attivo lo storage su memoria persistente (Storage=persistent in /etc/systemd/journald.conf).

Se è attivo lo Storage=volatile è comunque possibile - da parte dell'utente root - vedere i messaggi generati dai serivizi utente utilizzando il syslog identifier (-t oppure --identifier=):

journalctl -t radio-backend
journalctl -t "./radio-frontend"

L'identificatore syslog è determinato dal modo in cui il programma utente effettua il logging. Le due modalità più comuni sono:

stdout Se il programma emette i log su stdout e la unit systemd contiene le direttiva StandardOutput=journal, allora l'output viene dirottato su journal. L'identificatore syslog è uguale al nome della unit oppure è determinato dal valore indicato da SyslogIdentifier= nella unit stessa.
systemd nativo Il programma invia nativamente i messaggi di log a systemd journal. In questo caso l'identificatore syslog è il nome con cui viene invocato il programma, eventualmente completo di path. La libreria normalmente consente di modificare il syslog identifier, ad esempio con il modulo systemd.journal di Python è possibile indicarlo nella funzione JournalHandler(SYSLOG_IDENTIFIER='myapp').

È possibile anche filtrare con una regex sul contenuto del messaggio (-g oppure --grep=):

journalctl -g radio_frontend

Web References

doc/appunti/linux/sa/journalctl.1771958953.txt.gz · Last modified: by niccolo