Solución:
Solución 1:
También puede hacer lo siguiente para evitar que se incluyan en otros registros:
local0.* -/var/log/haproxy.log
& ~
los & ~
significa no poner lo que coincide en la línea anterior en ningún otro lugar para el resto de las reglas.
Solucion 2:
El uso de & ~
estaba en desuso en la v7 de rsyslogd, y se le recomienda usar & stop
en lugar de. Puede leer más sobre esto en esta sección de la página de compatibilidad de v7.
Las acciones omruleset y discard (~) están en desuso
Ambos continúan funcionando, pero han sido reemplazados por mejores alternativas.
La acción de descarte (carácter de 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” RainerScript. Call permite ejecutar un conjunto de reglas como una subrutina, y lo hace con un rendimiento mucho mayor que el de omruleset. Tenga en cuenta que omruleset se puede ejecutar 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 ese efecto fuera necesario, simplemente se puede simular ejecutando las acciones de conjuntos de reglas llamadas asincrónicamente (lo que en cualquier caso es la forma correcta de manejar esto).
Tenga en cuenta que los módulos obsoletos emiten mensajes de advertencia cuando se utilizan. Dicen que la construcción está obsoleta y qué declaración se utilizará como reemplazo. Esto no afecta las operaciones: ambos módulos aún están en pleno funcionamiento y no se eliminarán en el plazo de la v7.
Entonces para HAProxy algo como esto en su lugar:
$ more /etc/rsyslog.d/haproxy.conf
local2.* /var/log/haproxy.log
& stop
En cuanto a cómo funciona, el & stop
le dice a rsyslogd que descarte cualquier mensaje adicional que coincida con las reglas previamente coincidentes hasta este punto. Para garantizar que esta regla se adopte desde el principio, puede cambiar el nombre del archivo de /etc/rsyslog.d/haproxy.conf
para /etc/rsyslog.d/00-haproxy.conf
.
Solución 3:
Ok, lo descubrí. Esto es lo que mi /etc/rsyslog.d/20-haproxy.conf
parece:
$ModLoad imudp
$UDPServerRun 514
local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log
Cambié la línea en 50-default.conf
para:
*.*;auth,authpriv,local0,local1.none -/var/log/syslog
Y ahora parece estar haciendo lo que quiero.
Solución 4:
Existe una mejor solución para el registro haproxy.
- HAproxy se ejecuta en chroot, por lo que no se puede acceder
/dev/log
-
De acuerdo con el manual oficial, rsyslog debe configurarse para escuchar el conector 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 puede usar solo 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
.......