क्या HAProxy किसी फ़ाइल में लॉगिंग का समर्थन करता है?


14

मैंने अभी-अभी अपने परीक्षण सर्वर पर हाइपर प्रॉक्सी स्थापित किया है।

वहाँ एक रास्ता बनाने के लिए यह एक स्थानीय फ़ाइल के लिए अपने लॉग लिखने के बजाय, 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 डेमॉन को कॉन्फ़िगर कर सकते हैं, और अन्य syslog फ़ाइलों (या नेटवर्क स्ट्रीम) को नहीं, यदि आप नहीं चाहते हैं कि HAProxy लॉग सब कुछ के साथ मिश्रित न हो। अन्य।
माइकल - साइक्लबोट

जवाबों:


14

Haproxy बस फ़ाइलों को लॉगिंग का समर्थन नहीं करता है। जैसा कि दस्तावेज़ीकरण ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ) में कहा गया है , "लॉग" स्टेटमेंट पहले पैरामीटर को एड्रेस के रूप में लेता है। यदि यह एक फाइल है, तो यह एक यूनिक्स सॉकेट है और HAProxy इस सॉकेट में syslog प्रारूप में बात करेगा। हाप्रोसी को इस तरह से डिज़ाइन किया गया है क्योंकि इसकी ज़िम्मेदारी प्रॉक्सी अनुरोधों के लिए है, फ़ाइलों को लिखना नहीं है, यह लॉग फ़ाइलों के लेखन को सिसलॉग को दर्शाता है। यदि आप अपनी मशीन में गड़बड़ी नहीं करना चाहते हैं, तो आप उदाहरण के लिए लॉगस्टैश स्थापित करें और चलाएं: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' और इसे जोड़ने के log /tmp/haprxoy_log.sock लिए अपने haproxy.cfg में जोड़ें ।


मुझे "E: पैकेज लॉगस्टैश का पता लगाने में असमर्थ" मिल रहा है। क्या उबंटू से लॉगस्टैश हटाया गया था?
user568021

@ user568021 लगता है कि लॉगस्टैश ubuntu में प्रदान नहीं किया गया है, लेकिन लोचदार (लॉगस्टैश का अनुचर) एक उपयुक्त स्रोत प्रदान करता है। इसके अलावा, लॉगस्टैश एक जावा सॉफ्टवेयर है, इसलिए आप इसे एक JRE (जिसे ubuntu द्वारा प्रदान किया गया है) के साथ एक जार फाइल डाउनलोड करके इसे चलाने में सक्षम हो सकते हैं
user801247

7

आप /etc/rsyslog.d/फ़ाइल को अपनी पसंद के पथ में इंगित करने के लिए haproxy log config फ़ाइल बदल सकते हैं । अन्य वितरण के बारे में निश्चित नहीं है। मेरे लिए, मैं डेबियन का उपयोग कर रहा हूं। मैं बदल /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को नए पथ में भी अद्यतन करना चाहिए । ताकि यह नए कॉन्फ़िगर पथ का उपयोग करके लॉगफ़ाइल को घुमाएगी और संपीड़ित करेगा gzip

फिर rsyslog.service को पुनः आरंभ करें।

sudo systemctl restart rsyslog.service

अब haproxy.log.*फाइल /var/log/haproxy/डायरेक्टरी में होगी ।


मैं मूल haproxy.log को प्रभावित किए बिना /var/log/haproxy-errors.log जैसी त्रुटियों के लिए अलग लॉग कैसे बनाऊं?
खुर्शीद आलम

0

आपने उपयोगकर्ता होम निर्देशिका में कॉन्फ़िगर करने का प्रयास किया है, हैप्रोक्सी के पास उपयोगकर्ता की होम निर्देशिका तक पहुंचने की अनुमति नहीं है, इसलिए यह समस्या का कारण बनता है।

इसके बजाय अन्य स्थान पर प्रयास करें, निर्देशिका बनाएँ /var/<directory>

log /var/<directory>/ha.log

2
मैंने कोशिश की sudo touch /var/log/ha.logऔर log /var/log/ha.log local0अपने विन्यास में जोड़ा , लेकिन ऊपर के रूप में एक ही त्रुटि मिली connection refused
IGGt

लॉग में आप अंत में स्थानीय 0 क्यों दे रहे हैं?
KKD

1
मैंने इसे छोड़ने की कोशिश की, लेकिन जब मैंने पुनः आरंभ किया तो मुझे त्रुटि मिली 'log' expects <address> and <facility> as arguments.इसलिए मुझे वहां कुछ आवश्यक था। निर्देशों के अनुसार <facility> must be one of the 24 standard syslog facilities(जो मुझे लगता है कि समस्या का हिस्सा हो सकता है)
IGGt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.