Регистрация всего тела POST с HAProxy?

12

Я пытаюсь отследить некоторые проблемы с тем, как клиент javascript взаимодействует с сервером приложений, и хотел бы видеть всю полезную нагрузку http (заголовки, тело и все остальное), которая передается взад и вперед.

Случилось так, что перед сервером приложений уже есть haproxy-сервер, поэтому я надеялся использовать haproxy для предоставления соответствующих журналов. Очевидно, что это было бы плохо для включения в производство, но у меня есть клон всей среды, который можно изолировать во время этой отладки.

Есть ли способ заставить haproxy регистрировать всю полезную нагрузку http для запросов POST, идущих на конкретный внутренний сервер?

Питер Гровс
источник

Ответы:

3

Haproxy не имеет возможности регистрировать содержимое POST или HTTP-тела.

Вместо этого используйте Wireshark.

длинная шея
источник
Благодарю. Я смог увидеть POST в инструментах разработчика Chrome.
Питер Гроувс
Это больше не так. Смотрите пост hack_on ниже.
PMV
18

Видимо с версии 1.6.0 (октябрь 2015) теперь можно. Есть новая директива:

option http-buffer-request

Это вы включаете в интерфейс или бэкэнд, чтобы дать HAProxy доступ к телу. И вы используете req.body для доступа к нему. Вот краткое изложение конфигурации, которую я использовал:

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
источник
Привет, есть ли способ записать этот req.body в другой файл, а не в том же haproxy.log по умолчанию?
Шоаиб Хан
Здравствуй. Как записать тело запроса и ответа в один файл журнала?
Юрий Тигиев