Mensagem do 'logger' do Rsyslog duplicada

6

Acabei de ter um problema com o módulo ijournal do rsyslog, possivelmente problema descrito aqui , pelo qual as complicações com o diário do systemd causam

the journal to return the same data endlessly in a tight loop. This results in massive message duplication inside rsyslog probably resulting in a denial-of-service when the system resouces get exhausted

De qualquer forma, o processador de fato maximizou o processador repetindo mensagens com meses de idade. Eu não sabia que o rsyslog e o journald eram tão strongmente acoplados por padrão, então eu reconfigurei o primeiro para usar um soquete ao vivo mais tradicional e mais eficiente para a entrada, conforme estas instruções :

$ModLoad imuxsock
$OmitLocalLogging off

Isto parece funcionar na medida em que o socket é criado e está em uso. No entanto, notei algo estranho ao testá-lo.

> logger "hello world"

Os resultados são em /var/log/syslog , o que é mencionado apenas uma vez em rsyslog.conf :

Apr 17 10:35:45 pidora logger: hello world
Apr 17 10:35:45 pidora logger: hello world

A mensagem é repetida e parece que todas as outras mensagens também são. Alguns deles são exatamente iguais, e alguns deles diferem em apenas um aspecto:

Apr 17 10:42:26 pidora systemd[1]: Stopping System Time Synchronized.
Apr 17 10:42:26 pidora systemd: Stopping System Time Synchronized.

O [1] é um pid. Eu acredito que o que está acontecendo é que o rsyslog está recebendo a mensagem uma vez do aplicativo e depois novamente do journald.

Isso é meio bobo. Como posso pará-lo?

    
por goldilocks 17.04.2015 / 17:15

2 respostas

5

I believe what's going on is rsyslog is getting the message once from the application and then again from journald.

Sim. A solução é incluir isso em /etc/systemd/journald.conf :

ForwardToSyslog=no

Por que não houve esse problema ao usar imjournal , não tenho certeza, mas há uma dica em man journald.conf :

ForwardToSyslog=

[...] the journal daemon shall be forwarded to a traditional syslog daemon [...] If forwarding to syslog is enabled but no syslog daemon is running, the respective option has no effect

Eu estou supondo que o que realmente significa um "daemon syslog em execução" é a presença literal de um soquete syslog tradicional.

    
por 17.04.2015 / 17:15
2

Eu também tentei esta sugestão, mas descobri que não teve efeito no meu sistema. Pelo contrário, achei este Comentário útil: syslog duplica todo o conteúdo

Comment this line .=info;.=notice;.=warn; out, mean #.=info;.=notice;.=warn; . Restart rsyslog.

como Regras do /etc/rsyslog.conf seriam a causa do fenômeno.

Na verdade, eu poderia provar isso com a Dica do "Hello World" Mensagens de Log

No meu sistema, encontrei estas configurações em /etc/rsyslog.conf

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# Log services messages
daemon.=error                                           /var/log/kern.log
daemon.*;daemon.!=error                                 /var/log/messages

Eu adicionei o daemon Facility Rules para registrar a atividade dos processos de automatização.

Agora tentei as mensagens de teste:

$ logger hello my server01 world

e encontrei esta mensagem de log em /var/log/messages

Mar 22 13:35:41 server01 user01: hello my server01 world

Mas quando tentei

$ logger -p daemon.info hello my server01 02

Encontrei estas mensagens de registro:

Mar 22 13:38:15 server01 usre01: hello my server01 02
Mar 22 13:38:15 server01 user01: hello my server01 02

Isso fez com que eu alterasse minha regra em /etc/rsyslog.conf para adicionar uma regra de exclusão daemon.none :

*.info;mail.none;authpriv.none;cron.none;daemon.none     /var/log/messages

e reiniciou o serviço rsyslog . Isso realmente parou o fenômeno.

    
por 22.03.2018 / 16:22