Rsyslog è un'utilità open source per l'elaborazione dei registri. Consente la registrazione di dati da diversi tipi di sistemi in un repository centrale. Rsyslog è un protocollo Syslog con più estensioni, funzionalità 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 del protocollo RELP
- Supporto per operazioni bufferizzate
- Ascolto di connessioni TCP/UDP (con restrizioni porta, IP)
- Supporto per il caricamento di molti moduli (ad esempio modulo per supportare il protocollo RELP)
- Supporto per il messaggio di eliminazione che contiene regole speciali configurate
In Rsyslog, i file di configurazione rimangono gli stessi di Syslog. Ciò significa semplicemente che puoi copiare un file syslog.conf direttamente in rsyslog.conf e funzionerà.
Cosa sono log e syslog?
Prima di passare al 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 all'improvviso il tuo pc si è sbriciolato o forse si è bloccato o addirittura tempi di inattività del tuo sistema e molte altre informazioni utili che non puoi vedere nel solito modo quando vengono visualizzati i messaggi di errore.
Se sai come utilizzare correttamente i registri, possono darti molte funzionalità e vantaggi per le informazioni diagnostiche sul sistema stesso.
Per impostazione predefinita, Linux utilizza il demone syslog per registrare i registri su come è in esecuzione il sistema e quindi inserire questi registri 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, consentendoti di vedere quasi tutte le azioni eseguite sul tuo PC o server.
Nel file system Linux esiste una directory speciale per la memorizzazione dei log chiamata /var/log . Questa directory contiene tutti i registri del sistema operativo stesso come:servizi o varie applicazioni in esecuzione sul sistema.
Vediamo come appaiono le directory e le strutture dei log sul nuovo Linux Ubuntu 20.04.
Directory in cui sono archiviati diversi tipi di registri:
/var/log/syslog - Memorizza tutti i messaggi di avvio, i messaggi di avvio delle applicazioni, ecc. Memorizza praticamente tutti i registri di sistema globali.
/var/log/cron - I lavori Cron sono fondamentalmente una sorta di attività pianificata e automatizzata creata nel sistema, che viene eseguita periodicamente e ripetutamente. Puoi vedere cosa memorizzerebbe questa directory dei registri.
/var/log/kern.log - memorizza i log del kernel. Non importa quali registri siano. Registri eventi, errori o registri di avviso.
/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 registri di Apache
/var/log/maillog - Registri del server di posta
Configura il server di registro centralizzato Rsyslog su Ubuntu 20.04
Dopo una breve panoramica, cosa sono i log, Syslog e dove ha posto rsyslog, passiamo al processo di configurazione stesso.
Prerequisiti
- Due server che eseguono Ubuntu 20.04
- Un indirizzo IP statico:l'esempio 192.168.0.101 è necessario per essere configurato sulla macchina server Rsyslog e 192.168.0.102 è configurato sulla macchina client Rsyslog
Il sistema Ubuntu 20.04 ha rsyslog installato per impostazione predefinita fornito con i pacchetti di sistema standard.
Puoi controllare 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
Uscita:
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
Nel caso non sia installato o in esecuzione, installa rsyslog utilizzando i seguenti comandi:
$ sudo apt-get update
$ sudo apt-get install rsyslog
Ora è il momento di andare su rsyslog.conf file, per rimuovere il commento e modificare alcune righe per eseguire il servizio rsyslog in modalità server:
$ sudo nano /etc/rsyslog.conf
Decommenta queste quattro righe che abilitano il port binding 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 la ricezione di messaggi remoti. Un modello fornirà istruzioni al server rsyslog su come archiviare i messaggi syslog in arrivo.
NOTA: Aggiungi il modello subito prima delle DIRETTIVE GLOBALI sezione:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
La riga sopra indica che i log ricevuti verranno elaborati e archiviati nella directory /var/log/. Puoi definire nel file /etc/rsyslog.conf dove rsyslog logs.
Il nome del file contiene le variabili %HOSTNAME% e %PROGRAMNAME% che rappresentano la macchina client e il nome del programma client che ha prodotto il messaggio di registro.
Salva questo e 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 possiedi il servizio firewall ufw, devi consentire le regole della porta del firewall rsyslog:
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
Per verificare la configurazione , esegui il comando seguente:
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 per inviare i log al telecomando server rsyslog.
Mentre andiamo con il file rsyslog.conf su un server remoto, lo stesso aprirà questo file sul lato client con il tuo editor preferito e modificherà alcune modifiche:
sudo nano /etc/rsyslog.conf
E consenti la conservazione dell'FQDN:in alternativa, per fare in modo che rsyslog invii il nome di dominio completo (FQDN, come system1.example.com) anziché semplicemente il nome host (system1), usa la direttiva:
$PreserveFQDN on
Aggiungi il server rsyslog remoto configurato alla fine.
@192.168.0.101:514
Oppure puoi abilitare l'invio di log su UDP. Per TCP usa @@ , invece di uno
*.* @@192.168.0.101:514
Per la fine aggiungi queste seguenti variabili nel caso in cui il server rsyslog si interrompa:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Quindi riavvia il servizio rsyslog:
sudo systemctl restart rsyslog
Verifica i log
Dopo aver completato la configurazione sulla macchina client, vogliamo verificare che tutto sia andato bene.
Vai al tuo server Rsyslog per verificare i log dal tuo computer client:
$ ls /var/log/
Troverai qualcosa del genere:
Nel mio caso la directory denominata obrad è il nome della mia macchina client che sto attualmente utilizzando. Entreremo in questa directory e vedremo qualcosa del genere:
Dovresti vedere tutti i file di registro generati da Rsyslog.
Puoi controllare uno qualsiasi di questi log con il seguente comando:Esaminiamo ad esempio systemd.log .
$ tail -f /var/log/obrad/systemd.log
E vedrai qualcosa del genere:
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 dbus\x2d:1.2\x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:[email protected].
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:[email protected]: Succeeded.
Come puoi vedere, ho avviato la modifica del testo di gedit e terminale sul mio computer client e Rsyslog ha generato e visualizzato questo in 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 per Rsyslog.