Visualizzare e Gestire i Log di Systemd in Linux

journalctl

Uno degli strumenti più potenti per analizzare i log in sistemi Linux basati su systemd è journalctl. Questo comando permette di accedere al journal, il sistema di logging integrato di systemd, che raccoglie informazioni su processi, servizi e eventi del sistema.

In questo articolo, esploreremo come utilizzare journalctl per visualizzare, filtrare e gestire i log in modo efficiente.

1. Introduzione a Journalctl

journalctl è il comando principale per interagire con i log gestiti da systemd-journald. A differenza dei tradizionali file di log (come /var/log/syslog o /var/log/messages), il journal offre:

  • Struttura centralizzata: Tutti i log sono raccolti in un unico luogo.
  • Metadati avanzati: Ogni entry include informazioni come unità di systemd, PID, timestamp e priorità.
  • Ricerca efficiente: Filtraggio flessibile basato su criteri multipli.
journalctl
journalctl

2. Comandi Base di Journalctl

Visualizzare tutti i log

Per vedere l’intero journal (in modalità paginata con less):

journalctl

Log in tempo reale

Per seguire i nuovi log in tempo reale (simile a tail -f):

journalctl -f

Filtrare per unità di systemd

Visualizza i log di un servizio specifico (es. nginx):

journalctl -u nginx.service

Mostrare log da oggi

Per vedere solo i log del giorno corrente:

journalctl --since today

Filtrare per priorità

Visualizza solo messaggi di errore (--priority accetta valori da 0 (emergenza) a 7 (debug)):

journalctl -p err -b

(-b limita i log al boot corrente).

3. Filtri Avanzati

Log tra due date

Mostra i log tra due timestamp specifici:

journalctl --since "2024-01-01 00:00:00" --until "2024-01-02 23:59:59"

Log di un utente specifico

Filtra per UID (es. utente con UID 1000):

journalctl _UID=1000

Log del kernel

Mostra solo i messaggi del kernel:

journalctl -k

Log del boot corrente

Visualizza i log relativi all’ultimo avvio:

journalctl -b

Per un boot specifico, usa journalctl --list-boots e poi:

journalctl -b -1  # Boot precedente

4. Formattazione e Esportazione

Output in formato JSON

Per analisi programmatiche:

journalctl -u nginx --output json

Mostrare solo i messaggi più recenti

Visualizza gli ultimi 20 log:

journalctl -n 20

Esportare in un file

Salva i log in un file di testo:

journalctl -u sshd --since "1 hour ago" > ssh_logs.txt

5. Manutenzione del Journal

Dimensioni del Journal

Controlla lo spazio occupato:

journalctl --disk-usage

Pulizia dei log vecchi

Elimina log più vecchi di un certo periodo (es. 2 settimane):

sudo journalctl --vacuum-time=2weeks

Oppure limita lo spazio massimo:

sudo journalctl --vacuum-size=500M

Disabilitare il journal (sconsigliato)

Se necessario, il journal può essere disattivato modificando /etc/systemd/journald.conf e riavviando il servizio:

sudo systemctl restart systemd-journald

6. Conclusioni

journalctl è uno strumento essenziale per diagnosticare problemi, monitorare servizi e analizzare eventi di sistema in Linux. Grazie alla sua flessibilità e potenza, sostituisce efficacemente i tradizionali tool di log come tail, grep e cat per i sistemi basati su systemd.

Per ulteriori dettagli, consulta il manuale con:

man journalctl

Hai domande o suggerimenti? Lascia un commento! 🚀

Potrebbe interessarti