Haproxy não registra solicitações?

8

Então, eu configurei o Haproxy para que o log passasse pelo rsyslog e, por enquanto, seja descartado em um arquivo.

Está definitivamente fazendo o log, já que recebo as mensagens de "inicialização" na inicialização, mas nenhuma requisição HTTP está registrando. O que há de errado com minha configuração?

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

Arquivo de log :

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.

Visitei algumas das páginas do servidor web entre as reinicializações e executei alguns erros 404. Por que nada está aparecendo?

Editar: arquivo conf rsyslog.

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

local0.* -/var/log/haproxy_0.log
if ($programname == 'haproxy') then -/var/log/haproxy/haproxy.log
& ~
    
por Silver Quettier 26.11.2014 / 21:42

4 respostas

7

Você precisa especificar o log no frontend se realmente quiser que todos os pedidos sejam registrados. Mas normalmente isso é um exagero para o servidor e seu disco estará cheio em pouco tempo.

frontend webfront
  log /dev/log local0 debug
    
por 26.11.2014 / 22:25
6

o registro via log de soquete unix não funciona para mim no meu rhel 6.7. você pode ter uma tentativa com este conf. haproxy (trabalhando em 81) encaminhar solicitação http para httpd (trabalhando em 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

e você deve habilitar o módulo rsyslog udp para receber syslog do haproxy um conf simples assim:

/etc/rsyslog.d/haproxy.conf

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

faça um pedido de http para 81, e você obterá alguns logs 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"
    
por 18.05.2016 / 06:52
5

Isso pode ser causado por tê-lo executado em uma cadeia chroot. Você precisará certificar-se de que o rsyslog também esteja criando um soquete de dgram dentro da jaula do chroot (por exemplo, / var / lib / haproxy / dev / log). Aponte sua diretiva de log para o soquete / dev / log e você deve ser bom.

Eu passei algumas horas tentando entender isso, já que o HAproxy não informa a você que algo está errado, além de o registro não funcionar.

    
por 07.10.2016 / 23:49
1

Este link explica perfeitamente.

If you look at the top of /etc/haproxy/haproxy.cfg, you will see something like:

global
log 127.0.0.1 local2
[...]

This means that HAProxy will send its messages to rsyslog on 127.0.0.1. But by default, rsyslog doesn’t listen on any address, hence the issue.

Let’s edit /etc/rsyslog.conf and uncomment these lines:
$ModLoad imudp
$UDPServerRun 514

This will make rsyslog listen on UDP port 514 for all IP addresses. Optionally you can limit to 127.0.0.1 by adding:
$UDPServerAddress 127.0.0.1

Now create a /etc/rsyslog.d/haproxy.conf file containing:

local2.* /log/haproxy.log

You can of course be more specific and create separate log files according to the level of messages:

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

Then restart rsyslog and see that log files are created:
# service rsyslog restart

Se você criar manualmente os arquivos de log /log/haproxy-allbutinfo.log e /log/haproxy-info.log , não se esqueça de alterar o proprietário para syslog:adm

    
por 22.11.2017 / 18:25