registro de haproxy en syslog

13

He instalado haproxy 1.5 a través de apt-get en Ubuntu 14.04 vía ppa:vbernat/haproxy-1.5según http://haproxy.debian.net/

El problema es iniciar sesión en /var/log/sysloglugar de/var/log/haproxy.log

La configuración es básicamente la predeterminada:

/etc/haproxy/haproxy.cfg

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL).
    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
        ssl-default-bind-options no-sslv3

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

/etc/rsyslog.d

# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log
&~
Petah
fuente
tal vez este enlace lo ayude: kvz.io/blog/2010/08/11/haproxy-logging
Federico Sierra

Respuestas:

21

Muy engañoso. :-) Y aquí está la respuesta engañosa:

Observe el archivo en /etc/rsyslog.dSe dice que inicie sesión en haproxy /var/log/haproxy.logPero esto no surtirá efecto sin reiniciar rsyslog:

service rsyslog restart
Sam
fuente
9

El haproxy.confarchivo predeterminado proporciona instrucciones claras en la Configuración global - global. Aquí estoy copia pegándolo por ti

# ------------------------------------------------- --------------------
# Configuración global
# ------------------------------------------------- --------------------
global
    # para que estos mensajes terminen en /var/log/haproxy.log, lo hará
    # Necesitar:
    # #
    # 1) configure syslog para aceptar eventos de registro de red. Esto esta hecho
    # agregando la opción '-r' a SYSLOGD_OPTIONS en
    # / etc / sysconfig / syslog
    # #
    # 2) configure los eventos locales2 para ir a /var/log/haproxy.log
    # archivo. Se puede agregar una línea como la siguiente a
    # / etc / sysconfig / syslog
    # #
    # #

En mi caso, por ejemplo, estoy ejecutando haproxy en CentOS 6.6, el mismo servidor syslogd y tuve que hacer lo siguiente para iniciar sesión en /var/log/haproxy.log:

  1. Agregar debajo de la línea a /etc/rsyslog.d/haproxy.conf-

    local2. * /var/log/haproxy.log
  2. Habilite el registro syslogd en el servidor -

# Proporciona recepción de syslog UDP
$ ModLoad imudp
$ UDPServerRun 514
$ UDPServerAddress 127.0.0.1
Daniel t.
fuente
2
En la última parte, en el segundo paso (Habilitar el registro de syslogd en el servidor); cambia esta configuración en el archivo /etc/rsyslog.conf. Después de eso, reinicie el servicio rsyslog: service rsyslog restart
Edenshaw
6

Comenta esta línea de /etc/rsyslog.d

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log
Como y
fuente
1
/etc/rsyslog.des un directorio, no un archivo. No estoy seguro de las diferencias entre 1.5 y 1.6 en Ubuntu, pero el archivo /etc/rsyslog.d/49-haproxy.confexiste después de la instalación de 1.6. Esto tiene las siguientes 3 líneas: $AddUnixListenSocket /var/lib/haproxy/dev/log \n if $programname startswith 'haproxy' then /var/log/haproxy.log \n &~(agregué "\ n" para denotar las nuevas líneas)
fideloper
3

el principal problema es que el haproxy chrooteado no podrá acceder /dev/log y, para evitar el problema, puede:

  • Habilite syslog para escuchar en el socket UDP (generalmente en el puerto 514) como se describe en los otros mensajes
  • Cree el directorio /var/lib/haproxy/devy monte /devcon la opción de vinculación en/var/lib/haproxy/dev

Funciona de cualquier manera.

[editar]

Después de 3 años, algo ha cambiado. Haproxy ahora crea un archivo llamado/etc/rsyslog.d/49-haproxy . Una de las líneas en el archivo es:

$AddUnixListenSocket /var/lib/haproxy/dev/log.

En este caso, el entorno chroot puede usar /dev/log

maxadamo
fuente
También puede simplemente agregar un socket de registro en el chroot. rsyslog puede tener múltiples. (Daría un ejemplo, pero han pasado años)
Florian Heigl
Este ya no es el caso para las versiones más nuevas de HAProxy, estoy ejecutando la versión 1.5.4 con una configuración chroot pero iniciando sesión /dev/log.
Overbryd
@Overbryd sí y no. El nuevo haproxy agrega un archivo en /etc/rsyslog.d, con la siguiente declaración dentro: $ AddUnixListenSocket / var / lib / haproxy / dev / log Voy a editar mi comentario en consecuencia.
maxadamo