Introduzione ai livelli di log del kernel Linux

Introduzione ai livelli di log del kernel Linux

Obiettivo

L’obiettivo di questo tutorial è quello di conoscere i vari livelli di log del kernel Linux, come sono organizzati, e come possiamo impostare quali messaggi devono essere visualizzati sulla console a seconda della loro gravità.

Requisiti

  • Privilegi di root per modificare i file di configurazione

Difficoltà

FACILE

Introduzione

La gestione dei file di log del kernel Linux è un aspetto cruciale dell’amministrazione di una macchina: i log possono semplicemente informarci sullo stato del demone, o mostrare messaggi critici o avvisi., In questo tutorial, vedremo i vari tipi di livello di log utilizzati dal kernel Linux, come sono organizzati per gravità e come possiamo filtrare i messaggi visualizzati sulla console a seconda di esso.

I livelli di log del kernel Linux

Ci sono fondamentalmente otto livelli di log che un messaggio inviato dal kernel Linux può adottare, a partire dalevel 0e decrescente in severita ‘fino alevel 7: l’identificatore di livello di log più basso, il contesto più critico.,
Quando un livello di registro è impostato come predefinito per la console, in modo persistente o temporaneo, agisce come un filtro, in modo che vengano visualizzati solo i messaggi con un livello di registro inferiore a esso (quindi i messaggi con una gravità maggiore). Vediamo, brevemente, come sono organizzati i livelli di log: Il primo livello di log è0, identificato dalla stringaKERN_EMERG. Questo è il livello più alto in ordine di gravità: è adottato dai messaggi sull’instabilità del sistema o sugli arresti imminenti.,
Loglevel1, oKERN_ALERTè ciò che viene immediatamente dopo. Questo livello viene utilizzato in situazioni in cui l’attenzione dell’utente è immediatamente richiesta.
Il livello di log successivo in ordine di gravità èKERN_CRIT, o loglevel2. Questo livello di gravità viene utilizzato per informare su errori critici, sia hardware o software correlati.
Loglevel3, identificato anche dalla stringaKERN_ERR, è il prossimo nella scala., I messaggi che adottano questo livello sono spesso utilizzati per notificare all’utente errori non critici, come ad esempio un riconoscimento del dispositivo non riuscito o problematico, o più in generale problemi relativi al driver.

ISCRIVITI alla NEWSLETTER & RSS
Iscriviti a RSS e NEWSLETTER e ricevere le ultime notizie Linux, lavoro, consigli di carriera e tutorial.,

KERN_WARNING, o loglevel4è il livello di log solitamente utilizzato come predefinito nella maggior parte delle distribuzioni linux. Questo livello viene utilizzato per visualizzare avvisi o messaggi su errori non imminenti.

Loglevel5èKERN_NOTICE. I messaggi che utilizzano questo livello di gravità riguardano eventi che potrebbero essere degni di nota.,
Loglevel6èKERN_INFO: questo è il livello di log utilizzato per i messaggi informativi sull’azione eseguita dal kernel.
Infine, abbiamoKERN_DEBUG, o loglevel7, che viene utilizzato principalmente per il debug.

Come controllare il livello di log predefinito corrente

Controllare il loglevel predefinito utilizzato sul nostro sistema è molto semplice. Tutto quello che dobbiamo fare è esaminare il contenuto del file/proc/sys/kernel/printk., Per quelli di voi che non lo sanno,/procè unvirtual filesystem: i file in esso contenuti non sono effettivamente sul disco,ma sono una rappresentazione visiva dello stato del sistema creato dal kernel e mantenuto in memoria. In questo caso, ad esempio, possiamo utilizzare il file menzionato sopra per interrogare le informazioni sul livello di log della console predefinito impostato nel nostro sistema. Tutto quello che dobbiamo fare è eseguire:

$ cat /proc/sys/kernel/printk

Questo è l’output tipico del comando:

4 4 1 7

Il primo valore nel nostro output è la correnteconsole_loglevel., Questa è l’informazione che stavamo cercando: il valore,4in questo caso, rappresenta il livello di log attualmente utilizzato. Come detto prima ciò significa che solo i messaggi che adottano un livello di gravità superiore a quello, verranno visualizzati sulla console.
Il secondo valore nell’output rappresentadefault_message_loglevel. Questo valore viene utilizzato automaticamente per i messaggi senza un livello di log specifico: se un messaggio non è associato a un livello di log, questo verrà utilizzato per esso.
Il terzo valore nell’output riporta lo statominimum_console_loglevel., Indica il loglevel minimo che può essere utilizzato perconsole_loglevel. Il livello qui usato è1, il più alto.
Infine, l’ultimo valore rappresenta ildefault_console_loglevel, che è il loglevel predefinito utilizzato perconsole_loglevelal momento dell’avvio.,
Per completezza, va detto che le stesse informazioni possono essere recuperate anche attraverso l’utilizzo di tagsysctlcomando, l’esecuzione di:

$ sysctl kernel.printk

Cambiare il livello di log della console

Abbiamo appena visto come recuperare informazioni circa l’attuale livello di log in uso per la console. In alcune situazioni potremmo voler cambiare quel valore: vediamo come possiamo realizzare questo compito.
Il metodo più semplice che possiamo usare è scrivere il nuovo valore nel file/proc/sys/kernel/printk., Questa tuttavia è una soluzione temporanea e la nuova impostazione non persisterà al riavvio della macchina., Dire che si desidera modificare l’impostazione predefinita livello di log della console3ecco che cosa ci sarebbe:

$ echo "3" | sudo tee /proc/sys/kernel/printk

O se si utilizza il tagrootaccount direttamente:

# echo "3" > /proc/sys/kernel/printk

guardando il contenuto del file, è possibile verificare il livello di log è ora l’unico che abbiamo indicato nel nostro comando:

$ cat /proc/sys/kernel/printk3 4 1 7

E ‘ possibile ottenere lo stesso risultato utilizzando ilsysctlcomando:

sudo sysctl -w kernel.printk=3

ripeto di nuovo: questi sono temporanei, non persistente soluzioni., Per modificare il loglevel predefinito in modo persistente, dobbiamo modificare il file/etc/default/grub, passando il parametrologlevelalla riga di comando del kernel all’avvio: Sopra è il contenuto del file /etc/default/grub, ed evidenziato è il parametro che dovrebbe essere aggiunto aGRUB_CMDLINE_LINUX, che contiene istruzioni della riga di comando del kernel. In questo caso abbiamo usatologlevel=3, poiché volevamo usare quel loglevel specifico per la console., Dopo aver modificato il file e salvato le modifiche, dobbiamo ricaricare grub in modo che la nuova configurazione venga applicata al prossimo riavvio: il comando per eseguire questa operazione dipende dalla distribuzione che stiamo eseguendo. Genericamente il comando è:

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Nella distribuzione basata su Debian, viene utilizzato uno script wrapper per eseguire fondamentalmente la stessa operazione:

$ sudo update-grub

La configurazione di grub verrà aggiornata e al successivo riavvio, il livello di log specificato verrà adottato come predefinito.,

Conclusioni

In questo tutorial abbiamo imparato come i log del kernel linux sono organizzati in base al loro livello di gravità. Abbiamo anche visto come possiamo modificare la configurazione predefinita in modo che solo alcuni messaggi inviati dal kernel vengano visualizzati sulla console, utilizzando gli stessi criteri. Infine abbiamo visto come rendere tali modifiche persistenti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *