====== Come loggare da macchine remote con rsyslog (Debian 9 / Devuan Ascii e successive) ======
**Nota bene: questa pagina si riferisce a rsyslog versione 8.24. Le versioni vecchie avevano sintassi diversa.**
===== Configurazione della macchina che deve ricevere i log remoti =====
* Creare una configurazione dedicata alla ricezione dei log remoti nel file **/etc/rsyslog.d/remote.conf** (o altro nome che vi aggrada). Questa configurazione contiene TUTTE le modifiche necessarie rispetto alla configurazione standard di rsyslog su Debian/Devuan. In questo modo non occorre modificare niente altro.
# abilito la ricezione remota e dico a rsyslog che quando riceve da remoto deve
# usare la ruleset che si trova alla fine di questo file di config.
# In pratica, i log che entrano via udp o tcp vengono marcati per essere trattati
# da una specifica ruleset che si chiama "LogRemoti"
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514" ruleset="LogRemoti")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514" ruleset="LogRemoti")
# alcuni esempi di template per definire il nome del file generato
# usando diverse variabili (ne potete scommentare SOLO UNO)
#template (name="Remote" type="string" string="/var/log/remote/%fromhost-ip%.log")
template (name="Remote" type="string" string="/var/log/remote/%hostname%.log")
#template (name="Remote" type="string" string="/var/log/remote/%hostname%_%syslogfacility-text%.log")
#template (name="Remote" type="string" string="/var/log/remote/%hostname%/%syslogfacility-text%.log")
# questo template aggiunge il nome della facility dentro ad ogni riga del log.
# inoltre genera il timestamp includendo la time zone attuale (della macchina che genera il log,
# non di quella che lo sta ricevendo)
template(name="RemoteFormat" type="list") {
property(name="timestamp" dateFormat="rfc3339")
constant(value=" ")
property(name="syslogfacility-text")
constant(value=" ")
property(name="hostname")
constant(value=" ")
property(name="syslogtag")
property(name="msg" spifno1stsp="on" )
property(name="msg" droplastlf="on" )
constant(value="\n")
}
# Quando i log arrivano da tcp o udp li devo trattare con questa regola
# che usa i template definiti qui sopra per decidre cosa scrivere e dove.
# Questa parte di config deve essere l'ultima in quanto usa i template che
# sono definiti PRIMA. Se li definisco dopo, non va.
ruleset(name="LogRemoti") {
action(type="omfile" dynaFile="Remote" template="RemoteFormat")
stop
}
* Per usare RELP, occorre installare il pacchetto ''rsyslog-relp'' e poi aggiungere la configurazione per RELP, così:
# provides RELP syslog reception
module(load="imrelp")
input(type="imrelp" port="2514" maxDataSize="10k" keepAlive="on" ruleset="LogRemoti")
* Creare la directory **/var/log/remote/**
* Aggiungere una regola che ruoti i log dentro a /var/log/remote onde non trovarsi con log che crescono all'inifinito. Questo si puo` fare creando un apposito file che chiameremo **/etc/logrotate.d/rsyslog-remote**, contenente le regole di rotazione che vogliamo applicare a tutti i log remoti indistintamente. Questa per esempio ruota settimanalmente e tiene 24 settimane, ovvero circa sei mesi.
/var/log/remote/*.log
{
rotate 24
weekly
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
* Per finire si fa un restart di rsyslog e tutto dovebbe iniziare a funzionare.
===== Configurazione della macchina che deve inviare i log =====
* Per inviare i log via udp o tcp, modificare il file /etc/rsyslog.conf inserendo la direttiva di invio dei log remoti. Si puo` farlo anche piu` volte, specificando diverse impostazioni per il filtro.
# solo auth (via tcp, due "@")
auth,authpriv.* @@192.168.99.6
# tutto (via tcp, due "@")
*.* @@192.168.99.6
# tutto (via udp, una sola "@")
*.* @192.168.99.6
* Per inviare i log via RELP, la cosa si complica un poco: occorre abilitare il modulo RELP e poi definire quali log mandare al remoto
# carico il modulo per inviare via RELP
module(load="omrelp")
# invio i log che voglio via RELP
auth,authpriv.* :omrelp:192.168.99.6:2514