Como configurar o rsyslog para logar no PostgreSQL sem muita latência?

4

Eu estou tentando configurar o RSyslog em uma máquina Debian para logar tudo no PostgreSQL, enquanto também registro como sempre no disco.

Estou usando uma configuração Debian de ações e ativei as diretivas de configuração relacionadas depois de ler a documentação no link e link .

Parece funcionar, mas as mensagens são gravadas no disco ou enviadas para o PostgreSQL somente quando estou parando o RSyslog como se ele armazenasse tudo em buffer até o comando stop e estivesse escrevendo tudo na memória antes de desligar.

Embora eu provavelmente não esteja perdendo nenhuma mensagem, não é muito conveniente, já que introduz muita latência (não sei se ela despeja alguma coisa antes de desligar?), existe uma maneira de reduzi-la para que eu possa tem, em uma situação normal (servidor não ocupado), praticamente log em tempo real?

Aqui estão os meus arquivos de configuração atuais:

$ModLoad imuxsock
$ModLoad imklog

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf

auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
lpr.*               -/var/log/lpr.log
mail.*              -/var/log/mail.log
user.*              -/var/log/user.log
mail.info           -/var/log/mail.info
mail.warn           -/var/log/mail.warn
mail.err            /var/log/mail.err
news.crit           /var/log/news/news.crit
news.err            /var/log/news/news.err
news.notice         -/var/log/news/news.notice
*.=debug;auth,authpriv.none;news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;auth,authpriv.none;cron,daemon.none;mail,news.none      -/var/log/messages
*.emerg             :omusrmsg:*
daemon.*;mail.*;news.err;*.=debug;*.=info;*.=notice;*.=warn   |/dev/xconsole

$ModLoad ompgsql
*.* :ompgsql:localhost,syslog,syslog,syslog

$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName dbq    # set file name, also enables disk mode
$ActionResumeRetryCount -1  # infinite retries on insert failure

Eu também tentei não usar as configurações do link , que é suposto fazer esse tipo de buffering (embora eu espero que ele fique vermelho de vez em quando), mas eu tenho o mesmo comportamento com ou sem eles.

    
por Jonathan Ballet 07.06.2013 / 15:14

1 resposta

2

Você leu o link antes de aplicar a configuração de lá? O artigo diz que a configuração lá faz exatamente o que acontece no seu caso: A saída é armazenada em buffer na memória e no disco antes de gravar no banco de dados.

Se você não quiser que a saída seja armazenada em buffer, basta usar a configuração do link sem aplicando as outras coisas.

    
por 07.06.2013 / 15:52