Como chamar o template para que o rsyslog 8 crie um arquivo de log por cliente

1

Estou usando o rsyslog 8.22 para receber dados do syslog enviados de hosts do cliente. Meu objetivo é ter um arquivo de log criado por cliente.

Encontrei muitos dados em versões mais antigas do rsyslog, mas a mudança na sintaxe de configuração me afetou.

Esta configuração prova que o rsyslog está funcionando, mas agrega todas as entradas em um arquivo:

if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" file="/var/log/network.log")
    stop
}

(O restante do meu /etc/rsyslog.conf é o padrão.)

O seguinte não está funcionando. (Nenhum arquivo é criado):

template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" file="DynFile")
    stop
}

O que estou perdendo?

    
por StandardEyre 05.10.2016 / 01:21

1 resposta

2

A correção é especificar dynaFile no argumento action (não file ).

template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" dynaFile="DynFile")
    stop
}

Isso cria os resultados esperados:

$ ls -l /var/log/network/    
-rw-r--r--. 1 root root       286 Oct  4 13:21 192.168.117.21.log    
-rw-r--r--. 1 root root       284 Oct  4 13:25 192.168.117.22.log
-rw-r--r--. 1 root root       184 Oct  4 13:32 192.168.117.27.log
$
    
por 05.10.2016 / 01:21

Tags