¿Registrar todo el cuerpo POST con HAProxy?

12

Estoy tratando de rastrear algunos problemas con la forma en que un cliente javascript interactúa con un servidor de aplicaciones y me gustaría ver toda la carga útil http (encabezados, cuerpo y todo) que se pasa de un lado a otro.

Sucede que ya hay un servidor haproxy frente al servidor de aplicaciones, por lo que esperaba poder usar haproxy para proporcionar los registros relevantes. Obviamente, esto sería malo para activar la producción, pero tengo un clon de todo el entorno que puede aislarse mientras realizo esta depuración.

¿Hay alguna forma de obtener haproxy para registrar toda la carga útil http para las solicitudes POST que van a un servidor de fondo en particular?

Peter Groves
fuente

Respuestas:

3

Haproxy no tiene una facilidad para registrar contenido POST o cuerpos HTTP.

Utilice Wireshark en su lugar.

cuello largo
fuente
Gracias. Terminé siendo capaz de ver la POST en las herramientas de desarrollador de Chrome.
Peter Groves
Este ya no es el caso. Ver la publicación de hack_on a continuación.
PMV
18

Aparentemente desde la versión 1.6.0 (octubre de 2015) ahora puede hacerlo. Hay una nueva directiva:

option http-buffer-request

Que incluye en el front-end o back-end para dar acceso a HAProxy al cuerpo. Y usas req.body para acceder a él. Aquí hay un resumen de la configuración que utilicé:

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
fuente
Hola, ¿hay alguna manera de registrar este req.body en un archivo diferente y no en el mismo haproxy.log predeterminado?
Shoaib Khan
Hola. ¿Cómo registrar un cuerpo de solicitud y respuesta en un archivo de registro?
Yuriy Tigiev