Rejestrujesz całe ciało POST za pomocą HAProxy?

12

Próbuję wyśledzić niektóre problemy ze sposobem, w jaki klient javascript wchodzi w interakcję z serwerem aplikacji i chciałbym zobaczyć cały ładunek HTTP (nagłówki, treść i wszystko), który jest przekazywany tam iz powrotem.

Zdarza się, że przed serwerem aplikacji jest już serwer haproxy, więc miałem nadzieję, że będę mógł użyć haproxy do dostarczenia odpowiednich dzienników. Oczywiście źle byłoby włączyć w produkcji, ale mam klon całego środowiska, które można odizolować podczas debugowania.

Czy istnieje sposób, aby uzyskać haproxy do rejestrowania całego ładunku HTTP dla żądań POST kierowanych do określonego serwera zaplecza?

Peter Groves
źródło

Odpowiedzi:

3

Haproxy nie ma funkcji rejestrowania treści POST ani treści HTTP.

Zamiast tego użyj Wireshark.

długa szyja
źródło
Dzięki. W końcu mogłem zobaczyć POST w narzędziach programistycznych chrome.
Peter Groves,
Tak już nie jest. Zobacz post hack_on poniżej.
PMV
18

Najwyraźniej od wersji 1.6.0 (październik 2015) możesz teraz. Istnieje nowa dyrektywa:

option http-buffer-request

Dołączasz do frontonu lub back-endu, aby zapewnić HAProxy dostęp do ciała. Aby uzyskać do niego dostęp, użyj komendy req.body. Oto podsumowanie konfiguracji, której użyłem:

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
źródło
Cześć, czy istnieje sposób, aby zalogować to wymaganie .body do innego pliku, a nie do tego samego domyślnego haproxy.log?
Shoaib Khan
Cześć. Jak zarejestrować treść żądania i odpowiedzi w jednym pliku dziennika?
Jurij Tigiew