CodeGym /Corsi /Docker SELF /Registrazione e visualizzazione dei log di sistema: coman...

Registrazione e visualizzazione dei log di sistema: comando `journalctl`

Docker SELF
Livello 3 , Lezione 1
Disponibile

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:

  1. Diagnosticare i problemi. Se qualcosa non va, nei log puoi trovare errori o avvisi.
  2. Monitorare i servizi. Ad esempio, scoprire perché il database PostgreSQL si è fermato o quando il server web è stato aggiornato l'ultima volta.
  3. Raccogliere analisi. Monitoraggio delle performance e delle metriche dei servizi.
  4. 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

  1. Ricerca di errori del servizio SSH.

    Vuoi scoprire perché SSH si rifiuta di connettersi. Usa:

    journalctl -u ssh | grep "ERROR"
    
  2. 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"
    
  3. 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

  1. Trova i log degli errori per il servizio SSH nelle ultime 24 ore.
  2. Usando journalctl, visualizza i log per CRON solo per la mattina. Assicurati che il comando funzioni con l'intervallo di tempo corretto.
  3. 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.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION