HAProxy สนับสนุนการบันทึกไฟล์หรือไม่?


14

ฉันเพิ่งติดตั้งhaproxyบนเซิร์ฟเวอร์ทดสอบของฉัน

มีวิธีทำให้เขียนบันทึกลงในไฟล์โลคัลมากกว่า syslog หรือไม่?

นี่เป็นเพียงการทดสอบเท่านั้นดังนั้นฉันจึงไม่ต้องการเริ่มเปิดพอร์ต / ทำให้ยุ่งเหยิง syslog ด้วยข้อมูลการทดสอบทั้งหมดของฉัน

น่าเสียดายที่ข้อมูลเดียวที่ฉันสามารถค้นหาได้ทั้งหมดเกี่ยวกับการบันทึกไปยังเซิร์ฟเวอร์ syslog

ฉันพยายามใช้:

log /home/user/ha.log local0

ในการกำหนดค่าของฉัน แต่นั่นบอกฉันว่า:

[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2)

เมื่อฉันเริ่มต้นใหม่ ดังนั้นฉันจึงสร้างไฟล์ด้วยtouch /home/user/ha.logและเริ่มใหม่ ณ จุดที่ฉันได้รับ:

[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111)

เป็นไปได้หรือฉันจะต้องกำหนดค่า syslog ฯลฯ เพื่อดูข้อมูลการทดสอบของฉัน


2
ฉันไม่คิดว่า HAProxy สามารถเข้าสู่ไฟล์และฉันสงสัยว่านี่คือการเขียนลงดิสก์เป็นการดำเนินการปิดกั้น ทำไมคุณจริงๆไม่ต้องการใช้ syslog? การกำหนดค่าไม่ใช่สิ่งที่ยุ่งยาก คุณสามารถกำหนดสิ่งอำนวยความสะดวกในพื้นที่ให้กับ HAProxy และกำหนดค่า syslog daemon ของคุณให้เขียนรายการเหล่านั้นไปยังไฟล์อื่นและไม่ไปยังไฟล์ syslog อื่น ๆ (หรือสตรีมเครือข่าย) หากคุณไม่ต้องการให้บันทึก HAProxy ไม่ถูกปนกัน อื่น.
Michael - sqlbot

คำตอบ:


14

Haproxy ไม่สนับสนุนการบันทึกไฟล์ ตามที่ระบุไว้ในเอกสาร ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ) คำสั่ง "log" จะใช้ที่อยู่พารามิเตอร์ตัวแรก ถ้าเป็นไฟล์มันเป็นซ็อกเก็ตยูนิกซ์และ HAProxy จะพูดในรูปแบบ syslog กับซ็อกเก็ตนี้ Haproxy ได้รับการออกแบบเช่นนี้เพราะความรับผิดชอบของมันคือการร้องขอพร็อกซีไม่ใช่เขียนไฟล์มันมอบหมายการเขียนไฟล์บันทึกไปยัง syslog หากคุณไม่ต้องการยุ่งกับเครื่องคุณสามารถติดตั้ง logstash และรัน: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' และเพิ่ม: log /tmp/haprxoy_log.sock ใน haproxy.cfg ของคุณเพื่อทดสอบ


ฉันได้รับ "E: ไม่พบที่เก็บแพ็คเกจ" logstash ถูกลบออกจาก Ubuntu หรือไม่
user568021

@ user568021 ดูเหมือนว่า logstash ไม่ได้มีให้ใน Ubuntu แต่ยืดหยุ่น (ผู้ดูแลของ logstash) ให้เป็นแหล่งที่ฉลาด นอกจากนี้ logstash เป็นซอฟต์แวร์ java ดังนั้นคุณอาจสามารถรันได้โดยดาวน์โหลดไฟล์ jar ที่รันด้วย JRE (ซึ่งให้บริการโดย Ubuntu)
user801247

7

คุณสามารถเปลี่ยนไฟล์กำหนดค่า haproxy log /etc/rsyslog.d/ให้ชี้ไปที่พา ธ ที่คุณต้องการ ไม่แน่ใจเรื่องการกระจายอื่น สำหรับฉันฉันใช้ Debian ผมเปลี่ยน/etc/rsyslog.d/49-haproxy.confให้ชี้ไป/var/log/haproxy/haproxy.log,

# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy/haproxy.log
&~

คุณควรอัปเดตพา ธ บันทึกใน/etc/logrotate.d/haproxyพา ธ ใหม่ เพื่อที่จะหมุนและ logfile gzipบีบอัดในเส้นทางของการกำหนดค่าใช้ใหม่

จากนั้นรีสตาร์ท rsyslog.service

sudo systemctl restart rsyslog.service

ตอนนี้haproxy.log.*ไฟล์จะอยู่ใน/var/log/haproxy/ไดเรกทอรี


ฉันจะสร้างบันทึกแยกต่างหากสำหรับข้อผิดพลาดเช่น /var/log/haproxy-errors.log ได้อย่างไรโดยไม่มีผลกับ haproxy.log ดั้งเดิม
Khurshid Alam

0

คุณพยายามกำหนดค่าในไดเรกทอรีบ้านของผู้ใช้ haproxy ไม่ได้รับอนุญาตให้เข้าถึงไดเรกทอรีบ้านของผู้ใช้ดังนั้นจึงเป็นสาเหตุของปัญหา

ลองที่ตำแหน่งอื่นแทนสร้างไดเรกทอรีใน /var/<directory>

log /var/<directory>/ha.log

2
ฉันพยายามsudo touch /var/log/ha.logและเพิ่มlog /var/log/ha.log local0การตั้งค่าของฉัน connection refusedแต่มีข้อผิดพลาดเดียวกันกับข้างต้น
IGGt

ในบันทึกทำไมคุณให้ local0 ในที่สุด?
KKD

1
ฉันพยายามทิ้งมันไว้ แต่เมื่อฉันรีสตาร์ทฉันได้รับข้อผิดพลาด'log' expects <address> and <facility> as arguments.ดังนั้นจึงจำเป็นต้องมีบางสิ่งที่นั่น ตามคำแนะนำ<facility> must be one of the 24 standard syslog facilities(ซึ่งฉันคิดว่าอาจเป็นส่วนหนึ่งของปัญหา)
IGGt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.