Registrando todo o corpo do POST com o HAProxy?

9

Estou tentando rastrear alguns problemas com a maneira como um cliente javascript está interagindo com um servidor de aplicativos e gostaria de ver toda a carga útil HTTP (cabeçalhos, corpo e tudo) que está sendo transmitida para frente e para trás.

Acontece que já existe um servidor haproxy na frente do servidor de aplicativos, então eu esperava poder usar o haproxy para fornecer os logs relevantes. Obviamente isso seria ruim para ligar na produção, mas eu tenho um clone de todo o ambiente que pode ser isolado enquanto eu faço essa depuração.

Existe uma maneira de fazer com que o haproxy registre toda a carga HTTP para solicitações de POST que vão para um servidor de back-end específico?

    
por Peter Groves 18.07.2013 / 22:14

2 respostas

3

O Haproxy não possui um recurso para registrar o conteúdo do POST ou os corpos HTTP.

Use o Wireshark.

    
por 18.07.2013 / 22:24
14

Aparentemente, desde a versão 1.6.0 (outubro de 2015), você pode agora. Existe uma nova diretiva:

option http-buffer-request

Que você inclua no front-end ou no back-end para fornecer acesso HAProxy ao corpo. E você usa req.body para acessá-lo. Aqui está um resumo da configuração que usei:

global
        log     127.0.0.1 local0
        debug
        maxconn 2048
        ulimit-n 8012
#        ...

defaults
    mode http
    option httplog
    log-format frontend:%f/%H/%fi:%fp\ GMT:%T\  body:%[capture.req.hdr(0)]\ request:%r
    option dontlognull
#   ...

frontend www-http
   log global
   option http-buffer-request
# id=0 to store body for logging
   declare capture request len 40000
   bind 7.7.7.7:8007 
   http-request capture req.body id 0

   default_backend www-backend

backend www-backend
    mode http
    option forwardfor
#   ...
    
por 26.11.2015 / 04:36

Tags