rsyslog - ação E ação

5

Eu quero criar uma regra para enviar dados de facility para o arquivo AND para o banco de dados MySQL .

Como isso pode ser realizado? Apenas adicionando segunda linha como:

syslog.*                         /var/log/syslog.log
syslog.*                         :ommysql:localhost,database,user,password

Ou há alguma maneira mais correta?

    
por setevoy 14.04.2014 / 14:48

2 respostas

5

Or there is some more correct way?

Não sei se seria considerado mais correto, já que acho que é um recurso específico do rsyslog (e pode ser considerado "mais correto" para fazer coisas de um modo compatível com o syslog sempre que possível ... ou talvez não), mas existe o "e" comercial:

syslog.*      /var/log/syslog.log
&             :ommysql:localhost,database,user,password

Está documentado aqui , se você pesquisar a página por "e comercial". Acredito que "descrição legada" se refere a não "comportamento compatível com syslog", mas ao comportamento legado do rsyslog, que agora implementa algo chamado RainerScript para escrever regras. Quanto a saber se isso é realmente mais fácil ou mais correto, neste caso, não posso dizer.

    
por 14.04.2014 / 15:07
4

Edit: isto foi válido com o exemplo dado na pergunta para começar. Desde que foi editado, e a resposta de goldilocks do TAFKA é a correta.

Você está fazendo certo. Quando você deseja selecionar um conjunto diferente de entradas de registro, você precisa especificá-lo em uma linha separada, assim como você faz. O fato de as duas seleções terem a mesma facilidade é irrelevante.

Se você quisesse fazer duas coisas no mesmo conjunto de entradas de log, poderia usar um e comercial ( & ) na segunda linha. Por exemplo. se você quisesse armazenar all mensagens do syslog em um arquivo e em um banco de dados:

syslog.*      /var/log/syslog.log
&             :ommysql:localhost,database,user,password

para reduzir a quantidade de CPU usada para avaliar o filtro. Mas esse não é o caso aqui, então sua solução é a correta.

    
por 14.04.2014 / 15:13