Log seluruh badan POST dengan HAProxy?

12

Saya mencoba melacak beberapa masalah dengan cara klien javascript berinteraksi dengan server aplikasi dan ingin melihat seluruh muatan http (tajuk, badan, dan semuanya) yang dilewatkan bolak-balik.

Kebetulan bahwa sudah ada server haproxy di depan server aplikasi, jadi saya berharap dapat menggunakan haproxy untuk menyediakan log yang relevan. Jelas ini akan menjadi buruk untuk dihidupkan dalam produksi, tetapi saya memiliki klon dari seluruh lingkungan yang dapat diisolasi sementara saya melakukan debugging ini.

Apakah ada cara untuk mendapatkan haproxy untuk mencatat seluruh muatan http untuk permintaan POST ke server backend tertentu?

Peter Groves
sumber

Jawaban:

3

Haproxy tidak memiliki fasilitas untuk mencatat konten POST atau HTTP body.

Gunakan Wireshark sebagai gantinya.

leher panjang
sumber
Terima kasih. Saya akhirnya bisa melihat POST di alat pengembang chrome.
Peter Groves
Ini bukan lagi masalahnya. Lihat posting hack_on di bawah ini.
PMV
18

Rupanya sejak versi 1.6.0 (Oktober 2015) sekarang Anda bisa. Ada arahan baru:

option http-buffer-request

Yang Anda masukkan di front-end atau back-end untuk memberikan akses HAProxy ke tubuh. Dan Anda menggunakan req.body untuk mengaksesnya. Berikut ini ringkasan konfigurasi yang saya gunakan:

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
sumber
Hai, apakah ada cara untuk mencatat req.body ini ke file yang berbeda dan bukan haproxy.log default yang sama?
Shoaib Khan
Hai. Bagaimana cara mencatat badan permintaan dan tanggapan dalam satu file log?
Yuriy Tigiev