Le indicazioni di questo post sono state testate con delle antenne Ubiquity e sono valide per qualsiasi sistema che utilizzi ancora rsyslog e logrotate e qualsiasi hardware che sia in grado di spedire i propri log in remoto. Lo scenario è quello di un logserver Debian che riceve i syslog di access points e stations e li divide in base all’IP di provenienza.
Per prima cosa bisogna dire ad rsyslog di ascoltare su una porta UDP o TCP per poter ricevere i log, su /etc/rsyslog.conf decommentare le righe inerenti al protocollo che si desidera utilizzare:
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
Successivamente, sempre su /etc/rsyslog.conf o come snippet in /etc/rsyslog.conf.d/ vanno inserite direttive tipo queste:
if $fromhost-ip startswith '192.168.10.' then /var/log/ubnt-stations.log
& ~
if $fromhost-ip startswith '192.168.2.' then /var/log/ubnt-stations.log
& ~
if $fromhost-ip startswith '192.168.1.' then /var/log/ubnt-APs.log
& ~
Molto utile ed importate è la riga ” & ~ ” posta immediatamente dopo la singola direttiva, vuol dire: “fermati li dove hai loggato e non andare avanti”, per evitare di spammare altri logfile tipo syslog o messages. Un restart di rsyslogd ed andiamo avanti.
Ultimo step è quello di configurare logrotate per ruotare anche questi nuovi logfile ed evitare che /var/log/ si riempia troppo presto. Le politiche più adatte spettano a voi, potete anche riciclare delle impostazioni già esistenti tra /etc/logrotate.conf.d/ o crearne una vostra, a seconda di quanto vi serva tenere i log.
Nel mio caso bastava una settimana ed ho aggiunto quei file di log (anche con wildcard) allo stesso snippet che fa ruotare syslog, ovvero ogni giorno e per una settimana, /etc/logrotate.conf.d/rsyslog:
/var/log/syslog
/var/log/ubnt-*.log
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}```
Rispondi o commenta via email.