Registrando todo o corpo do POST com HAProxy?

12

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 http (cabeçalhos, corpo e tudo) que está sendo transmitida.

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, seria ruim ativar a 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 obter haproxy para registrar toda a carga http para solicitações POST indo para um servidor de back-end específico?

Peter Groves
fonte

Respostas:

3

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

Use o Wireshark.

pescoço longo
fonte
Obrigado. Acabei conseguindo ver o POST nas ferramentas de desenvolvedor do chrome.
22613 Peter Groves
Este não é mais o caso. Veja a publicação de hack_on abaixo.
PMV
18

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

option http-buffer-request

Você inclui no front-end ou no back-end para dar acesso ao HAProxy ao corpo. E você usa req.body para acessá-lo. Aqui está um resumo da configuração que eu 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
#   ...
hack_on
fonte
Oi, existe uma maneira de registrar esse req.body em um arquivo diferente e não o mesmo haproxy.log padrão?
precisa
Oi. Como registrar uma solicitação e um corpo de resposta em um arquivo de log?
Yuriy Tigiev