LINUX

Come configurare il server di registrazione centrale utilizzando Rsyslog su Ubuntu 20.04

Rsyslog è un’utilità di elaborazione dei log open source. Consente la registrazione di dati provenienti da diversi tipi di sistemi in un repository centrale. Rsyslog è un protocollo Syslog con diverse estensioni, caratteristiche e vantaggi.

Cosa rende rsyslog così potente? Rsyslog può consegnare oltre un milione di messaggi al secondo a destinazioni locali quando viene applicata un’elaborazione limitata.

In questo tutorial impariamo come installare e configurare rsyslog Su Ubuntu 20.04.

Caratteristiche di Rsyslog

Rsyslog è arrivato nel 2004. ed estende il protocollo syslog con nuove funzionalità:

  • Supporto per il protocollo RELP
  • Supporto per operazioni bufferizzate
  • Ascolto di connessioni TCP/UDP (con porta di restrizione, IP)
  • Supporto per il caricamento di molti moduli (ad es. modulo per supportare il protocollo RELP)
  • Supporto per l’eliminazione di messaggi contenenti regole speciali configurate

In Rsyslog, i file di configurazione rimangono gli stessi di Syslog. Questo significa semplicemente che puoi copiare un file syslog.conf direttamente in rsyslog.conf e funzionerà.

Cosa sono i log e il syslog?

Prima di entrare nel processo di configurazione stesso, vediamo prima a cosa servono i log? Le informazioni di registro possono davvero aiutarti a vedere cosa è successo esattamente sul tuo sistema o cosa sta succedendo esattamente sotto il cofano.

Lascia che ti faccia un esempio: se improvvisamente il tuo computer si è bloccato o forse è andato in crash o anche se il tuo sistema è spento e molte altre informazioni utili che normalmente non puoi vedere quando viene visualizzato il messaggio di errore.

Se sai come utilizzare correttamente i registri, possono fornirti molte funzionalità e vantaggi per le informazioni diagnostiche sul sistema stesso.

Per impostazione predefinita, Linux utilizza il demone syslog per registrare i log su come il sistema è in esecuzione, quindi inserisce questi log in un repository centrale in: /var/log dove possiamo esaminarli e investigarli.
In termini semplici, tutto, dagli eventi del kernel alle azioni dell’utente, viene registrato da Linux, permettendoti di vedere quasi tutte le azioni eseguite sul tuo computer o server.

Nel file system di Linux esiste una directory speciale per l’archiviazione dei registri chiamata /var/log. Questa directory contiene tutti i log del sistema operativo stesso, come: servizi o varie applicazioni in esecuzione sul sistema.

Vediamo come appaiono le strutture di directory e log su Linux Ubuntu 20.04.

Elenca la directory /var/log
Elenca /var/log

Directory in cui sono archiviati diversi tipi di log:

/var/log/syslog – Memorizza tutti i messaggi di avvio, i messaggi di avvio delle app, ecc. Memorizza virtualmente tutti i syslog globali.
/var/log/cron – I lavori Cron sono fondamentalmente una sorta di attività pianificate e automatizzate create nel sistema che vengono eseguite periodicamente e ripetutamente. Puoi vedere cosa memorizzerebbe questa directory di registro.
/var/log/kern.log – memorizza i log del kernel. Non importa quali siano i registri. Registri di eventi, errori o avvisi.
/var/log/auth.log – Registri di autenticazione
/var/log.boot.log – Registri di avvio del sistema
/var/log/mysql.d – Registri Mysql
/var/log/httpd – Directory dei log di Apache
/var/log/maillog – Registri del server di posta elettronica

Configurare il server di registro centralizzato Rsyslog su Ubuntu 20.04

Dopo una breve panoramica, cosa sono i log, Syslog e dove entra in gioco rsyslog, passiamo al processo di configurazione vero e proprio.

Prerequisiti

  • Due server che eseguono Ubuntu 20.04
  • Un indirizzo IP statico: ad esempio 192.168.0.101 deve essere configurato sul computer server Rsyslog e 192.168.0.102 è configurato sul computer client Rsyslog

Il sistema Ubuntu 20.04 ha rsyslog installato implicitamente fornito con i pacchetti di sistema standard.

Puoi verificare se è in esecuzione:

$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
     Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-03-22 21:16:34 UTC; 12h ago
TriggeredBy: ● syslog.socket
       Docs: man:rsyslogd(8)
             https://www.rsyslog.com/doc/
   Main PID: 566 (rsyslogd)
      Tasks: 4 (limit: 2281)
     Memory: 2.7M
     CGroup: /system.slice/rsyslog.service
             └─566 /usr/sbin/rsyslogd -n -iNONE

Eseguire il comando seguente per verificare la versione di Rsyslog attualmente installata:

$ rsyslogd -v

Produzione:

rsyslogd  8.2001.0 (aka 2020.01) compiled with:
         PLATFORM:                               x86_64-pc-linux-gnu
         PLATFORM (lsb_release -d):
         FEATURE_REGEXP:                         Yes
         GSSAPI Kerberos 5 support:              Yes
         FEATURE_DEBUG (debug build, slow code): No
         32bit Atomic operations supported:      Yes
         64bit Atomic operations supported:      Yes
         memory allocator:                       system default
         Runtime Instrumentation (slow code):    No
         uuid support:                           Yes
         systemd support:                        Yes
         Config file:                            /etc/rsyslog.conf
         PID file:                               /run/rsyslogd.pid
         Number of Bits in RainerScript integers: 64

Se non è installato o in esecuzione, installa rsyslog utilizzando i seguenti comandi:

$ sudo apt-get update
$ sudo apt-get install rsyslog

Ora è il momento di andare a rsyslog.conf file, per decommentare e modificare alcune righe per eseguire il servizio rsyslog in modalità server:

$ sudo nano /etc/rsyslog.conf

Rimuovere il commento da queste quattro righe che abilitano il binding delle porte udp e tcp:

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

Il passaggio successivo che dovremo aggiungere è creare un nuovo modello. Dobbiamo creare un nuovo modello per ricevere messaggi remoti. Un modello istruirà il server rsyslog su come archiviare i messaggi syslog in arrivo.

NOTA: Aggiungi il modello subito prima DIRETTIVE GLOBALI sezione:

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?remote-incoming-logs
& ~

La riga sopra indica che i log in entrata verranno elaborati e archiviati nella directory /var/log/. È possibile definire nel file /etc/rsyslog.conf dove rsyslog i log.

Il nome del file contiene le variabili %HOSTNAME% e %PROGRAMNAME% rappresentano il nome della macchina client e del programma client che ha prodotto il messaggio di registro.

File di configurazione per Rsyslog
File di configurazione per Rsyslog

Salva questo e quindi riavvia il servizio rsyslog:

$ sudo systemctl restart rsyslog

Conferma che il servizio rsyslog è in ascolto sulle porte configurate:

$ ss -tunelp | grep 514
udp    UNCONN  0       0                    0.0.0.0:514           0.0.0.0:*      ino:33591 sk:1 <->                                                             
udp    UNCONN  0       0                       [::]:514              [::]:*      ino:33592 sk:4 v6only:1 <->                                                    
tcp    LISTEN  0       25                   0.0.0.0:514           0.0.0.0:*      ino:33595 sk:7 <->                                                             
tcp    LISTEN  0       25                      [::]:514              [::]:*      ino:33596 sk:9 v6only:1 <->      

Se forse disponi di un servizio firewall ufw, devi consentire le regole della porta del firewall rsyslog:

sudo ufw allow 514/tcp
sudo ufw allow 514/udp

a controlla la configurazioneeseguire il seguente comando:

sudo rsyslogd -N1 -f /etc/rsyslog.conf

Configura Rsyslog sul client

Una volta completata questa configurazione del server rsyslog, il passaggio successivo consiste nel configurare la macchina client rsyslog in inviare i log al telecomando server rsyslog.

Mentre andiamo con il file rsyslog.conf su un server remoto, lo stesso file si aprirà sul lato client con il tuo editor preferito e modificherà alcune modifiche:

sudo nano /etc/rsyslog.conf

E consentire la conservazione dell’FQDN: in alternativa, per inviare rsyslog con il nome di dominio completo (FQDN, come system1.example.com) invece del solo nome host (system1), utilizzare la direttiva:

$PreserveFQDN on

Aggiungi il server rsyslog remoto configurato alla fine.

 @192.168.0.101:514

Oppure puoi abilitare l’invio dei log tramite UDP. Per TCP usa @@ invece di uno

*.* @@192.168.0.101:514

Infine, aggiungi le seguenti variabili nel caso in cui il server rsyslog si blocchi:

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

Quindi riavviare il servizio rsyslog:

sudo systemctl restart rsyslog

Controlla i log

Al termine della configurazione sul computer client, vogliamo verificare che tutto sia andato a buon fine.

Vai al tuo server Rsyslog per controllare i log dal tuo computer client:

$ ls /var/log/

Troverai qualcosa del genere:

Elenco di file e directory var/log
Elenca /var/log

Nel mio caso, la directory denominata obrad è il nome del mio computer client che sto attualmente utilizzando. Andremo in questa directory e vedremo qualcosa del tipo:

Elenco dei file var/log/hostname
Elenca var/log/hostname

Dovresti vedere tutti i file di registro generati da Rsyslog.

Puoi controllare uno qualsiasi di questi log con il seguente comando: Let’s inspect, per esempio systemd.log.

$ tail -f /var/log/obrad/systemd.log

E vedrai qualcosa come:

2021-03-25T11:31:59+00:00 obrad systemd[1206]: Started VTE child process 42166 launched by gnome-terminal-server process 3186.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Created slice dbusx2d:1.2x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:1.2-org.gnome.gedit@0.service.
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:1.2-org.gnome.gedit@0.service: Succeeded.

Come puoi vedere, ho avviato il terminale e l’editor di testo gedit sul mio computer client e Rsyslog lo ha generato e visualizzato nell’output.

Conclusione

In questo tutorial, abbiamo imparato come configurare i parametri di base per rsyslog utilizzando il modello client-server su Ubuntu 20.04. Syslog-ng, FluentD, Logstash, GreyLog2 e Logagent, Filebeat sono le altre alternative a Rsyslog.

Related Articles

Lascia un commento

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

Back to top button
Close