Como manter as mensagens de log do haproxy fora de / var / log / syslog

27

Eu configurei o haproxy logging via rsyslogd usando as dicas do artigo , e tudo parece estar funcionando bem. Os arquivos de log recebem as mensagens de log.

No entanto, todas as mensagens de log do haproxy também aparecem em /var/log/syslog . Isso significa que, uma vez que o servidor entrar em operação, o syslog será completamente inútil, já que ele será executado com mensagens de log haproxy.

Gostaria de filtrar essas mensagens de /var/log/syslog . Depois de passar pela documentação do rsyslogd, tentei alterar o arquivo /etc/rsyslog.d/50-default.conf assim:

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog

Eu simplesmente adicionei a parte ;haproxy.none . Depois de reiniciar o rsyslogd, ele parou de funcionar completamente até que eu reverti minhas alterações.

O que estou fazendo de errado?

    
por itsadok 20.12.2010 / 06:49

5 respostas

24

Você também pode fazer o seguinte, o que fará com que eles não entrem em outros registros:

local0.*                        -/var/log/haproxy.log
& ~

O & ~ significa não colocar o que corresponde na linha acima em nenhum outro lugar para o resto das regras.

    
por 20.12.2010 / 19:19
13

O uso de & ~ foi preterido na v7 do rsyslogd e você é incentivado a usar & stop . Você pode ler mais sobre isso nesta seção da página de compatibilidade com v7 .

omruleset and discard (~) action are deprecated

Both continue to work, but have been replaced by better alternatives.

The discard action (tilde character) has been replaced by the “stop” RainerScript directive. It is considered more intuitive and offers slightly better performance.

The omruleset module has been replaced by the “call” RainerScript directive. Call permits to execute a ruleset like a subroutine, and does so with much higher performance than omruleset did. Note that omruleset could be run off an async queue. This was more a side than a desired effect and is not supported by the call statement. If that effect was needed, it can simply be simulated by running the called rulesets actions asynchronously (what in any case is the right way to handle this).

Note that the deprecated modules emit warning messages when being used. They tell that the construct is deprecated and which statement is to be used as replacement. This does not affect operations: both modules are still fully operational and will not be removed in the v7 timeframe.

Então, para o HAProxy, algo assim:

$ more /etc/rsyslog.d/haproxy.conf
local2.*    /var/log/haproxy.log
& stop

Como funciona, o & stop diz ao rsyslogd para descartar qualquer mensagem adicional que corresponda às regras previamente correspondidas até este ponto. Para garantir que esta regra seja atendida antecipadamente, você pode alterar o nome do arquivo de /etc/rsyslog.d/haproxy.conf para /etc/rsyslog.d/00-haproxy.conf .

    
por 31.08.2015 / 17:47
3

Ok, eu percebi. Isto é o que meu /etc/rsyslog.d/20-haproxy.conf se parece:

$ModLoad imudp
$UDPServerRun 514

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

Alterei a linha em 50-default.conf para:

*.*;auth,authpriv,local0,local1.none     -/var/log/syslog

E agora parece estar fazendo o que eu quero.

    
por 20.12.2010 / 06:56
2

Existe uma solução melhor para o registro haproxy.

  • O HAproxy é executado em chroot, por isso não é possível acessar /dev/log
  • De acordo com o manual oficial, o rsyslog precisa ser configurado para ouvir o soquete da rede:

    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    

Mas você pode usar apenas soquetes rsyslog para isso:

rsyslog.d / haproxy.conf:

    # HAproxy local socket
    $AddUnixListenSocket /var/lib/haproxy/dev/log
    :programname, contains, "haproxy" /var/log/haproxy.log
    & stop

haproxy.cfg:

    global
          log         /dev/log daemon
          chroot      /var/lib/haproxy
          .......
    
por 06.11.2015 / 13:28
1

Eu prefiro não mexer com a ordenação do arquivo, então eu adiciono um local0.none na entrada de linha . . Config parece:

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

local2.*                                                 /var/log/haproxy.log

(testado no CentOS 7)

Espero que ajude!

    
por 20.02.2016 / 18:38