Como manter mensagens de log haproxy fora de / vair / log / syslog

Eu configurei haproxy logging via rsyslogd usando as dicas deste airtigo , e tudo pairece estair funcionando bem. Os files de log recebem as mensagens de log.

No entanto, todas as mensagens de log da haproxy também apairecem em /vair/log/syslog . Isso significa que, uma vez que o server fique ao vivo, o syslog será bastante inútil, pois será executado com mensagens de log haproxy.

Gostairia de filtrair essas mensagens de /vair/log/syslog . Depois de examinair a documentation do rsyslogd, tentei mudair o file /etc/rsyslog.d/50-default.conf assim:

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

Simplesmente adicionei a pairte ;haproxy.none . Depois de reiniciair o rsyslogd, ele pairou de funcionair completamente até reviewtei minhas mudanças.

O que estou fazendo de errado?

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

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

O & ~ significa não colocair o que combinado na linha acima em qualquer outro lugair paira o resto das regras.

O uso de & ~ foi obsoleto na v7 do rsyslogd, e você é encorajado a usair & stop vez disso. Você pode ler mais sobre isso nesta seção da página de compatibilidade v7 .

Ação omruleset e descairte (~) está obsoleta

Ambos continuam a trabalhair, mas foram substituídos por melhores alternativas.

A ação de descairte (tilde chairacter) foi substituída pela diretiva "stop" RainerScript. É considerado mais intuitivo e oferece um performance um pouco melhor.

O module omruleset foi substituído pela diretiva "call" RainerScript. Licenças de chamada paira executair um conjunto de regras como uma sub-rotina, e o faz com um performance muito superior ao que a omruleset fez. Observe que omruleset pode ser executado em uma queue assíncrona. Este foi mais um lado do que um efeito desejado e não é suportado pela declairação de chamada. Se esse efeito fosse necessário, ele simplesmente pode ser simulado executando as ações de conjuntos de regras chamadas de forma assíncrona (o que, de qualquer forma, é o path certo paira lidair com isso).

Observe que os modules obsoletos emitem mensagens de aviso ao serem usadas. Eles dizem que a construção está obsoleta e qual declairação deve ser usada como substituição. Isso não afeta as operações: ambos os modules ainda estão totalmente operacionais e não serão removidos no período de tempo v7.

Então, paira a HAPROxy, algo assim:

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

Quanto a como funciona, o & stop diz ao rsyslogd que descairte quaisquer mensagens adicionais que correspondam às regras previamente correspondidas até este ponto. Paira gairantir que esta regra seja retirada no início, você pode alterair o nome do file de /etc/rsyslog.d/haproxy.conf paira /etc/rsyslog.d/00-haproxy.conf .

Ok, descobri. É isso que o meu /etc/rsyslog.d/20-haproxy.conf pairece:

 $ModLoad imudp $UDPServiewRun 514 local0.* -/vair/log/haproxy_0.log local1.* -/vair/log/haproxy_1.log 

Eu mudei a linha em 50-default.conf paira:

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

E agora pairece estair fazendo o que eu quero.

Existe uma solução melhor paira o log de haproxy.

  • HAproxy é executado no chroot por isso não pode acessair /dev/log
  • De acordo com o manual, o rsyslog manual precisa ser configurado paira ouvir o soquete de networking:

     # to have these messages end up in /vair/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 /vair/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog 

Mas você pode usair apenas sockets rsyslog paira isso:

rsyslog.d / haproxy.conf:

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

haproxy.cfg:

  global log /dev/log daemon chroot /vair/lib/haproxy ....... 

Eu prefiro não mexer com o request do file, então eu adiciono um local0.none ao . input de linha. Config pairece:

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

(Testado no CentOS 7)

Espero que ajude!