Haproxy tidak mencatat permintaan?


11

Jadi, saya mengkonfigurasi Haproxy sehingga logging akan melalui rsyslog dan, untuk saat ini, semuanya dibuang dalam satu file.

Ini pasti logging, karena saya mendapatkan "permulaan" pesan pada startup, tetapi tidak ada permintaan HTTP login sama sekali. Apa yang salah dengan konfigurasi saya?

haproxy.cfg :

global
        log /dev/log local0 debug
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend webfront
  option  forwardfor
  stats enable
  stats uri /haproxy?statis
  stats realm Haproxy\ Auth
  stats auth user:password
  bind *:80
  timeout client 86400000
  acl is_discourse  hdr_end(host) -i discourse.mydomain.com
  use_backend       discourse     if is_discourse
  use_backend       webserver     if !is_discourse

backend discourse
  balance source
  option forwardfor
  option httpclose
  server server1 127.0.0.1:3080 weight 1 maxconn 1024 check inter 10000

backend webserver
  balance source
  option forwardfor
  option httpclose
  server server2 127.0.0.1:4080 weight 1 maxconn 1024 check inter 10000

File log :

root@kayak:/var/log/haproxy# tail haproxy.log
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy discourse started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webserver started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webfront started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy discourse started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webserver started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webfront started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy discourse started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webserver started.

Saya mengunjungi beberapa halaman server web di antara reboot dan memicu 404 kesalahan. Mengapa tidak ada yang muncul?

Edit: file conf rsyslog.

/etc/rsyslog.d/49-haproxy.conf:

local0.* -/var/log/haproxy_0.log
if ($programname == 'haproxy') then -/var/log/haproxy/haproxy.log
& ~

1
Apakah Anda akhirnya memecahkan masalah ini?
Terence Chow

Jawaban:


11

Anda harus menentukan log di frontend jika Anda benar-benar ingin setiap permintaan dicatat. Tetapi biasanya ini berlebihan untuk server dan disk Anda akan penuh dalam waktu singkat.

frontend webfront
  log /dev/log local0 debug

Ah terima kasih. Saya akan coba ini secepatnya. Masalahnya, saya perlu memecahkan masalah koneksi ke instance Wacana, jadi itu hanya bersifat sementara. Sepertinya saya tidak dapat mem-proxy-kannya apa pun yang saya coba. ( serverfault.com/questions/645031/… )
Silver Quettier

2
Saya mencoba menambahkan ini, tetapi tidak mencatat tambahan apa pun. Mungkin rsyslogtidak dikonfigurasi dengan benar? Apakah ada cara untuk mengatakannya?
Silver Quettier

Bagi saya itu berhasil.
Dima Medvedev

rsyslog di ubuntu 14.0.4 tampaknya sudah dikonfigurasikan, walaupun tidak masuk ke /var/log/haproxy.log, secara default log instal saya ke / var / log / syslog.
lee

2
apa/dev/log
Miranda

7

logging melalui log unix socket tidak berfungsi untuk saya di rhel 6.7.you dapat mencoba dengan conf ini. haproxy (bekerja pada 81) meneruskan permintaan http ke httpd (bekerja pada 80)

/etc/haproxy/haproxy.cfg

frontend web_front
    log         127.0.0.1    local6
    option httplog

    bind        *:81
    default_backend web_back

backend web_back
    server      web1 127.0.0.1:80

dan Anda harus mengaktifkan modul rsyslog udp untuk menerima syslog dari haproxy conf sederhana seperti ini:

/etc/rsyslog.d/haproxy.conf

$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514
local6.* /var/log/haproxy.log

lakukan permintaan http ke 81, dan Anda juga mendapatkan beberapa log seperti ini

# tail -n 1 /var/log/haproxy.log
May 18 13:51:07 localhost haproxy[31617]: 127.0.0.1:38074 [18/May/2016:13:51:06.999] web_front web_back/web1 0/0/0/2/2 404 466 - - ---- 1/1/0/1/0 0/0 "GET /how-are-you HTTP/1.1"

5

Ini bisa disebabkan oleh menjalankannya di chroot jail. Anda harus memastikan bahwa rsyslog juga membuat soket dgram di dalam chroot jail (mis. / Var / lib / haproxy / dev / log). Arahkan arahan log Anda ke soket / dev / log dan Anda harus baik.

Saya menghabiskan beberapa jam mencoba mencari tahu ini, karena HAproxy tidak akan memberi tahu Anda ada sesuatu yang salah selain penebangan yang gagal berfungsi.


3

Tautan ini menjelaskannya dengan sempurna.

Jika Anda melihat bagian atas /etc/haproxy/haproxy.cfg, Anda akan melihat sesuatu seperti:

global
log 127.0.0.1 local2
[...]

Ini berarti bahwa HAProxy akan mengirim pesannya ke rsyslog di 127.0.0.1. Tetapi secara default, rsyslog tidak mendengarkan alamat apa pun, karena itu masalahnya.

Mari kita edit /etc/rsyslog.conf dan batalkan komentar pada baris berikut:
$ModLoad imudp
$UDPServerRun 514

Ini akan membuat rsyslog mendengarkan pada port UDP 514 untuk semua alamat IP. Secara opsional, Anda dapat membatasi hingga 127.0.0.1 dengan menambahkan:
$UDPServerAddress 127.0.0.1

Sekarang buat file /etc/rsyslog.d/haproxy.conf yang berisi:

local2.* /log/haproxy.log

Anda tentu saja dapat lebih spesifik dan membuat file log terpisah sesuai dengan tingkat pesan:

local2.=info /log/haproxy-info.log
local2.notice /log/haproxy-allbutinfo.log

Kemudian restart rsyslog dan lihat file log dibuat:
# service rsyslog restart

Jika Anda secara manual membuat file log /log/haproxy-allbutinfo.logdan /log/haproxy-info.log, jangan lupa ganti pemiliksyslog:adm

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.