Cómo mantener los mensajes de registro de haproxy fuera de / var / log / syslog

29

Configuré el registro de haproxy a través de rsyslogd usando los consejos de este artículo , y todo parece estar funcionando bien. Los archivos de registro obtienen los mensajes de registro.

Sin embargo, cada mensaje de registro de haproxy también aparece en /var/log/syslog. Esto significa que una vez que el servidor se active, el syslog será bastante inútil, ya que se ejecutará con mensajes de registro de haproxy.

Me gustaría filtrar esos mensajes de /var/log/syslog. Después de revisar la documentación de rsyslogd, intenté cambiar el archivo /etc/rsyslog.d/50-default.confasí:

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

Simplemente agregué la ;haproxy.noneparte. Después de reiniciar rsyslogd, dejó de funcionar por completo hasta que revertí mis cambios.

¿Qué estoy haciendo mal?

itsadok
fuente

Respuestas:

26

También puede hacer lo siguiente, para que no entren en ningún otro registro:

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

Los & ~medios para no poner lo que coincide en la línea anterior en ningún otro lugar para el resto de las reglas.

Kyle Brandt
fuente
Gracias. Esto parece tener más sentido que tener que editar la configuración principal.
itsadok
13
Vale la pena señalar que si hace esto, su línea local0. * Debe procesarse antes de la línea " . " En /etc/rsyslog.d/50-default.conf. Creé un archivo llamado /etc/rsyslog.d/haproxy.conf para contener mi configuración de registro específica de haproxy, pero se registró en syslog a pesar de tener un "& ~" al final. Esto se debe a que (por supuesto) 50-default.conf se carga antes que haproxy.conf, por lo que el catchall " . " Coincidía antes que mi línea "local0. *". La solución fue cambiar el nombre de mi archivo específico de haproxy a /etc/rsyslog.d/49-haproxy.conf
Giles Thomas
1
FYI una pequeña actualizaciónrsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD
Esto discute el uso de en & stoplugar de & ~: rsyslog.com/doc/v8-stable/compatibility/v7compatibility.html .
slm
14

El uso de & ~se desactivó en la v7 de rsyslogd, y se recomienda usarlo & stopen su lugar. Puede leer más al respecto en esta sección de la página de compatibilidad de v7 .

La acción omruleset y descartar (~) está en desuso

Ambos continúan funcionando, pero han sido reemplazados por mejores alternativas.

La acción de descarte (carácter tilde) ha sido reemplazada por la directiva "detener" RainerScript. Se considera más intuitivo y ofrece un rendimiento ligeramente mejor.

El módulo omruleset ha sido reemplazado por la directiva "call" de RainerScript. Call permite ejecutar un conjunto de reglas como una subrutina, y lo hace con un rendimiento mucho mayor que omruleset. Tenga en cuenta que omruleset podría ejecutarse desde una cola asíncrona. Esto fue más un efecto secundario que deseado y no está respaldado por la declaración de llamada. Si se necesitaba ese efecto, simplemente se puede simular ejecutando las acciones de los conjuntos de reglas llamadas de forma asincrónica (lo que, en cualquier caso, es la forma correcta de manejar esto).

Tenga en cuenta que los módulos en desuso emiten mensajes de advertencia cuando se utilizan. Dicen que la construcción está en desuso y qué enunciado se usará como reemplazo. Esto no afecta las operaciones: ambos módulos siguen siendo completamente operativos y no se eliminarán en el período de tiempo v7.

Entonces, para HAProxy, algo como esto:

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

En cuanto a cómo funciona, & stople dice a rsyslogd que descarte cualquier mensaje adicional que coincida con las reglas previamente coincidentes hasta este momento. Para garantizar que esta regla se recoja desde el principio, puede cambiar el nombre del archivo de /etc/rsyslog.d/haproxy.confa /etc/rsyslog.d/00-haproxy.conf.

slm
fuente
3

Ok, lo descubrí. Así es /etc/rsyslog.d/20-haproxy.confcomo se ve mi :

$ModLoad imudp
$UDPServerRun 514

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

Cambié la línea 50-default.confa:

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

Y ahora parece estar haciendo lo que quiero.

itsadok
fuente
Generalmente es preferible NO modificar los archivos de configuración creados por otros paquetes, ya que crea problemas de actualización / propiedad. Si se trata de un servidor de copo de nieve único, está bien, pero para implementaciones automatizadas, modificar 50-default.conf es generalmente una "cosa mala".
Bruce Edge
2

Hay una mejor solución para el registro de haproxy.

  • HAproxy se ejecuta en chroot, por lo que no se puede acceder /dev/log
  • Según el manual oficial, rsyslog debe configurarse para escuchar el socket de red:

    # 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
    

Pero solo puede usar sockets rsyslog para eso:

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
          .......
usuario320813
fuente
1

Prefiero no meterme con el orden del archivo, así que en su lugar agrego un local0.none al . Entrada de línea. Config se parece a:

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

local2.*                                                 /var/log/haproxy.log

(Probado en CentOS 7)

¡Espero que ayude!

mgna20
fuente