Haproxy non registra richieste?


11

Quindi, ho configurato Haproxy in modo che il log passasse attraverso rsyslog e, per ora, venisse scaricato in un unico file.

Sta registrando in modo definitivo, dato che ricevo quei messaggi di "avvio" all'avvio, ma nessuna richiesta di registrazione HTTP. Cosa c'è di sbagliato nella mia configurazione?

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 di registro :

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.

Ho visitato alcune delle pagine del webserver tra questi riavvii e ho causato alcuni errori 404. Perché non viene visualizzato nulla?

Modifica: 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
hai finito per risolvere questo problema?
Terence Chow,

Risposte:


11

Devi specificare il registro nel frontend se vuoi davvero che ogni richiesta venga registrata. Ma di solito questo è eccessivo per il server e il tuo disco sarà pieno in pochissimo tempo.

frontend webfront
  log /dev/log local0 debug

Ah grazie. Ci proverò al più presto. Il fatto è che devo risolvere i problemi di connessione all'istanza del Discorso, quindi sarà solo temporanea. Sembra che non riesco a delegarlo, non importa quello che provo. ( serverfault.com/questions/645031/… )
Silver Quettier,

2
Ho provato ad aggiungere questo, ma non registra alcun extra. Forse rsyslognon è configurato correttamente? Ci sarebbe un modo per dirlo?
Silver Quettier,

Per me ha funzionato.
Dima Medvedev,

rsyslog in Ubuntu 14.0.4 sembra essere configurato, sebbene non acceda a /var/log/haproxy.log, per impostazione predefinita il mio registro di installazione su / var / log / syslog.
sottovento il

2
che c'è/dev/log
Miranda,

7

la registrazione tramite registro socket unix non funziona per me sul mio rhel 6.7. puoi provare con questo conf. haproxy (lavorando su 81) inoltra la richiesta http a httpd (lavorando su 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

e devi abilitare il modulo udp rsyslog per ricevere syslog da haproxy un semplice conf come questo:

/etc/rsyslog.d/haproxy.conf

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

invia una richiesta http a 81 e otterrai alcuni registri come questo

# 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

Ciò può essere causato eseguendolo in una prigione chroot. Dovrai assicurarti che rsyslog stia anche creando un socket Dgram all'interno della prigione chroot (es. / Var / lib / haproxy / dev / log). Punta la direttiva log sul socket / dev / log e dovresti essere bravo.

Ho trascorso un paio d'ore a cercare di capirlo, dato che HAproxy non ti dirà che c'è qualcosa di sbagliato a parte il mancato funzionamento della registrazione.


3

Questo link lo spiega perfettamente.

Se guardi all'inizio di /etc/haproxy/haproxy.cfg, vedrai qualcosa di simile a:

global
log 127.0.0.1 local2
[...]

Ciò significa che HAProxy invierà i suoi messaggi a rsyslog su 127.0.0.1. Ma per impostazione predefinita, rsyslog non ascolta alcun indirizzo, quindi il problema.

Modifichiamo /etc/rsyslog.conf e decommentiamo queste righe:
$ModLoad imudp
$UDPServerRun 514

Ciò renderà rsyslog in ascolto sulla porta UDP 514 per tutti gli indirizzi IP. Opzionalmente puoi limitare a 127.0.0.1 aggiungendo:
$UDPServerAddress 127.0.0.1

Ora crea un file /etc/rsyslog.d/haproxy.conf contenente:

local2.* /log/haproxy.log

Ovviamente puoi essere più specifico e creare file di registro separati in base al livello dei messaggi:

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

Quindi riavviare rsyslog e vedere che vengono creati i file di registro:
# service rsyslog restart

Se si creano manualmente file di registro /log/haproxy-allbutinfo.loge /log/haproxy-info.log, non dimenticare di cambiare proprietario insyslog:adm

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.