I file di registro sono fondamentali per il rilevamento e la risoluzione dei problemi degli errori. Sono i primi file che gli amministratori di sistema esaminano per restringere il campo alla probabile causa di un errore e, così facendo, trovare soluzioni per risolvere il problema. In un'infrastruttura con decine o centinaia di server e altri dispositivi, la gestione dei file di registro può essere una sfida. Ed è qui che entra in gioco rsyslog.
Rsyslog è un programma di registrazione opensource che facilita l'inoltro dei file di registro a un server di registro centralizzato in una rete IP. Con la registrazione centralizzata, gli amministratori possono facilmente tenere sotto controllo i file di registro di più sistemi da un punto centrale. In questo post, ti guideremo attraverso l'installazione e la configurazione di Rsyslog Server su Debian 11.
Impostazione laboratorio
Per dimostrare come Rsyslog può essere utilizzato per inviare file di registro da un sistema client al server Rsyslog, avremo una semplice configurazione Lab come mostrato
- Server Rsyslog: Debian 11 IP:192.168.1.151
- Client Rsyslog: Ubuntu 20.04 IP:10.20.0.170
Passaggio 1) Configura Rsyslog sul server
Come accennato in precedenza, Rsyslog funziona in un modello client-server e inizieremo configurando Rsyslog sul server Debian 11. Su Debian 11, Rsyslog viene installato per impostazione predefinita. Se per qualche motivo Rsyslog non è presente, puoi installarlo usando il comando:
$ sudo apt install -y rsyslog
Al momento dell'installazione puoi verificarne lo stato di esecuzione come segue:
$ sudo systemctl status rsyslog
Successivamente, configureremo rsyslog per l'esecuzione in modalità server. Il file di configurazione è il file /etc/rsyslog.conf. Quindi, modificalo usando il tuo editor di testo preferito.
$ sudo vi /etc/rsyslog.conf
Procedi e decommenta le seguenti righe che consentono la ricezione del syslog UDP e TCP da client remoti.
# provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="514")
Successivamente, incolla le seguenti righe per definire il modello che il demone Rsyslog utilizzerà per archiviare i log in entrata dai sistemi client.
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs
I file di registro utilizzeranno la seguente convenzione di denominazione:
- /%HOSTNAME%/ – Questo è il nome host del sistema client.
- /%PROGRAMNAME%/ – Identifica il programma client che ha creato il file di registro.
Per applicare le modifiche, riavvia il demone rsyslog.
$ sudo systemctl restart rsyslog
Per impostazione predefinita, rsyslog ascolta la porta 514. Puoi confermare che questa è la porta su cui è in ascolto il demone rsyslog eseguendo il comando ss.
$ sudo ss -tunlp | grep 514
Passaggio 2) Configura le regole del firewall per rsyslog
Il demone Rsyslog è in esecuzione sul server come previsto. Se stai eseguendo un firewall UFW, assicurati di consentire la porta 514 in modo da consentire i messaggi di registro in entrata.
$ sudo ufw allow 514/tcp $ sudo ufw allow 514/udp
Quindi ricarica il firewall per applicare la regola del firewall come segue.
$ sudo ufw reload
Il prossimo passo sarà configurare il sistema client Ubuntu per inviare i file di registro al server rsyslog.
Passaggio 3) Configura il sistema client rsyslog
Il passaggio finale consiste nel configurare il sistema client per l'invio dei file di registro al server rsyslog. Accedi al client e, ancora una volta, assicurati che il demone rsyslog sia installato e in esecuzione.
Quindi, modifica il file di configurazione di rsyslog.
$ sudo vi /etc/rsyslog.conf
Vai alla fine del file e aggiungi queste righe.
#Enable sending system logs over UDP to rsyslog server *.* @rsyslog-ip-address:514 #Enable sending system logs over TCP to rsyslog server *.* @@rsyslog-ip-address:514
Queste righe indicano al client di inviare i file di registro tramite i protocolli UDP e TCP al server rsyslog. Nota che la prima riga ha un unico simbolo @ che indica UDP e la seconda riga ha due @@ simboli per indicare il protocollo TCP.
Se il server remoto dovesse subire tempi di inattività e desideri preservare i tuoi log, puoi impostare il buffer della coda del disco aggiungendo le righe mostrate.
##Imposta la coda del disco quando il server rsyslog sarà inattivo:
$ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
Di seguito è riportato un riepilogo di tutte le modifiche alla configurazione del client.
Salva ed esci dal file. Ora riavvia il servizio rsyslog per rendere effettive le modifiche.
$ sudo systemctl restart rsyslog
A questo punto, il sistema client dovrebbe inviare i file di registro al server rsyslog. Torniamo al server e scopriamolo.
Passaggio 4) Visualizza i file di registro del cliente
Tutti i file di registro (inclusi i server) sono archiviati nella directory /var/log/. Per visualizzare i log del client, eseguire il comando seguente:
$ ls /var/log/
I file di registro del client verranno salvati in una directory che corrisponde al nome host del sistema client, come illustrato di seguito.
È possibile visualizzare ulteriormente i file di registro contenuti nella directory di registro principale.
$ sudo ls -l /var/log/ubuntu-20-04/
Per visualizzare i registri in tempo reale, utilizzare il comando tail come mostrato. Qui stiamo visualizzando i log dell'utente sudo.
$ sudo tail -f /var/log/ubuntu-20-04/sudo.log
Abbiamo installato correttamente rsyslog e lo abbiamo configurato per consentire l'invio di file di registro al server rsyslog dal sistema client. Ora puoi configurare tutti i sistemi client che desideri inviare i log al server rsyslog per ottenere una struttura di gestione dei log centralizzata.
Questo è tutto da questo post, spero che tu l'abbia trovato informativo. Si prega di condividere le vostre domande e feedback nella sezione commenti qui sotto.
Leggi anche :Come ruotare e comprimere i file di registro in Linux con Logrotate