Haproxy ไม่ได้บันทึกการร้องขอ?


13

ดังนั้นฉันกำหนดค่า Haproxy ดังนั้นการบันทึกจะผ่าน rsyslog และในตอนนี้จะถูกดัมพ์ทั้งหมดในไฟล์เดียว

เป็นการบันทึกอย่างแน่นอนเนื่องจากฉันได้รับข้อความ "เริ่มต้น" เมื่อเริ่มต้น แต่ไม่มีการร้องขอ HTTP ที่บันทึกเลย เกิดอะไรขึ้นกับการกำหนดค่าของฉัน

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

ไฟล์บันทึก :

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.

ฉันไปที่หน้าเว็บเซิร์ฟเวอร์บางหน้าระหว่างการรีบูตครั้งนี้และเริ่มต้นข้อผิดพลาด 404 ครั้ง ทำไมไม่มีอะไรปรากฏขึ้นมา?

แก้ไข: ไฟล์ rsyslog conf

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

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

1
คุณแก้ปัญหานี้ได้หรือไม่?
เทอเรนซ์เชาเชา

คำตอบ:


11

คุณต้องระบุบันทึกในส่วนหน้าถ้าคุณต้องการให้ทุกคำขอถูกบันทึก แต่โดยปกติจะเป็น overkill สำหรับเซิร์ฟเวอร์และดิสก์ของคุณจะเต็มในเวลาไม่นาน

frontend webfront
  log /dev/log local0 debug

อ่าขอบคุณ ฉันจะลองโดยเร็วนี้ สิ่งที่ฉันต้องแก้ไขปัญหาการเชื่อมต่อกับอินสแตนซ์วาทกรรมดังนั้นมันจะเป็นเพียงชั่วคราว ดูเหมือนว่าฉันไม่สามารถมอบอำนาจให้ผู้อื่นได้ไม่ว่าฉันจะพยายามทำอะไร ( serverfault.com/questions/645031/… )
Silver Quettier

2
ฉันพยายามเพิ่มสิ่งนี้ แต่มันไม่ได้บันทึกอะไรเป็นพิเศษ บางทีrsyslogการกำหนดค่าไม่ถูกต้อง? มีวิธีบอกหรือไม่?
Silver Quettier

สำหรับฉันมันใช้งานได้
Dima Medvedev

rsyslog ใน Ubuntu 14.0.4 ดูเหมือนว่าจะมีการกำหนดค่าแม้ว่าจะไม่ได้เข้าสู่ /var/log/haproxy.log โดยค่าเริ่มต้นบันทึกการติดตั้งของฉันไปที่ / var / log / syslog
lee

2
มีอะไร/dev/log
มิแรนดา

7

การบันทึกผ่านล็อกของซ็อกเก็ตยูนิกซ์ไม่ทำงานสำหรับฉันบน rhel ของฉัน 6.7.you สามารถลองกับ conf นี้ haproxy (ทำงานบน 81) ส่งต่อคำขอ http ไปยัง httpd (ทำงานบน 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

และคุณต้องเปิดใช้งานโมดูล rsyslog udp เพื่อรับ syslog จาก haproxy ง่าย ๆ เช่นนี้:

/etc/rsyslog.d/haproxy.conf

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

ทำการร้องขอ http ถึง 81 และคุณจะได้รับบันทึกเช่นนี้

# 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

สิ่งนี้อาจเกิดจากการที่มันทำงานในคุก chroot คุณจะต้องตรวจสอบให้แน่ใจว่า rsyslog กำลังสร้างซ็อกเก็ต dgram ภายในคุก chroot (เช่น / var / lib / haproxy / dev / log) ชี้คำสั่งบันทึกของคุณไปยังซ็อกเก็ต / dev / log และคุณควรจะดี

ฉันใช้เวลาสองสามชั่วโมงในการพยายามคิดสิ่งนี้เนื่องจาก HAproxy จะไม่บอกคุณว่ามีอะไรผิดปกตินอกจากการบันทึกไม่ทำงาน


5

ลิงค์นี้อธิบายอย่างสมบูรณ์

หากคุณดูที่ด้านบนของ /etc/haproxy/haproxy.cfg คุณจะเห็นสิ่งต่อไปนี้:

global
log 127.0.0.1 local2
[...]

ซึ่งหมายความว่า HAProxy จะส่งข้อความไปยัง rsyslog ใน 127.0.0.1 แต่โดยค่าเริ่มต้น rsyslog จะไม่ฟังที่อยู่ใด ๆ ดังนั้นจึงเป็นปัญหา

มาแก้ไข /etc/rsyslog.conf และยกเลิกการใส่เครื่องหมายบรรทัดเหล่านี้:
$ModLoad imudp
$UDPServerRun 514

สิ่งนี้จะทำให้ rsyslog ฟังบนพอร์ต UDP 514 สำหรับที่อยู่ IP ทั้งหมด คุณสามารถเลือก จำกัด ที่ 127.0.0.1 โดยการเพิ่ม:
$UDPServerAddress 127.0.0.1

ตอนนี้สร้างไฟล์ /etc/rsyslog.d/haproxy.conf ที่มี:

local2.* /log/haproxy.log

แน่นอนคุณสามารถเจาะจงมากขึ้นและสร้างไฟล์บันทึกแยกต่างหากตามระดับของข้อความ:

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

จากนั้นรีสตาร์ท rsyslog และดูว่ามีการสร้างไฟล์บันทึก:
# service rsyslog restart

หากคุณสร้างล็อกไฟล์ด้วยตนเอง/log/haproxy-allbutinfo.logและ/log/haproxy-info.logอย่าลืมเปลี่ยนเจ้าของเป็นsyslog:adm

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.