¿Haproxy no registra solicitudes?


11

Entonces, configuré Haproxy para que el registro pasara por rsyslog y, por ahora, se volcara en un solo archivo.

Definitivamente está registrando, ya que recibo esos mensajes de "inicio" en el inicio, pero no hay solicitudes HTTP que registren en absoluto. ¿Qué hay de malo en mi configuración?

haproxy.cfg :

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

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

frontend webfront
  option  forwardfor
  stats enable
  stats uri /haproxy?statis
  stats realm Haproxy\ Auth
  stats auth user:password
  bind *:80
  timeout client 86400000
  acl is_discourse  hdr_end(host) -i discourse.mydomain.com
  use_backend       discourse     if is_discourse
  use_backend       webserver     if !is_discourse

backend discourse
  balance source
  option forwardfor
  option httpclose
  server server1 127.0.0.1:3080 weight 1 maxconn 1024 check inter 10000

backend webserver
  balance source
  option forwardfor
  option httpclose
  server server2 127.0.0.1:4080 weight 1 maxconn 1024 check inter 10000

Archivo de registro :

root@kayak:/var/log/haproxy# tail haproxy.log
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy discourse started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webserver started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webfront started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy discourse started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webserver started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webfront started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy discourse started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webserver started.

Visité algunas de las páginas del servidor web entre estos reinicios y provoqué algunos errores 404. ¿Por qué no aparece nada?

Editar: archivo rsyslog conf.

/etc/rsyslog.d/49-haproxy.conf:

local0.* -/var/log/haproxy_0.log
if ($programname == 'haproxy') then -/var/log/haproxy/haproxy.log
& ~

1
¿terminaste resolviendo este problema?
Terence Chow el

Respuestas:


11

Debe especificar el registro en la interfaz si realmente desea que se registre cada solicitud. Pero generalmente esto es excesivo para el servidor y su disco estará lleno en poco tiempo.

frontend webfront
  log /dev/log local0 debug

Ah gracias. Lo intentaré lo antes posible. La cuestión es que necesito solucionar problemas de conexión con la instancia de Discurso, por lo que solo será temporal. Parece que no puedo usar el proxy, no importa lo que intente. ( serverfault.com/questions/645031/… )
Silver Quettier

2
Intenté agregar esto, pero no registra ningún extra. Quizás rsyslogno está configurado correctamente? ¿Habría una manera de saberlo?
Silver Quettier

Para mí funcionó.
Dima Medvedev

rsyslog en ubuntu 14.0.4 parece estar configurado, aunque no se registra en /var/log/haproxy.log, por defecto mis registros de instalación en / var / log / syslog.
Lee

2
cuál es/dev/log
Miranda

7

el registro a través de unix socket log no funciona para mí en mi rhel 6.7.puedes probar con esta conf. haproxy (trabajando en 81) reenvíe la solicitud http a httpd (trabajando en 80)

/etc/haproxy/haproxy.cfg

frontend web_front
    log         127.0.0.1    local6
    option httplog

    bind        *:81
    default_backend web_back

backend web_back
    server      web1 127.0.0.1:80

y debe habilitar el módulo rsyslog udp para recibir syslog de haproxy, una configuración simple como esta:

/etc/rsyslog.d/haproxy.conf

$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514
local6.* /var/log/haproxy.log

haga una solicitud http al 81, y obtendrá algunos registros como este

# tail -n 1 /var/log/haproxy.log
May 18 13:51:07 localhost haproxy[31617]: 127.0.0.1:38074 [18/May/2016:13:51:06.999] web_front web_back/web1 0/0/0/2/2 404 466 - - ---- 1/1/0/1/0 0/0 "GET /how-are-you HTTP/1.1"

5

Esto puede deberse a que se ejecute en una cárcel chroot. Deberá asegurarse de que rsyslog también esté creando un socket de dgram dentro de la cárcel chroot (por ejemplo, / var / lib / haproxy / dev / log). Apunte su directiva de registro al socket / dev / log y debería ser bueno.

Pasé un par de horas tratando de resolver esto, ya que HAproxy no te dirá que algo está mal además de registrar que no funciona.


3

Este enlace lo explica perfectamente.

Si observa la parte superior de /etc/haproxy/haproxy.cfg, verá algo como:

global
log 127.0.0.1 local2
[...]

Esto significa que HAProxy enviará sus mensajes a rsyslog en 127.0.0.1. Pero por defecto, rsyslog no escucha en ninguna dirección, de ahí el problema.

Editemos /etc/rsyslog.conf y descomentemos estas líneas:
$ModLoad imudp
$UDPServerRun 514

Esto hará que rsyslog escuche en el puerto UDP 514 todas las direcciones IP. Opcionalmente, puede limitar a 127.0.0.1 agregando:
$UDPServerAddress 127.0.0.1

Ahora cree un archivo /etc/rsyslog.d/haproxy.conf que contenga:

local2.* /log/haproxy.log

Por supuesto, puede ser más específico y crear archivos de registro separados según el nivel de los mensajes:

local2.=info /log/haproxy-info.log
local2.notice /log/haproxy-allbutinfo.log

Luego reinicie rsyslog y vea que se crean los archivos de registro:
# service rsyslog restart

Si crea manualmente archivos de registro /log/haproxy-allbutinfo.logy /log/haproxy-info.log, no olvide cambiar el propietario asyslog:adm

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.