Haproxy não está registrando solicitações?

11

Então, configurei o Haproxy para que o registro passasse pelo rsyslog e, por enquanto, fosse despejado em um arquivo.

É definitivamente o log, pois recebo as mensagens "iniciais" na inicialização, mas nenhum pedido de HTTP é registrado. 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 páginas do servidor da web entre as reinicializações do thsoe e desencadeei 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
& ~
Silver Quettier
fonte
1
você acabou resolvendo esse problema?
Terence Chow

Respostas:

11

Você precisa especificar o log no front-end se realmente deseja que todas as solicitações sejam registradas. Mas geralmente isso é um exagero para o servidor e seu disco ficará cheio rapidamente.

frontend webfront
  log /dev/log local0 debug
edlerd
fonte
Ah obrigada. Vou tentar isso o mais rápido possível. O problema é que eu preciso solucionar problemas de conexão com a instância Discourse, portanto será temporário. Parece que não posso procurá-lo, não importa o que eu tente. ( serverfault.com/questions/645031/… )
Silver Quettier 27/11
2
Tentei adicionar isso, mas ele não registra nada extra. Talvez rsyslognão esteja configurado corretamente? Haveria uma maneira de dizer?
Silver Quettier 29/11
Para mim funcionou.
Dima Medvedev
O rsyslog no ubuntu 14.0.4 parece estar configurado, embora não faça logon em /var/log/haproxy.log, por padrão, meus logs de instalação em / var / log / syslog.
lee
2
o que é/dev/log
Miranda
7

o registro via log de soquete unix não funciona para mim no meu rhel 6.7. você pode tentar com esta 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 o syslog do haproxy de uma forma simples como esta:

/etc/rsyslog.d/haproxy.conf

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

faça uma solicitação 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"
ncowboy
fonte
5

Isso pode ser causado pela execução em uma prisão chroot. Você precisará garantir que o rsyslog também esteja criando um soquete dgram dentro da prisão chroot (por exemplo, / var / lib / haproxy / dev / log). Aponte sua diretiva de log para o soquete / dev / log e você deve ser bom.

Passei algumas horas tentando descobrir isso, pois o HAproxy não diria nada de errado, além de não funcionar corretamente.

Thomas
fonte
3

Este link explica perfeitamente.

Se você olhar no topo do /etc/haproxy/haproxy.cfg, verá algo como:

global
log 127.0.0.1 local2
[...]

Isso significa que o HAProxy enviará suas mensagens para o rsyslog em 127.0.0.1. Mas, por padrão, o rsyslog não escuta nenhum endereço, daí o problema.

Vamos editar /etc/rsyslog.conf e descomentar estas linhas:
$ModLoad imudp
$UDPServerRun 514

Isso fará com que o rsyslog escute na porta UDP 514 para todos os endereços IP. Opcionalmente, você pode limitar a 127.0.0.1 adicionando:
$UDPServerAddress 127.0.0.1

Agora crie um arquivo /etc/rsyslog.d/haproxy.conf contendo:

local2.* /log/haproxy.log

Obviamente, você pode ser mais específico e criar arquivos de log separados de acordo com o nível de mensagens:

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

Em seguida, reinicie o rsyslog e veja se os arquivos de log foram criados:
# service rsyslog restart

Se você criar manualmente arquivos de log /log/haproxy-allbutinfo.loge /log/haproxy-info.lognão se esqueça de alterar o proprietário parasyslog:adm

carla
fonte