Table of Contents

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

# 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
}
# provides RELP syslog reception
module(load="imrelp")
input(type="imrelp" port="2514" maxDataSize="10k" keepAlive="on" ruleset="LogRemoti")
/var/log/remote/*.log
{
        rotate 24
        weekly
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                  /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

Configurazione della macchina che deve inviare i log

# 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
# 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