GNU/Linux >> Linux Esercitazione >  >> Linux

Guida completa alla registrazione di Linux

In qualità di amministratore di sistema Linux, ispeziona i file di registro è una delle attività più comuni che potresti dover eseguire.

Registri Linux sono fondamentali:memorizzano informazioni importanti su alcuni errori che possono verificarsi sul tuo sistema.

Potrebbero anche archiviare informazioni su chi sta tentando di accedere al tuo sistema, cosa sta facendo un servizio specifico o su un arresto anomalo del sistema che si è verificato in precedenza.

Di conseguenza, sapere come localizzare , manipola e analisi dei file di registro è sicuramente un'abilità che devi padroneggiare.

In questo tutorial, sveleremo tutto ciò che c'è da sapere sulla registrazione Linux.

Ti verrà presentato il modo in cui è strutturata la registrazione sui sistemi Linux e come diversi dispositivi virtuali e processi interagiscono insieme per registrare le voci.

Approfondiremo il protocollo Syslog e come è passato da syslogd (su vecchi sistemi) a journalctl alimentato da systemd su sistemi recenti.

Tipi di registrazione Linux

Quando hai a che fare con la registrazione di Linux, ci sono alcune nozioni di base che devi comprendere prima di digitare qualsiasi comando nel terminale.

Su Linux, hai due tipi di meccanismi di registrazione:

  • Registrazione del kernel :relativi a errori, avvisi o voci di informazioni che il tuo kernel potrebbe scrivere;
  • Registrazione utenti :legate allo spazio utente, quelle voci di registro sono relative a processi o servizi che possono essere eseguiti sulla macchina host.

Dividendo il login in due categorie, stiamo essenzialmente svelando che la memoria stessa è divisa in due categorie su Linux:spazio utente e spazio del kernel .

Registrazione del kernel

Iniziamo innanzitutto con la registrazione associata allo spazio del kernel, nota anche come registrazione del kernel.

Nello spazio del kernel, la registrazione viene eseguita tramite il Kernel Ring Buffer.

Il buffer dell'anello del kernel è un buffer circolare che è la prima struttura dati che memorizza i messaggi di registro all'avvio del sistema.

Quando avvii la tua macchina Linux, se sullo schermo vengono visualizzati messaggi di registro, tali messaggi vengono archiviati nel buffer dell'anello del kernel.

La registrazione del kernel viene avviata prima della registrazione dell'utente (gestita dal demone syslog o da rsyslog nelle distribuzioni recenti).

Il buffer ad anello del kernel, praticamente come qualsiasi altro file di registro sul tuo sistema, può essere ispezionato.

Per aprire i log relativi al kernel sul tuo sistema, devi usare "dmesg comando ".

Nota :devi eseguire questo comando come root o avere diritti privilegiati per ispezionare il buffer dell'anello del kernel.

$ dmesg

Come puoi vedere, dall'avvio del sistema fino al momento in cui hai eseguito il comando, il kernel tiene traccia di tutte le azioni, avvisi o errori che possono verificarsi nello spazio del kernel.

Se il tuo sistema ha problemi a rilevare o montare un disco, probabilmente è qui che vuoi controllare gli errori.

Come puoi vedere, il comando dmesg è un'interfaccia piuttosto carina per vedere i log del kernel, ma come fa il comando dmesg a stamparti quei risultati?

Per svelare i diversi meccanismi utilizzati, vediamo quali processi e dispositivi si occupano del Kernel logging .

Interni di registrazione del kernel

Come probabilmente hai sentito prima, su Linux, tutto è un file.

Se tutto è un file, significa anche che i dispositivi sono file.

Su Linux, il buffer dell'anello del kernel è materializzato da un file di dispositivo di caratteri nella directory /dev ed è chiamato kmsg.

$ ls -l /dev/ | grep kmsg

Se dovessimo rappresentare la relazione tra il dispositivo kmsg e il buffer dell'anello del kernel, ecco come la rappresenteremmo.

Come puoi vedere, il dispositivo kmsg è un' astrazione utilizzato per leggere e scrivere nel buffer dell'anello del kernel.

Puoi essenzialmente vederlo come un punto di ingresso per i processi dello spazio utente per scrivere nel buffer dell'anello del kernel.

Tuttavia, il diagramma mostrato sopra è incompleto poiché un file speciale viene utilizzato dal kernel per scaricare le informazioni di registro del kernel in un file.

Se dovessimo riassumerlo, affermeremmo essenzialmente che il dispositivo virtuale kmsg funge da punto di ingresso per il buffer dell'anello del kernel mentre l'output di questo processo (le righe di registro) viene stampato nel file /proc/kmsg.

Questo file può essere analizzato da un solo processo che è il più delle volte l'utilità di registrazione utilizzata nello spazio utente. Su alcune distribuzioni può essere syslogd, ma su distribuzioni più recenti è integrato con rsyslog.

L'utilità rsyslog ha una serie di moduli incorporati che reindirizzeranno i registri del kernel a file dedicati sul file system.

Storicamente, i log del kernel venivano recuperati dal demone klogd sui sistemi precedenti ma è stato sostituito da rsyslog sulla maggior parte delle distribuzioni.

Da un lato, hai utilità di registrazione che leggono dal buffer dell'anello, ma hai anche programmi di spazio utente che scrivono nel buffer dell'anello:systemd (con il famoso systemd-journal) su distribuzioni recenti, ad esempio.

Ora che sai di più sulla registrazione del kernel, vediamo come viene eseguita la registrazione nello spazio utente.

Registrazione lato utente con Syslog

L'accesso allo spazio utente è molto diverso dall'accesso allo spazio del kernel.

Sul lato utente, la registrazione si basa sul protocollo Syslog .

Syslog viene utilizzato come standard per produrre, inoltrare e raccogliere i log prodotti su un'istanza Linux.

Syslog definisce i livelli di gravità e di struttura, aiutando gli utenti a comprendere meglio i log prodotti sui propri computer.

I log possono essere successivamente analizzati e visualizzati su server denominati server Syslog.

In breve, il protocollo Syslog è un protocollo utilizzato per definire i messaggi di registro che vengono formattati, inviati e ricevuti su sistemi Unix.

Syslog è noto per la definizione del formato syslog che definisce il formato che deve essere utilizzato dalle applicazioni per inviare i log.

Questo formato è noto per la definizione di due termini importanti :strutture e priorità .

Spiegazione delle strutture Syslog

In breve, a livello di struttura viene utilizzato per determinare il programma o parte del sistema che ha prodotto i log.

Sul tuo sistema Linux, molte utilità e programmi diversi inviano registri. Per determinare quale processo ha inviato il registro in primo luogo, Syslog definisce i numeri, numeri di struttura, che vengono utilizzati dai programmi per inviare i registri Syslog.

Esistono più di 23 diverse funzionalità Syslog descritte nella tabella seguente.

Codice numerico Parola chiave Nome struttura
0 kern Messaggi del kernel
1 utente Messaggi a livello di utente
2 posta Sistema di posta
3 demone Demoni di sistema
4 autenticazione Messaggi di sicurezza
5 syslog Messaggi Syslogd
6 lpr Sottosistema stampante di linea
7 notizie Sottosistema delle notizie di rete
8 uucp Sottosistema UUCP
9 cron Demone dell'orologio
10 authpriv Messaggi di sicurezza
11 ftp Demone FTP
12 ntp Sottosistema NTP
13 sicurezza Controllo del registro di sicurezza
14 console Avvisi registro console
15 solaris-cron Registri di pianificazione
16-23 da locale0 a locale7 Strutture utilizzate localmente

La maggior parte di queste funzionalità sono riservate ai processi di sistema (come il server di posta se ne hai uno o l'utilità cron). Alcuni di essi (dal numero di struttura da 16 a 23) possono essere utilizzati da client Syslog personalizzati o da programmi utente per inviare i log.

Spiegazione delle priorità di Syslog

Livelli di gravità Syslog vengono utilizzati per valutare la gravità di un evento di registro e vanno dal debug, ai messaggi informativi ai livelli di emergenza.

Analogamente ai livelli delle strutture Syslog, i livelli di gravità sono suddivisi in categorie numeriche che vanno da 0 a 7, dove 0 è il livello di emergenza più critico .

Ancora una volta, ecco una tabella per tutti i livelli di priorità disponibili con Syslog.

Ecco i livelli di gravità del syslog descritti in una tabella:

Valore Gravità Parola chiave
0 Emergenza emerg
1 Avviso alert
2 Critico crit
3 Errore err
4 Avviso alert
5 Avviso alert
6 Informativo info
7 Debug debug

Architettura Syslog

Syslog definisce anche un paio di termini tecnici utilizzati per costruire l'architettura dei sistemi di registrazione:

  • Creatore :noto anche come "client Syslog", un originator è responsabile dell'invio del messaggio formattato Syslog sulla rete o all'applicazione corretta;
  • Relè :viene utilizzato un relè per inoltrare i messaggi sulla rete. Un relay può trasformare i messaggi per arricchirli ad esempio (famosi esempi includono Logstash o fluentd);
  • Collezionista :noti anche come “server Syslog”, i raccoglitori vengono utilizzati per archiviare, visualizzare e recuperare log da più applicazioni. Il raccoglitore può scrivere registri su un'ampia varietà di output diversi:file locali, database o cache.

Come puoi vedere, il protocollo Syslog segue l'architettura client-server abbiamo visto nei tutorial precedenti.

Un client Syslog crea messaggi e li invia a inoltri opzionali locali o distanti che possono essere ulteriormente trasferiti ai server Syslog.

Ora che sai come è strutturato il protocollo Syslog, che dire del nostro sistema Linux?

Segue questa architettura?

Architettura di registrazione locale Linux

L'accesso a un sistema Linux locale segue esattamente i principi che abbiamo descritto in precedenza.

Senza ulteriori indugi, ecco come viene strutturata la registrazione su un sistema Linux (su distribuzioni recenti)

Seguendo l'architettura originator-relay-collector descritta in precedenza, nel caso di un sistema Linux locale:

  • Gli originatori sono applicazioni client che possono incorporare librerie syslog o journald per inviare log;
  • Nessun relè è implementato per impostazione predefinita in locale;
  • I raccoglitori sono rsyslog e il demone journald ascolto su socket predefiniti per i log in entrata.

Allora, dove vengono archiviati i registri dopo essere stati ricevuti dai raccoglitori?

Posizione del file di registro di Linux

Sul tuo sistema Linux, i log sono archiviati in /var/log directory.

I log nella directory /var/log sono suddivisi nelle strutture Syslog che abbiamo visto in precedenza, seguite dal suffisso del log:auth.log, daemon.log, kern.log o dpkg.log.

Se ispezionassi il file auth.log, ti verrebbero presentati i log relativi all'autenticazione e all'autorizzazione sul tuo sistema Linux.

Allo stesso modo, il file cron.log mostra le informazioni relative al servizio cron sul tuo sistema.

Tuttavia, come puoi vedere dal diagramma sopra, c'è una coesistenza di due diversi sistemi di registrazione sul tuo server Linux:rsyslog e systemd-journal.

Rsyslog e coesistenza di systemd-journal

Storicamente, un demone era responsabile della raccolta dei log dalle tue applicazioni su Linux.

Su molte vecchie distribuzioni, questa attività era assegnata a un demone chiamato syslogd ma è stato sostituito nelle recenti distribuzioni dal demone rsyslog .

Quando systemd ha sostituito il processo init esistente sulle distribuzioni recenti, è arrivato con un proprio modo di recuperare e archiviare i log:systemd-journal.

Ora, i due sistemi coesistono ma si pensava che la loro coesistenza fosse retrocompatibile con il modo in cui i log venivano architettati in passato.

La principale differenza tra rsyslog e systemd-journal è che rsyslog manterrà i log nei file di log disponibili in /var/log mentre journald non persistere i dati a meno che non sia configurato per farlo.

Posizione dei file di registro del diario

Come hai capito dall'ultima sezione, il systemd-journal l'utilità tiene anche traccia delle attività di registrazione sul tuo sistema.

Alcune applicazioni configurate come servizi (ad esempio un server HTTP Apache) possono comunicare direttamente con il diario di sistema.

Il diario di sistema memorizza i registri in modo centralizzato è il /run/log/journal directory.

I file di registro vengono archiviati come file binari da systemd, quindi non sarai in grado di ispezionare i file usando i soliti comandi cat o less.

Invece, vuoi utilizzare il "journalctl comando ” per ispezionare i file di registro creati da systemd-journal.

$ journalctl

Ci sono molte opzioni diverse che puoi usare con journalctl, ma la maggior parte delle volte vuoi restare con l'opzione "-r" e "-u".

Per vedere le ultime voci del diario, usa "journalctl ” con “-r opzione ".

$ journalctl -r

Se desideri visualizzare i log relativi a un servizio specifico , usa l'opzione “-u” e specifica il nome del servizio.

$ journalctl -u <service>

Ad esempio, per visualizzare i log relativi al servizio SSH, eseguire il comando seguente

$ journalctl -u ssh

Ora che hai visto come leggere i file di configurazione, vediamo come puoi configurare facilmente le tue utilità di registrazione.

Configurazione registrazione Linux

Come probabilmente avrai capito dalle sezioni precedenti, il logging di Linux si basa su due componenti importanti:rsyslog e systemd-journal.

Ognuna di queste utilità ha il proprio file di configurazione e vedremo nei capitoli seguenti come possono essere configurate.

Configurazione del journal di sistema

I file di configurazione per il diario systemd si trovano in /etc/systemd directory.

$ sudo vi /etc/systemd/journald.conf

Il file denominato "journald.conf ” viene utilizzato per configurare il demone del journal sulle recenti distribuzioni.

Una delle opzioni più importanti nella configurazione del journal è "Archiviazione parametro ".

Come specificato in precedenza, i file del journal non vengono mantenuti sul tuo sistema e andranno persi al prossimo riavvio.

Per rendere persistenti i registri del diario, assicurati di modificare questo parametro su "persistente" e di riavviare il demone del journal di sistema.

Per riavviare il demone del journal, utilizzare il comando "systemctl" con l'opzione "restart" e specificare il nome del servizio.

$ sudo systemctl restart systemd-journald

Di conseguenza, i registri del journal verranno archiviati nella directory /var/log/journal accanto ai file di registro rsyslog.

$ ls -l /var/log/journal

Se sei curioso della configurazione di systemd-journal, assicurati di leggere la documentazione fornita da FreeDesktop.

Configurazione Rsyslog

D'altra parte, il servizio rsyslog può essere configurato tramite /etc/rsyslog.conf file di configurazione.

$ sudo vi /etc/rsyslog.conf

Come specificato prima, rsyslog è essenzialmente un raccoglitore Syslog, ma il concetto principale che devi capire è che Rsyslog funziona con i moduli.

La sua architettura modulare fornisce plugin come metodi nativi per trasferire i log in un file, una shell, un database o socket.

Lavorando con rsyslog, ci sono due sezioni principali che meritano la tua attenzione:moduli e regole .

Rsyslog Moduli

Per impostazione predefinita, sul tuo sistema sono abilitati due moduli:imuxsock (ascolto sul socket syslog) e diario (essenzialmente inoltrando i registri del diario a rsyslog).

Nota :potrebbe essere attivato anche imklog (responsabile della raccolta dei log del kernel).

Regole Rsyslog

Le regole la sezione di rsyslog è probabilmente la più importante.

Su rsyslog, ma puoi trovare gli stessi principi sulle vecchie distribuzioni con systemd, la sezione delle regole definisce quale registro deve essere archiviato nel tuo file system a seconda della loro struttura e priorità.

Ad esempio, prendiamo il seguente file di configurazione rsyslog.

La prima colonna descrive le regole applicate :sul lato sinistro del punto, definisci la struttura e sul lato destro la gravità .

Un simbolo jolly "*" significa che funziona per tutte le severità.

Di conseguenza, se vuoi modificare la tua configurazione di registrazione in ordine, diciamo ad esempio che sei interessato solo a severità specifiche, questo è il file che modificheresti.

Utilità di monitoraggio dei registri di Linux

Nella sezione precedente, abbiamo visto come puoi configurare facilmente le tue utilità di registrazione, ma quali utilità puoi usare per leggere facilmente i tuoi log di Linux?

Il modo più semplice per leggere e monitorare i log di Linux è utilizzare il comando tail con l'opzione "-f" per seguire.

$ tail -f <file>

Ad esempio, per leggere i log scritti nel file auth.log, devi eseguire il comando seguente.

$ tail -f /var/log/auth.log

Un altro ottimo modo per leggere i log di Linux è usare applicazioni grafiche se stai eseguendo un ambiente desktop Linux.

I "Registri ” application è un'applicazione grafica progettata per elencare i log dell'applicazione e del sistema che possono essere archiviati in vari file di log (in rsyslog o journald).

Utilità di registrazione Linux

Ora che hai visto come configurare la registrazione su un sistema Linux, vediamo un paio di utilità che puoi utilizzare nel caso in cui desideri registrare i messaggi.

Utilizzo del logger

Il logger l'utilità è probabilmente uno dei client di registro più semplici da utilizzare.

Logger viene utilizzato per inviare messaggi di registro al registro di sistema e può essere eseguito utilizzando la seguente sintassi.

$ logger <options> <message>

Supponiamo ad esempio che tu voglia inviare un messaggio di emergenza dalla struttura di autenticazione alla tua utility rsyslog, dovresti eseguire il comando seguente.

$ logger -p auth.emerg "Somebody tried to connect to the system"

Ora, se dovessi ispezionare il file /var/log/auth.log, saresti in grado di trovare il messaggio che hai appena registrato sul server rsyslog.

$ tail -n 10 /var/log/auth.log | grep --color connect

Il logger è molto utile, ad esempio, quando viene utilizzato negli script Bash.

E se volessi registrare i file utilizzando systemd-journal?

Utilizzo di systemd-cat

Per inviare messaggi al diario di sistema, devi usare il comando "systemd-cat" e specificare il comando che vuoi eseguire.

$ systemd-cat <command> <arguments>

Se vuoi inviare l'output del comando "ls -l" al journal, dovresti scrivere il seguente comando

$ systemd-cat ls -l

È anche possibile inviare registri di "testo normale" al journal inviando il comando echo all'utilità systemd-cat.

$ echo "This is a message to journald" | systemd-cat

Utilizzo del muro

Il comando wall non è correlato direttamente alle utilità di registrazione ma può essere molto utile per l'amministrazione del sistema Linux.

Il comando wall viene utilizzato per inviare messaggi a tutti gli utenti che hanno effettuato l'accesso.

$ wall -n <message>

Se, ad esempio, dovessi scrivere un messaggio a tutti gli utenti che hanno effettuato l'accesso per informarli del prossimo riavvio del server, eseguiresti il ​​seguente comando.

$ wall -n "Server reboot in five minutes, close all important applications"

Conclusione

In questo tutorial, hai imparato di più sulla registrazione Linux :com'è architettato e come diversi componenti di registrazione (vale a dire rsyslog e rivista ) interagiscono insieme.

Hai imparato di più sul protocollo Syslog e come configurare i collettori per registrare eventi specifici sul tuo sistema.

La registrazione di Linux è un argomento ampio e ci sono molti altri argomenti da esplorare sull'argomento.

Sapevi che puoi creare sistemi di registrazione centralizzati per monitorare i log su più macchine?

Se sei interessato alla registrazione centralizzata, assicurati di leggere la nostra guida!

Inoltre, se sei appassionato di amministrazione del sistema Linux, abbiamo una sezione completa dedicata ad esso sul sito Web, quindi assicurati di dare un'occhiata!


Linux
  1. Come installare Void Linux:una guida passo passo completa

  2. Guida completa per l'utilizzo di AsciiDoc in Linux

  3. Installa il kernel Linux 5.15 su Ubuntu 20.04 - Guida passo passo?

  4. Guida completa per principianti alla registrazione Docker

  5. Installa Linux Mint 19 su VirtualBox:la guida completa

Guida completa per installare OxygenOS su OnePlus One in Linux

La guida completa per l'utilizzo di ffmpeg in Linux

Una guida di base al processo di avvio di Linux

Guida completa all'amministrazione degli utenti su Linux

Una guida completa per installare Tomcat su Linux

Comandi della directory Linux:una guida completa