como filtrar mensagens rsyslog por tags


12

Eu tenho vários aplicativos e scripts que desejo redirecionar a saída para arquivos personalizados.

Eu inicio esses aplicativos usando

command | logger -t TAG

Gostaria de filtrar essas mensagens com base em suas tags e redirecioná-las para arquivos diferentes. Não quero usar o redirecionamento do bash, pois esses aplicativos são principalmente processos de execução longa e precisam de rotação adequada do log.

Eu tentei adicionar um filtro personalizado no /etc/rsyslog.d/60-myfilter.conf;

if $syslogtag == 'giomanager' then /var/log/giomanager.log

O que estou fazendo errado ? Qual é a maneira correta de filtrar com base na tag ou existe uma opção melhor para obter resultados semelhantes?

Respostas:


21

Eu não usei se assim (ou syslogtag), mas eu usei :<blah>,<condition> ...(em particular: msg, contém, ...), mas tente

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

O & stop(ou, & ~no rsyslog v6 e mais antigo (como no RHEL6)) faz com que a mensagem correspondente seja descartada após o log, caso contrário, será analisada ainda mais por outras regras.


Atualização: testado e

O syslogtag contém um :e deve ser incluído em ""vez de''


Obrigado pela sua resposta. Eu apenas tentei o que você propõe, na verdade, a mensagem é descartada, mas nunca é escrito para/var/log/giomanager.log
mistyrouge

@mistyrouge: see my update
user9517

2
Muito obrigado, agora tenho meu log redirecionado, /var/log/giomanager.log mas ele ainda está gravado em / var / log / syslog. Você tem uma idéia de por que isso está acontecendo e como evitá-lo?
mistyrouge

1
ação de descarte (~ indicador) é obsoleto: foi substituído pelo (melhor) alternativa "stop" declaração: kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

Então, finalmente encontrei uma solução para o meu problema.

Muito obrigado a @lain por liderar o meu caminho.

A solução, como afirmado anteriormente, é incluir um ':' no nome da tag. Além disso, e isso é muito importante, o nome do arquivo deve estar antes 50-default.confem ordem alfabética.

Para retomar, coloque o seguinte em 30-giomanager.conf:

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Observe que o arquivo /var/log/giomanager.logdeve ser gravável pelo usuário 'syslog'.


Obrigado @mistyrouge. Eu tenho o mesmo problema que você teve. Após o login no arquivo correto, meus logs serão redirecionados para / var / log / syslog. Você tem uma idéia de por que isso está acontecendo e como evitá-lo?
Mayank Patel 22/03

Não consegui fazer isso funcionar para filtrar os logs do bind9. Em vez disso, ': programname, isequal, "named" /var/log/named/named.log' funciona. Provavelmente porque a tag é como "nomeada [32193]".
Rennex

Você pode usar em startswithvez de isequalse, por exemplo, a tag contiver um PID. Ou regexpara correspondências complexas.
Tim Sylvester
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.