Registrazione e visualizzazione dei log di sistema: comando journalctl
1. Perché è importante lavorare con i log?
I log (o registrazioni) sono il tuo "detective" personale, che registra ogni operazione importante nel sistema. Raccolgono le azioni del kernel, delle applicazioni, dei servizi e di altri componenti del sistema. I log sono uno strumento essenziale per diagnosticare i problemi e monitorare il funzionamento del sistema.
Immagina che il tuo server smetta improvvisamente di rispondere. Invece di indovinare, come farebbe Sherlock Holmes, cosa è andato storto, puoi semplicemente dare un'occhiata ai log — lì è tutto chiaro. Per esempio: "Il servizio ssh
è crollato", "Disco pieno", "Il gatto è passato sulla tastiera e ha fermato un servizio importante". I log ti racconteranno tutto.
Lavorare con i log di sistema ti aiuta a:
- Diagnosticare i problemi. Se qualcosa non va, nei log puoi trovare errori o avvisi.
- Monitorare i servizi. Ad esempio, scoprire perché il database PostgreSQL si è fermato o quando il server web è stato aggiornato l'ultima volta.
- Raccogliere analisi. Monitoraggio delle performance e delle metriche dei servizi.
- Aumentare la sicurezza. I log possono mostrare tentativi di hacking tramite SSH o accessi non autorizzati.
2. Introduzione a journalctl
journalctl
— è un comando potente per visualizzare e filtrare i log di sistema in Linux. Funziona con systemd-journald
— un sistema per raccogliere e memorizzare i log, gestito da systemd
.
Azioni di base con journalctl
Prima di tutto, vediamo come usare questa utility. Apri il terminale e digita:
journalctl
Questo comando ti mostrerà tutti i log di sistema, ordinati in ordine cronologico. Se ti aspetti di vedere qualcosa di semplice, preparati: di solito i log occupano parecchi schermi. Non preoccuparti, impareremo a filtrarli tra un attimo.
Ora, per uscire dalla visualizzazione dei log, premi q
(hai già notato la somiglianza tra less
e journalctl
?).
Filtrare i log per tempo
Adesso restringeremo magicamente i log a un intervallo più comodo.
Visualizzare i log dell'ultima ora
journalctl --since "1 hour ago"
Visualizzare i log di un giorno specifico
journalctl --since "2023-10-31"
Specificare un intervallo di tempo
Vuoi vedere gli eventi dalle 8 del mattino alle 9? Nessun problema:
journalctl --since "2023-10-31 08:00:00" --until "2023-10-31 09:00:00"
Filtrare in base al tempo è utile, ad esempio, se sai che il problema è iniziato in un momento specifico. Un’analogia: non leggi tutto il libro per scoprire chi è l’assassino — guardi solo le ultime pagine.
Lavorare con i log di un servizio specifico
Invece di analizzare tutto il sistema, puoi concentrarti su un solo servizio. Ad esempio, vuoi vedere come sta funzionando il web server nginx
:
journalctl -u nginx
Se vuoi vedere solo i log dell'ultima ora (e tutti amiamo informazioni fresche):
journalctl -u nginx --since "1 hour ago"
Breve lista di esempi:
-u ssh
: Log per il servizio SSH.-u cron
: Log per i task CRON.-u mysql
: Log per il database MySQL.
Leggere i log in tempo reale
Quando stai sistemando qualcosa in tempo reale, può essere utile osservare i log in tempo reale — come guardare una partita di calcio. Usa questo comando:
journalctl -f
L’opzione -f
funziona in modo simile a tail -f
, mostrando le nuove voci di log mano a mano che appaiono.
Ad esempio, prova ad avviare il comando e contemporaneamente riavvia un servizio qualsiasi:
sudo systemctl restart ssh
Vedrai i cambiamenti — una voce sul riavvio apparirà nei log.
Cercare errori nei log
Spesso i log sono lunghi, e cercare manualmente le informazioni interessanti è come cercare un ago in un pagliaio. Per cui puoi usare la ricerca per parole chiave.
Uso semplice:
journalctl | grep "ERROR"
Questo esempio mostra solo le righe che contengono la parola ERROR
. Puoi sostituire ERROR
con qualsiasi cosa, ad esempio WARNING
, failed
o panic
.
3. Opzioni speciali per journalctl
Visualizzare i log solo dopo un riavvio
Vuoi sapere cosa è successo dopo l'ultimo avvio del sistema? Curioso? Fai semplicemente:
journalctl -b
Ogni riavvio del sistema viene registrato come un "blocco" separato. Se vuoi vedere i log dopo il penultimo avvio (sì, a volte è utile):
journalctl -b -1
Filtrare per utente o PID
A volte è necessario tracciare le azioni di un utente specifico o di un processo. Ad esempio:
journalctl _UID=1000
Sostituisci 1000
con l'ID utente (per scoprire l'ID usa il comando id
).
Per filtrare per PID (identificatore di processo):
journalctl _PID=1234
4. Esempi pratici
Ricerca di errori del servizio SSH.
Vuoi scoprire perché SSH si rifiuta di connettersi. Usa:
journalctl -u ssh | grep "ERROR"
Analisi dei log nelle ultime 24 ore per CRON.
Supponiamo che tu stia verificando perché il tuo script giornaliero non è stato eseguito:
journalctl -u cron --since "yesterday"
Monitoraggio in tempo reale del web server.
Il web server è sotto carico? Controlla i log per gli errori:
journalctl -u nginx -f
Esercizi per pratica autonoma
- Trova i log degli errori per il servizio SSH nelle ultime 24 ore.
- Usando
journalctl
, visualizza i log per CRON solo per la mattina. Assicurati che il comando funzioni con l'intervallo di tempo corretto. - Organizza un monitoraggio in tempo reale dei log di
systemd
e avvia alcuni servizi di sistema per vedere il loro stato nei log.
Il logging non è solo un riferimento agli errori o alla diagnostica dei problemi. È il tuo agente segreto che ti aiuta a tenere d'occhio l'intero sistema operativo. Una volta che avrai padroneggiato il comando journalctl
, avrai uno strumento potente per l'analisi, l'ottimizzazione e il mantenimento del funzionamento stabile del sistema Linux in qualsiasi condizione.
GO TO FULL VERSION