Comprendere i log di Linux: Panoramica con esempi

Log di Linux

I log e l’output dei programmi sono parte integrante dell’intera struttura del sistema Linux. Nel territorio di Linux, i log sono una fonte vitale di informazioni sugli incidenti di sicurezza, sulle attività delle applicazioni e sugli eventi di sistema. La gestione efficace dei log di Linux è fondamentale per la risoluzione dei problemi e per garantire la conformità. Questo articolo esplora l’importanza della registrazione e i principali tipi di log di Linux prima di trattare alcuni utili strumenti da riga di comando e altri suggerimenti per aiutarti a gestire i log di Linux.

L’importanza dei log di Linux

I log forniscono una panoramica di alto livello delle applicazioni e dei processi che il sistema esegue automaticamente in background. Questi log forniscono una traccia di verifica per scoprire ciò che un sistema sta facendo o no, e i successi e gli errori generati durante tali attività. Molte applicazioni dell’ecosistema Linux producono output il quale è leggibile dall’uomo e, se tale output viene reindirizzato ad un file di log, è analizzato automaticamente dagli strumenti inclusi in un sistema Linux. Il recupero delle informazioni storiche senza che esse siano presenti in un log sarebbe difficile, se non impossibile, anche se non è necessario entrare nel log per farlo. 

È importante evidenziare uno dei vantaggi notevoli che ne ricava l’ambiente di lavoro. Integrando perfettamente l’interfaccia utente con l’architettura del sistema sottostante, il ciclo di feedback si riduce durante la fase di sviluppo e oltre. Genera quindi un output prezioso che può essere trasformato in informazioni utili per l’intero ciclo di vita dell’applicazione.

Tipi di log di Linux

  • Log di Linux di sistema: catturano informazioni sul sistema operativo, come messaggi di avvio, eventi hardware e attività del kernel. 
  • Log di Linux delle applicazioni: registrano eventi specifici relativi al software, come messaggi di manutenzione, errori, avvisi e attività dell’utente.
  • Log di Linux di sicurezza: tengono traccia degli eventi relativi alla sicurezza, compresi gli accessi non autorizzati, gli accessi regolari e le attività del firewall. 

Ognuno di questi può quindi servire come inserimento o attivazione per applicazioni o script, compresa l’integrazione con la maggior parte dei software di monitoraggio aziendali.

Formati Syslog e journald log

I file di log di Linux possono essere archiviati in diversi formati, tra cui i più comuni sono i log di sistema centralizzati con il journaling e i log di testo normale. 

In generale, il formato syslog è memorizzato in log in testo normale, facilmente leggibili e analizzabili. Tale formato ha vantaggi e svantaggi, così come journald, che memorizza i log in un formato binario leggibile dal comando journalctl

La maggior parte delle moderne distribuzioni Linux tende a utilizzare i log journald di systemd almeno per le applicazioni di sistema principali. I log journal di systemd offrono vantaggi quali le strutture di registrazione centralizzate, il monitoraggio in tempo reale dei dati di log strutturati e indicizzati e la crittografia automatica dei log. In confronto, la natura meno restrittiva dei tradizionali log di testo normale di Linux potrebbe sembrare più rischiosa a prima vista. Non lasciarti ingannare però: i log di testo normale hanno ancora molti usi.

La maggior parte o tutte le funzioni integrate in systemd, come i sistemi di log remoti, il monitoraggio centralizzato, la rotazione dei log e i backup, sono offerte anche da altri pacchetti Linux standard. Uno svantaggio di journald è la sua natura monolitica relativamente “pesante” rispetto agli strumenti a riga di comando Linux più versatili, utilizzati per interagire con i file syslog, come grep, awk o tail. In confronto, quando si usa journald, tutte le sue caratteristiche sono installate e funzionanti: archiviazione, crittografia, registrazione centralizzata, rotazione dei log e altro ancora, indipendentemente dal fatto che tu ne abbia bisogno o meno.

Confronto di funzionalità: registrazione syslog vs journald

Funzionalità syslog journald
Formato di archiviazione                                                                                  File di testo normale Formato binario con dati strutturati
Compatibilità Ampiamente supportato da diversi strumenti di gestione dei log Richiede l’integrazione di systemd per la piena funzionalità
Rotazione dei log Configurazione manuale della rotazione dei log Rotazione e compressione automatica dei file di log
Gestione centralizzata Si affida a server e strumenti di log esterni Supporto integrato per la registrazione centralizzata
Filtraggio e analisi Funzionalità avanzate di filtraggio e analisi del testo dalla catena di strumenti standard di Linux Filtraggio e interrogazione avanzati con journalctl
Efficienza di archiviazione Può consumare più spazio su disco a causa del formato testo normale Archiviazione più efficiente grazie al formato binario e indicizzato
Monitoraggio in tempo reale Richiede strumenti esterni o file di log di tailing Monitoraggio integrato dei log in tempo reale con journalctl
Affidabilità Vulnerabile alla corruzione o alla perdita dei file di log in caso di malfunzionamenti Scritture atomiche e struttura resiliente del file journal
Crittografia Potrebbero essere necessari meccanismi di crittografia esterni Supporta la crittografia dei dati di log

Filtrare e analizzare i dati dei log di Linux: esempi utili

Esempi di journald:

Esempio: journalctl -p err

Spiegazione: Filtra i log journal per visualizzare solo le voci con livello di gravità “err” , che rappresentano errori. In questo modo è possibile concentrarsi sui messaggi di errore e identificare rapidamente eventuali problemi critici nei log di sistema.

Esempio: journalctl _SYSTEMD_UNIT=nginx.service

Spiegazione: Filtra i log journal per visualizzare le voci relative a nginx.service. Aiuta a isolare i log specifici, ad esempio del server web Nginx, facilitando la risoluzione dei problemi o il monitoraggio delle sue attività.

Esempio: journalctl –since “2023-07-21” –until “2023-07-22”

Spiegazione: Filtra i log journal per visualizzare le voci tra le date specificate, in questo caso dal 21 luglio 2023 al 22 luglio 2023. Permette di concentrarsi sulle voci di registro in un intervallo di tempo specifico, aiutando a eseguire il debug o a indagare sugli eventi che si sono verificati in quel periodo.

Esempi di syslog:

Esempio: grep -i “warning” syslog.log | grep -v “deprecato”

Spiegazione: Esegue un processo di filtraggio in due fasi. Per prima cosa utilizza grep con l’opzione -i per cercare le righe che corrispondono alla stringa “warning” in syslog.log, quindi invia l’output a un altro comando grep con l’opzione -v, escludendo le righe che corrispondono alla stringa “deprecated”. Consente di filtrare i messaggi di avviso specificamente contrassegnati come deprecati.

Esempio: grep ‘string1|string2[|string3]’ logfile.log

Spiegazione: Effettivamente una ricerca OR utilizzando grep. L’uso di virgolette singole e del simbolo di pipe tra di esse consente di cercare più stringhe con un singolo comando grep.

Altri suggerimenti sugli strumenti di logging

Sebbene gli strumenti standard di Linux siano utilizzati a beneficio del sistema, è utile impiegarli anche altrove:

  • logrotate: Utile nella fase di sviluppo dell’applicazione per gestire i log di output di debug
  • tail -f: il comando “tail” stampa le ultime 10 righe di un file prima di uscire. L’opzione “-f” “segue” il file di log, osserva le nuove voci del file di log e si aggiorna quando vengono aggiunte nuove righe.
  • multitail: Visualizza più file di log in riquadri affiancati in tempo reale, in modo da poterli monitorare contemporaneamente.

In questo articolo abbiamo discusso vari aspetti dell’importanza del logging, confrontato diversi tipi di log di Linux e toccato casi d’uso meno consueti per accedere al tuo lavoro. Abbiamo anche esplorato una serie di esempi di comandi e altri strumenti che contribuiscono a un’efficace gestione dei log di Linux.  Utilizza i log di Linux per tenere traccia delle informazioni su sistemi operativi, applicazioni e sistemi Linux e per gestire meglio i tuoi endpoint Linux. Scopri qualcosa in più sul software di monitoraggio remoto ed endpoint management di NinjaOne e su come può aiutarti a gestire più facilmente i tuoi dispositivi Linux distribuiti.

Passi successivi

Le basi della sicurezza dei dispositivi sono fondamentali per lo stato della tua sicurezza complessiva. NinjaOne semplifica l’applicazione di patch, l’hardening, la protezione e il backup di tutti i dispositivi in modo centralizzato, da remoto e su larga scala.

Ti potrebbe interessare anche

Pronto a semplificare le parti più complesse dell'IT?
×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.