Guarda una demo×
×

Guarda NinjaOne in azione!

Gestione dei log di Linux: Tecniche avanzate e best practice

Gestione dei log di Linux blog

La gestione dei log di Linux è fondamentale per mantenere la salute del sistema, risolvere i problemi e garantire la sicurezza. Questo articolo esplora le tecniche avanzate e le best practice per un’efficace gestione dei log di Linux. Che tu sia amministratore Linux esperto o alle prime armi, questi approfondimenti ti aiuteranno a ottimizzare i processi di gestione dei log di Linux.

I log di Linux sono molto importanti per le attività del sistema e offrono informazioni su operazioni, errori e incidenti di sicurezza. Una gestione efficace dei log è fondamentale per gli amministratori di sistema e le organizzazioni. I log fungono da archivio storico e aiutano nell’analisi post incidente, nell’ottimizzare le prestazioni e nella conformità alle normative. Il monitoraggio in tempo reale dei log aiuta a rilevare anomalie e potenziali violazioni della sicurezza, consentendo interventi tempestivi. La risoluzione dei problemi diventa più efficiente in quanto gli amministratori individuano le cause principali analizzando i modelli di log. In definitiva, una solida gestione dei log di Linux garantisce la continuità operativa, migliora l’affidabilità del sistema e facilita la rapida risoluzione dei problemi.

Tuttavia, la gestione dei log presenta delle sfide. L’enorme volume di log di Linux generato da varie applicazioni e servizi può sopraffare gli amministratori. I formati e le posizioni diverse dei log rendono complessa l’aggregazione, ostacolando l’analisi olistica. Criteri di conservazione inadeguati possono portare all’esaurimento dello spazio su disco. Una trasmissione efficiente e sicura dei log è essenziale per evitare perdite di dati durante il trasferimento. 

Inoltre, l’analisi manuale dei log di Linux può richiedere molto tempo ed essere soggetta a errori. L’equilibrio tra l’esigenza di una registrazione completa e le esigenze delle prestazioni può essere delicato. Per affrontare queste sfide sono necessari processi semplificati, strumenti automatizzati, centralizzazione, criteri di conservazione e tecniche efficaci di analisi dei log per estrarre informazioni significative dai dati.

Tipi di log e come interagire con essi

Registrazione

Approccio

ELK (Elasticsearch, Logstash e Kibana) (r)syslog journald
Registrazione I log vengono raccolti utilizzando Logstash. Elasticsearch indicizza e memorizza i log. I log sono gestiti da (r)syslog daemon. I log possono essere scritti in vari file. I log sono gestiti da journald daemon. I log sono memorizzati in formato binario.
Trasporto Logstash viene utilizzato per elaborare e trasportare i log a Elasticsearch. syslog-ng e rsyslog trasportano i log su server remoti o file locali. Servizio nativo di systemd per l’archiviazione dei registri.
Indicizzazione Elasticsearch indicizza e ricerca i log, fornendo una potente indicizzazione. (r)syslog può inoltrare i log ad altri sistemi per l’indicizzazione centralizzata. systemd-journald memorizza i log in file indicizzati in /var/log/journal.
Ricerca dei log Kibana fornisce un’interfaccia visiva per l’analisi e la visualizzazione dei log. I log possono essere ricercati utilizzando strumenti della riga di comando o strumenti di terze parti. l’utilità a riga di comando journalctl per la ricerca e la visualizzazione dei log.
Pro
  • Elaborazione centralizzata dei log.
  • Indicizzazione altamente personalizzabile.
  • Dashboard interattive (Kibana).
  • Ubiquitario sui sistemi Linux.
  • Leggero ed efficiente.
  • Flessibilità nell’inoltro dei log.
  • Archiviazione efficiente dei metadati.
  • Cattura i log dei tempi di avvio.
Contro
  • Richiede configurazione e manutenzione.
  • Ad alta intensità di risorse (RAM, memoria).
  • Configurazione complessa (Logstash).
Può richiedere strumenti aggiuntivi per le funzioni avanzate. Compatibilità con le versioni precedenti limitata.

Nei sistemi Linux, per impostazione predefinita, i log sono generalmente memorizzati nella directory /var/log, anche se questo è tecnicamente arbitrario e si possono memorizzare i log ovunque con i giusti permessi. Ogni file log di Linux ha uno scopo specifico, dal monitoraggio dei messaggi di avvio del sistema (dmesg) al controllo dei tentativi di autenticazione (auth.log).

Ad esempio, per visualizzare i messaggi relativi al kernel, utilizza:

dmesg | less

Ulteriori esempi sono riportati nella sezione “Padronanza della riga di comando”.

Gestione dei log di Linux

Gestione centralizzata dei log

La centralizzazione dei log di Linux migliora la loro analisi e i processi di risoluzione dei problemi consolidando i dati di log provenienti da varie fonti in un unico archivio. Ciò semplifica l’accesso e fornisce una visione olistica dell’attività del sistema, consentendo agli amministratori di identificare rapidamente schemi, anomalie e potenziali problemi nell’intera infrastruttura.

I log centralizzati facilitano la correlazione efficiente tra le diverse fonti di log di Linux, rendendo più facile risalire alla causa principale dei problemi che potrebbero riguardare più sistemi o applicazioni. Gli amministratori possono applicare tecniche di analisi coerenti, che portano a una più rapida identificazione e risoluzione dei problemi.

Inoltre, i log centralizzati consentono di implementare strumenti avanzati di ricerca, filtraggio e reporting, permettendo agli amministratori di estrarre in modo efficiente le informazioni rilevanti da grandi set di dati. Questa capacità semplifica l’identificazione degli eventi critici, la comprensione del comportamento del sistema e la risposta agli incidenti di sicurezza.

La centralizzazione consente agli amministratori di disporre di un archivio di log di Linux completo, accessibile e organizzato. Riduce in modo significativo il tempo e l’impegno necessari per l’analisi dei log e la risoluzione dei problemi, promuovendo una gestione proattiva del sistema e mantenendo l’integrità operativa.

La centralizzazione dei log di Linux in un sistema dedicato semplifica il monitoraggio e la risoluzione dei problemi consolidando i log di Linux ed eliminando gli accessi dispersi. La centralizzazione facilita anche l’analisi delle infrastrutture, il rilevamento efficiente delle anomalie e il rispetto dei requisiti di conformità. Strumenti avanzati di ricerca e reportistica forniscono informazioni utili, ottimizzano la gestione del sistema, snelliscono i processi e migliorano la sicurezza generale. Tale pratica consente agli amministratori di gestire i sistemi e garantire l’integrità operativa in modo proattivo.

Ricorda che ogni approccio ha i suoi punti di forza e di debolezza e la scelta dipende da fattori quali la crescita del tuo ambiente, i casi d’uso specifici, la disponibilità di risorse e la familiarità con le tecnologie.

La centralizzazione dei log di Linux offre diversi vantaggi, tra cui un’analisi semplificata e una risoluzione efficiente dei problemi. Lo stack ELK (Elasticsearch, Logstash, Kibana) è una scelta popolare per la centralizzazione. Elasticsearch indicizza e ricerca i log, Logstash analizza e inoltra i log e Kibana ne fornisce la visualizzazione.

Backup e conservazione dei log efficienti

Journald utilizza un formato di registro binario per un’archiviazione efficiente. La rotazione dei log di Linux in journald è automatica ed efficiente dal punto di vista dello spazio. Quando l’archiviazione dei log si avvicina a una soglia predefinita, i log di Linux più vecchi vengono gradualmente eliminati, mantenendo un limite di archiviazione stabilito e garantendo al contempo l’accessibilità ai log recenti per l’analisi.

Con (r)syslog/logrotate, le stesse regole predefinite si applicano alla maggior parte dei sistemi che utilizzano ancora questo sistema come sistema di registrazione principale. La configurazione dei criteri di logrotate è un passo fondamentale per mantenere i file di log di Linux in modo efficiente. Definendo i file log, specificando la frequenza di rotazione, impostando i criteri di conservazione e utilizzando opzioni aggiuntive, è possibile garantire una gestione efficace dei log di Linux, evitando problemi di spazio su disco e conservando i log a fini di analisi e conformità.

I backup sono essenziali anche per l’analisi storica e la conformità. Utilizza strumenti come rsync per creare backup in modo efficiente. Automatizza i backup con cron job, garantendo aggiornamenti regolari. Per gestire le dimensioni dei file log, utilizza logrotate e configura i criteri di conservazione.

Configurazione dei criteri di logrotate

Logrotate è un’utilità essenziale per la gestione dei file relativi ai log di Linux. Consente di controllare i criteri di rotazione, compressione e conservazione dei log. Ecco una breve guida su come configurare i criteri di logrotate:

File di configurazione

Apri il file di configurazione di logrotate con un editor di testo:

sudo nano /etc/logrotate.conf

Definisci i file log

Nel file di configurazione, definisci i file log che desideri gestire. Utilizza il formato Lua:

/path/to/log/file {
    opzioni
}

Opzioni

Personalizza il comportamento utilizzando varie opzioni. Alcune opzioni standard includono:

  • daily (quotidianamente): Ruota i log ogni giorno.
  • weekly (settimanalmente): Ruota i log settimanalmente.
  • monthly (mensilmente): Ruota i log mensilmente.
  • rotate (ruota) X: Conserva un numero X di log ruotati.
  • compress (comprimi): Comprimi i log ruotati.
  • delaycompress: Comprimi i registri ruotati, ma ritardi la compressione fino alla rotazione successiva.

Applicazione dei criteri di conservazione

Per impostare un criterio di conservazione per i file log di Linux, utilizza l’opzione rotate seguita dal numero di log ruotati che si desidera conservare. Per esempio:

/var/log/syslog {
    daily
    rotate 7
}

Personalizza la frequenza di rotazione dei log

Utilizzando le opzioni giornaliere, settimanali o mensili, è possibile specificare la frequenza di rotazione dei log.

Applicazione di criteri personalizzati

È possibile creare criteri di logrotate personalizzati per applicazioni specifiche aggiungendo file di configurazione separati nella directory /etc/logrotate.d/.

Test ed esecuzione

Testa la configurazione di logrotate usando il flag -d per simulare il processo di rotazione senza apportare modifiche:

sudo logrotate -d /etc/logrotate.conf

Una volta soddisfatti, esegui la rotazione dei log utilizzando:

sudo logrotate /etc/logrotate.conf

Trasmissione sicura dei log

La trasmissione sicura dei log di Linux è fondamentale per prevenire le violazioni dei dati. Implementa la sicurezza del livello di trasporto (TLS) utilizzando strumenti come OpenSSL per criptare i dati di log durante la trasmissione. Inoltre, configura protocolli come rsyslog per l’inoltro crittografato dei log attraverso i canali di rete. L’uso di un server rsyslog centralizzato è un modo abbastanza comune, non sistematico, di avere un sistema di log centralizzato, spesso con una bella interfaccia grafica web ricercabile: si inviano i syslog di tutti i server a un database SQL su un server rsyslog centrale e poi si esegue qualcosa come php-syslog-ng su quel server.

Padronanza della riga di comando per l’analisi dei log

Gli strumenti della riga di comando consentono agli amministratori di analizzare i log in modo efficiente. Utilizza grep per cercare modelli all’interno dei file log, awk per l’estrazione di dati strutturati e sed per la modifica dei messaggi. Ad esempio, per filtrare i log per una parola chiave specifica:

grep -i “parola chiave” /var/log/syslog # Ricerca le parole chiave senza distinzione tra maiuscole e minuscole in /var/log/syslog

Interagire con i log di (r)syslog

Visualizzazione dei log
  • cat /var/log/syslog # Visualizza l’intero syslog.
  • tail -n 50 /var/log/messages  # Visualizza le ultime 50 righe del log dei messaggi.
  • tail -f /var/log/messaggi # “segue” il log (mantiene aperto il log, visualizza le righe aggiunte)
Ricerca di modelli specifici

grep “errore” /var/log/syslog   # Cerca la parola “errore” nel syslog.

Inoltro dei log

echo “Questo è un log di prova” | logger  # Invia una voce di log personalizzata a (r)syslog.

Interagire con i log di systemd/journald

Visualizzazione dei log generali e di sistema
  • journalctl  # Visualizza tutti i log disponibili.
  • journalctl -u sshd  # Visualizza i log del servizio SSH.
Ricerca di modelli specifici
  • journalctl -p err # Mostra i registri con priorità “err” o superiore.
  • journalctl /usr/bin/bash # Mostra i log per un processo/comando specifico.
Visualizzazione dei log di avvio
  • journalctl -b # Visualizza i log dell’avvio corrente.
Visualizzazione dei log di emergenza

Il comando “journalctl -xe” visualizza il systemd journal con informazioni aggiuntive sugli errori. In particolare, mostra il journal con priorità di livello “emergency” o superiore, insieme a ulteriori dettagli sugli errori, come la causa e il contesto. 

Ecco cosa fa ogni parte del comando:

  • -xe: Si tratta di opzioni e parametri passati al comando journalctl:
  • -x: Questa opzione espande le voci e visualizza il messaggio completo di ogni voce di log, compresi ulteriori dettagli come il contesto e le cause dell’errore.
  • -e: Questa opzione visualizza i log con un livello di priorità pari o superiore a “emergency”. Nei livelli di log del systemd journal, “emergency” è il livello di gravità più alto.

Quando si esegue il comando journalctl -xe, viene mostrato un flusso in tempo reale di log con un livello di priorità “emergency” o superiore, che fornisce informazioni dettagliate sugli errori e sui problemi che possono essersi verificati sul sistema. Queste informazioni aggiuntive possono essere particolarmente utili per la risoluzione di problemi critici che richiedono un’attenzione immediata.

Interagire con la registrazione di ELK

Indicizzazione dei dati di log

Per indicizzare i dati di log in Elasticsearch usando Logstash:

logstash -f /path/to/config.conf

Interrogazione dei log in Kibana

Apri un browser e naviga su http://localhost:5601.

Utilizza il Query Language di Kibana per filtrare e cercare i log. Crea visualizzazioni e dashboard per analizzare i dati di log.

Tecniche avanzate: Parsing e visualizzazione

Le tecniche avanzate prevedono l’analisi dei log strutturati e la visualizzazione dei dati. Strumenti come jq sono utili per analizzare i log in formato JSON, consentendo l’estrazione selettiva di campi specifici. Visualizza i dati di log utilizzando le dashboard di Kibana per ottenere informazioni sul comportamento del sistema.

Sfruttare i log: Aprire la strada all’eccellenza operativa

Nell’ambito dell’amministrazione di Linux, la gestione avanzata dei log è uno strumento indispensabile per l’ottimizzazione. L’importanza dei log, l’abile analisi da riga di comando, la centralizzazione dei dati di log e la creazione di protocolli di backup e trasmissione affidabili sono le basi dell’integrità e della sicurezza del sistema. Implementando queste pratiche di gestione dei log di Linux, gli amministratori sono attrezzati per una rapida risoluzione dei problemi e sono in grado di monitorare il sistema in modo vigile.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento di erogazione dei servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare in termini di assistenza tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Scopri qualcosa in più su NinjaOne Endpoint Management, fai un tour dal vivo o inizia la tua prova gratuita della piattaforma NinjaOne.

Ti potrebbe interessare anche

Vuoi diventare un Ninja dell’IT?

Scopri come NinjaOne può aiutarti a semplificare le operazioni IT.

By clicking the “I Accept” button below, you indicate your acceptance of the following legal terms as well as our Terms of Use:

  • Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms.
  • Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party.
  • Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library belonging to or under the control of any other software provider.
  • Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations.
  • Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks.
  • Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script.
  • EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).