I want to rotate and separate the routers and switches in a log with a date stamp called 'rslog-YYYY-MM-DD' also the firewalls into a log with a date stamp called 'fwlog-YYYY-MM-DD'
Para começar, você precisa separar seu firewall e alternar com a filtragem no rsyslog. Exatamente como fazer isso varia com base na versão do rsyslog que você está executando. Eles mudaram a sintaxe de configuração um pouco ao longo do tempo. Minhas anotações abaixo são baseadas em uma versão mais antiga do Rsyslog v3 que acompanha a Red Hat. Você vai querer verificar isso contra a documentação para o seu lançamento.
Para um filtro baseado em propriedade, será algo parecido com:
:fromhost-ip,isequal,"192.168.1.1" /var/log/prd/fwlog
&~
:fromhost-ip,isequal,"192.168.1.254" /var/log/prd/rslog
&~
A próxima parte é o seu nome de arquivo desejado. Para isso, você combinará a filtragem com os modelos do rsyslog para gerar nomes de arquivos dinâmicos para seus registros.
$template Firewall,"/var/log/prd/fwlog-%$YEAR%-%$MONTH%-%$DAY%"
$template Switch,"/var/log/prd/rslog-%$YEAR%-%$MONTH%-%$DAY%"
:fromhost-ip,isequal,"192.168.1.1" -?Firewall
&~
:fromhost-ip,isequal,"192.168.1.254" -?Switch
&~
I want to compress(gzip?) the logs after 48hrs.
A última parte, compactação, dependeria de uma tarefa cron diária que comprime arquivos. (Onde $ date é $ today - 2.) O comando date já possui um formato interno para AAAA-MM-DD, então vamos usar isso. ( %F
)
gzip /var/log/prd/*-$(date --date='2 days ago' +%F)