Introduzione
In alcune delle più recenti distribuzioni Linux, "init.d" o "rsyslogd" è stato sostituito da un programma chiamato JournalCTL. In precedenza, i registri si trovavano in genere in una posizione particolare per ogni file di registro separato, anziché essere facili da individuare, gestire e manipolare. Systemd ha reso più facile l'accesso a questi file di registro centralizzandoli, registrando tutti i processi del kernel e degli utenti in un "journal". Journalctl è la versione più recente di questo, il che rende ancora più semplice la gestione di questi file.
In questa guida, spiegheremo le basi di journalctl e una breve panoramica degli usi suggeriti per il programma.
Prerequisiti
Deve avere una distribuzione Linux con journalctl come programma di gestione dei log di sistema, ad esempio CentOS 7. Se non disponi di un server, considera un server privato virtuale SSD super veloce di Atlantic.Net.
Come gestire i registri di sistema con Journalctl
Impostazione dell'ora del sistema
Prima di iniziare con qualsiasi altra cosa, si consiglia vivamente di impostare l'ora del sistema. Dal momento che systemd registra come diario binario, puoi registrare i tuoi record in ora UTC o locale (server). Per impostazione predefinita, systemd visualizzerà i risultati nell'ora locale. Per evitare confusione in seguito, verificheremo che l'ora sia impostata correttamente. Systemd ha un programma integrato chiamato "timedatectl" che serve a questo scopo.
Innanzitutto, verifica che il tuo fuso orario sia disponibile nelle opzioni del fuso orario:
timedatectl list-timezones
Questo mostra tutti i fusi orari disponibili sul tuo server. Dopo aver individuato quello che corrisponde alla tua posizione (o alla posizione del tuo server), impostalo:
sudo timedatectl set-timezone (zone)
Quindi verificheremo per assicurarci che ciò abbia avuto effetto correttamente:
timedatectl status
La prima riga visualizzerà l'ora corretta.
Controllo accessi
usermod -a -G adm username
Sostituire "nome utente" con il nome dell'utente. Questo utente riceverà lo stesso accesso journalctl dell'utente root. Tuttavia, questo controllo funziona solo quando l'archiviazione persistente è abilitata.
Visualizzazione di base del registro
Ci sono alcuni comandi che possono essere emessi a questo punto. Il comando di base visualizzerà un output di tutte le voci generali, visualizzando prima le voci più vecchie:
journalctl
Anche se questo ti darà tutti i file di registro, questo ti darà, beh, tutti i file di registro. Ciò significa che avrai centinaia o migliaia, o più, di righe di registro visualizzate se ne hai la possibilità. È simile a quello che vedresti se cercassi in "/var/log/messages/" nelle versioni precedenti.
Sessione di avvio corrente
Abbiamo anche un comando che visualizzerà i log che si sono verificati solo nell'avvio corrente.
journalctl -b
Ciò significa che le informazioni delle sessioni di avvio precedenti non verranno visualizzate.
Sessioni di avvio precedenti
Se hai bisogno di rivedere i registri per le sessioni di avvio precedenti, c'è anche un'opzione per quello. Alcune versioni abilitano la registrazione delle sessioni di avvio precedenti per impostazione predefinita. Per assicurarti che il tuo sia impostato per registrarli, ti suggeriamo di abilitare questa funzione. Questo può essere fatto creando la directory
sudo mkdir -p /var/log/journal
oppure modificando direttamente il file di configurazione del journal
sudo nano /etc/systemd/journald.conf
Nel file, in [Journal], imposta l'opzione "Storage=" su "persistent" in modo che la registrazione persistente sia abilitata. Salva ed esci da questo file e le impostazioni avranno effetto in futuro.
Una volta salvato, per visualizzare le opzioni disponibili per la revisione dei file di avvio,
journalctl --list-boots
Vedrai una riga per ogni sessione di avvio disponibile. L'ID offset è la prima colonna mentre l'ID di avvio è la seconda colonna. È possibile utilizzare l'ID offset o l'ID di avvio per eseguire il comando:
journalctl -b (offset/boot ID)
Lasso di tempo specifico
Potresti, invece, voler rivedere i file di registro entro un intervallo di tempo specificato, che può estendersi su più sessioni di avvio o limitarlo a una finestra di tempo specificata all'interno di una sessione di avvio. È possibile inserire le limitazioni –da e –fino a che mostreranno solo gli eventi successivi e precedenti al registro specifico.
Per tutti i valori temporali, è necessario utilizzare il seguente formato:
YYYY-MM-DD HH:MM:SS
Se desideri visualizzare gli eventi che sono accaduti dalle 10:00 del 5 luglio 2015, possiamo ottenere ciò tramite il seguente comando:
journalctl --since “2015-07-05 10:00:00”
Tieni presente che questi saranno basati sull'ora del server o UTC, a seconda di ciò che hai impostato nelle tue preferenze in precedenza in questo tutorial.
Se la data viene omessa, il diario assumerà la data odierna. Se l'ora viene omessa, verrà considerata la mezzanotte (00:00:00). Inoltre, non è necessario includere il campo dei secondi, nel qual caso verranno assunti "00" secondi.
Ci sono anche comandi amichevoli, come
journalctl --since yesterday
e
journalctl --since 02:00 --until “3 hours ago”
Opzioni di filtro
Per unità
La funzione più utile disponibile è il filtraggio delle unità. Il filtro -u dà l'opzione di visualizzare solo una specifica "unità" permettendoti di vedere cose che sono accadute solo in riferimento a un programma o sistemi specifici. Come sempre, puoi aggiungere filtri per intervalli di tempo con questo.
journalctl -u nginx.service
o
journalctl -u nginx.service --since yesterday
Per processo, utente o ID gruppo
Se hai già esaminato informazioni sufficienti per recuperare il PID del processo che stai cercando, puoi invece filtrare per questo. Questo viene eseguito con _PID
journalctl _PID=4345
Per posizione
È disponibile anche il filtraggio in base alle posizioni del percorso. Se stai selezionando un percorso eseguibile, journalctl mostrerà tutte le voci relative a quell'eseguibile. Se, ad esempio, stai cercando log che coinvolgono bash,
journalctl /usr/bin/bash
Questo metodo di solito include informazioni più dettagliate sui processi e sui processi figlio, se disponibili. A volte questa non è un'opzione, tuttavia.
Messaggi del kernel
I messaggi del kernel si trovano in genere nell'output di dmesg, tuttavia possiamo usare anche journalctl per recuperarli. Questo sarebbe con il filtro -k o -dmesg.
journalctl -k
Questo mostrerà i messaggi del kernel che si sono verificati durante la sessione di avvio corrente. Ancora una volta, questo può sempre essere modificato con le opzioni menzionate in precedenza. Se si desidera rivedere i messaggi del kernel dalla sessione di avvio precedente,
journalctl -k -b -1
Priorità
La priorità è spesso il metodo preferito per la revisione dei log. Journalctl può essere utilizzato per visualizzare i messaggi solo al di sopra di un certo livello di priorità. Di seguito sono riportati i livelli di priorità:
0:emerge
1:avviso
2:critico
3:ehm
4:avviso
5:avviso
6:informazioni
7:eseguire il debug
È possibile utilizzare il nome del livello di priorità o il numero corrispondente. Se desideri visualizzare solo i log con priorità di avviso o superiore, puoi emettere il comando
journalctl -p warning -b
o
journalctl -p 4 -b
Campo specificato
Per visualizzare l'elenco dei giornali che si verificano all'interno di un campo specifico, utilizzare il modificatore -F
journal -F fieldname
dove "fieldname" è sostituito dal campo che stai cercando. Hai anche la possibilità di visualizzare solo le voci di registro che soddisfano una condizione specifica
journalctl fieldname=value
Tronca o espandi l'output
Journalctl può essere modificato per ridurre o espandere la visualizzazione dei dati di output. Per impostazione predefinita, journalctl visualizzerà l'intera voce, richiedendo di scorrere verso destra con i tasti freccia. Possiamo invece troncare questo output, che mostrerà i puntini di sospensione per le informazioni rimosse con l'opzione –no-full.
journalctl --no-full
In alternativa puoi dire a journalctl di visualizzare tutte le informazioni, indipendentemente dal fatto che consideri un carattere non stampabile. Questo viene fatto con il modificatore -a.
journalctl -a
Passa a output standard
journalctl --no-pager
Formati di output
Se si utilizza un editor di testo per le voci del diario, come discusso in precedenza, il diario può essere visualizzato in altri formati, se necessario. Questo può essere fatto con il modificatore -o e un identificatore di formato.
Ad esempio, puoi leggere il diario in JSON digitando
journalctl -b -u nginx -o json
Puoi utilizzare quanto segue per le opzioni di visualizzazione:
gatto — Visualizza il campo del messaggio stesso
esporta — Formato binario per il trasferimento o il backup
json — JSON standard, una voce per riga
json-piuttosto — Formato JSON ma è più facile da leggere
json-sso — Formato JSON avvolto per rendere compatibile l'aggiunta di eventi inviati dal server
breve — Output syslog predefinito
iso corto — Output predefinito che mostra i timestamp dell'orologio da parete ISO 8601
corto-monotonico — Uscita predefinita con timestamp monotono
preciso in breve — Uscita predefinita con timestamp in microsecondi
prolisso — Mostra tutti i campi del diario per quella voce, include nascosto
Monitoraggio del processo attivo
Journalctl imita quali amministratori utilizzano tail per il monitoraggio. Questo è stato integrato in journalctl consentendo l'accesso a queste funzionalità senza dover utilizzare strumenti aggiuntivi.
Visualizzazione dei registri recenti
L'opzione -n può essere utilizzata per visualizzare una quantità specifica di record. La mancata inclusione di un numero di modifica visualizzerà dieci (10) risultati, per impostazione predefinita.
journalctl -n
Puoi, invece, specificare quante voci vorresti vedere
journalctl -n 20
Registri seguenti
Il modificatore -f può essere utilizzato per seguire i log mentre vengono scritti.
journalctl -f
Manutenzione del diario
Esistono alcuni comandi che possono essere utilizzati per ripulire alcuni registri meno recenti per il bene dello spazio sul disco rigido.
Innanzitutto, puoi scoprire quanto spazio è occupato dai diari utilizzando il modificatore –disk-usage.
journalctl --disk-usage
Ci sono due modi diversi per ripulirlo. Il primo è ridurre il diario in base alle dimensioni. Questo rimuove le voci dalla meno recente alla più recente fino a raggiungere lo spazio su disco desiderato.
sudo journalctl --vacuum-size-2G
Il modo alternativo per ridurre il diario è a una certa data. L'opzione –vacuum-time cancella tutte le voci fino a una certa data.
Per conservare solo le voci dell'anno scorso, puoi digitare
sudo journalctl --vacuum-time-1years
Limitazione delle dimensioni del diario
Hai la possibilità di porre limiti alla quantità di spazio che i diari possono occupare.
nano /etc/systemd/journald.conf
Queste modifiche possono essere apportate con una qualsiasi delle seguenti modifiche al campo
Utilizzo massimo sistema= Spazio su disco massimo
SystemKeepFree= Quantità di spazio da mantenere disponibile
SystemMaxFileSize= Quanto possono diventare grandi i singoli file journal prima di essere ruotati
RuntimeMaxUse= Spazio su disco massimo che può essere utilizzato all'interno dell'archiviazione volatile (/run filesystem)
RuntimeKeepFree= La quantità di spazio che dovrebbe essere mantenuta disponibile per gli altri nella memoria volatile (/run filesystem)
RuntimeMaxFilesize= Quanto può diventare grande un singolo file journal nella memoria volatile (all'interno di /run filesystem) prima di essere ruotato
Grazie per aver seguito questo how-to. Ricontrolla qui per ulteriori aggiornamenti e per prendere in considerazione un server di hosting VPS leader di mercato di Atlantic.Net.