Haproxy istekleri günlüğe kaydetmiyor mu?


13

Böylece, Haproxy'yi günlüğe kaydetmenin rsyslog'dan geçeceği ve şimdilik tek bir dosyaya döküleceği şekilde yapılandırdım.

Başlangıçta bu "başlangıç" mesajlarını aldığım için kesinlikle günlüğe kaydetme, ancak hiç HTTP isteği günlüğe kaydetme yok. Yapılandırmamdaki sorun nedir?

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

Günlük dosyası :

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.

Ben yeniden başlatmalar arasında bazı web sunucusu sayfalarını ziyaret ettim ve birkaç 404 hata tetikledi. Neden hiçbir şey görünmüyor?

Düzenleme: rsyslog conf dosyası.

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

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

1
sonunda bu problemi çözdün mü?
Terence Chow

Yanıtlar:


11

Her isteğin günlüğe kaydedilmesini istiyorsanız, ön uçtaki günlüğü belirtmeniz gerekir. Ancak bu genellikle sunucu için aşırı doldurulur ve diskiniz hiçbir zaman dolmaz.

frontend webfront
  log /dev/log local0 debug

Ah teşekkürler. Bunu en kısa zamanda deneyeceğim. Şey, söylemi örneğindeki bağlantı sorunlarını gidermem gerekiyor, bu yüzden sadece geçici olacak. Ne denediğim önemli değil, vekalet edemiyorum ( serverfault.com/questions/645031/… )
Silver Quettier

2
Bunu eklemeyi denedim, ancak fazladan giriş yapmıyor. Belki de rsyslogdüzgün yapılandırılmamış mı? Söylemenin bir yolu var mı?
Silver Quettier

Benim için işe yaradı.
Dima Medvedev

ubuntu 14.0.4'teki rsyslog yapılandırılmış gibi görünüyor, ancak /var/log/haproxy.log dosyasına giriş yapmıyor, varsayılan olarak yükleme günlüklerim / var / log / syslog dizininde.
lee

2
ne/dev/log
Miranda

8

unix soket günlüğü ile günlük benim rhel 6.7.you benim için çalışmıyor bu conf ile bir deneyebilirsiniz. haproxy (81 üzerinde çalışıyor) httpd'yi httpd'ye iletiyor (80 üzerinde çalışıyor)

/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

ve rsyslog udp modülünü syslog'u haproxy'den almak için etkinleştirmelisiniz.

/etc/rsyslog.d/haproxy.conf

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

81 için bir http isteği yapın ve böyle bazı günlükleri almak

# 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"

6

Bunun nedeni, bir chroot hapishanesinde çalıştırılması olabilir. Rsyslog'un aynı zamanda chroot hapishanesinde bir dgram soketi oluşturduğundan emin olmanız gerekir (örn. / Var / lib / haproxy / dev / log). Log direktifinizi / dev / log soketine yönlendirin ve iyi olmalısınız.

HAproxy size çalışmanın başarısız olmasının yanı sıra yanlış bir şey olmadığını söylemediğinden, bunu anlamaya çalışmak için birkaç saat geçirdim.


5

Bu bağlantı mükemmel bir şekilde açıklıyor.

/Etc/haproxy/haproxy.cfg dosyasının en üstüne bakarsanız, şöyle bir şey görürsünüz:

global
log 127.0.0.1 local2
[...]

Bu, HAProxy'nin mesajlarını 127.0.0.1'de rsyslog'a göndereceği anlamına gelir. Ancak varsayılan olarak, rsyslog herhangi bir adresi dinlemez, dolayısıyla sorun.

/Etc/rsyslog.conf dosyasını düzenleyelim ve şu satırları kaldıralım:
$ModLoad imudp
$UDPServerRun 514

Bu, rsyslog'un tüm IP adresleri için UDP bağlantı noktası 514'ü dinlemesini sağlayacaktır. İsteğe bağlı olarak aşağıdakileri ekleyerek 127.0.0.1 ile sınırlayabilirsiniz:
$UDPServerAddress 127.0.0.1

Şimdi aşağıdakileri içeren bir /etc/rsyslog.d/haproxy.conf dosyası oluşturun:

local2.* /log/haproxy.log

Elbette daha spesifik olabilir ve mesajların seviyesine göre ayrı günlük dosyaları oluşturabilirsiniz:

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

Ardından rsyslog'u yeniden başlatın ve günlük dosyalarının oluşturulduğunu görün:
# service rsyslog restart

Manuel olarak günlük dosyaları oluşturursanız /log/haproxy-allbutinfo.logve /log/haproxy-info.logsahibini şu şekilde değiştirmeyi unutmayın:syslog:adm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.