कैसे / / लॉग / syslog से बाहर लॉग संदेश haproxy रखने के लिए


29

मैंने इस लेख से युक्तियों का उपयोग करके rsyslogd के माध्यम से हाइपोक्सी लॉगिंग की स्थापना की है , और सब कुछ ठीक काम कर रहा है। लॉग फ़ाइलों को लॉग संदेश मिलता है।

हालाँकि, haproxy का हर लॉग संदेश भी दिखाता है /var/log/syslog। इसका मतलब यह है कि एक बार जब सर्वर लाइव हो जाता है, तो syslog काफी बेकार हो जाएगा, क्योंकि इसे haproxy log संदेशों के साथ चलाया जाएगा।

मैं उन संदेशों को फ़िल्टर करना चाहूंगा /var/log/syslog। Rsyslogd प्रलेखन पर जाने के बाद, मैंने फ़ाइल को /etc/rsyslog.d/50-default.confइस प्रकार बदलने की कोशिश की :

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog

मैंने बस ;haproxy.noneहिस्सा जोड़ा । Rsyslogd को पुनः आरंभ करने के बाद जब तक मैंने अपने परिवर्तनों को वापस नहीं किया तब तक यह पूरी तरह से काम करना बंद कर देता है।

मैं क्या गलत कर रहा हूं?

जवाबों:


26

आप निम्न कार्य भी कर सकते हैं जो इसे बनाएगा ताकि वे किसी अन्य लॉग में न जाएं:

local0.*                        -/var/log/haproxy.log
& ~

& ~बाकी नियमों के लिए उपरोक्त पंक्ति में कहीं भी मिलान नहीं करने का मतलब है।


धन्यवाद। यह मुख्य कॉन्फ़िगरेशन को संपादित करने की तुलना में अधिक समझ में आता है।
इसकी तदोपरांत

13
टिप्पण लायक है कि यदि आप ऐसा करते हैं, अपने local0। * लाइन चाहिए "पहले कार्य किया /Etc/rsyslog.d/50-default.conf में" लाइन। मैंने अपना haproxy- विशिष्ट लॉगिंग कॉन्फ़िगर करने के लिए /etc/rsyslog.d/haproxy.conf नामक फ़ाइल बनाई, लेकिन अंत में "& ~" होने के बावजूद यह syslog में लॉग इन हुआ। ऐसा इसलिए है क्योंकि (निश्चित रूप से) 50-default.conf को haproxy.conf से पहले लोड किया जाता है, इसलिए catchall " " को मेरे "local0। *" लाइन से पहले मिलान किया गया था। समाधान के लिए मेरी haproxy- विशिष्ट फ़ाइल को /etc/rsyslog.d/49-haproxy.conf में बदलना था
Giles Thomas

1
FYI करें एक छोटा सा अपडेटrsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD

इसके & stopबजाय & ~: rsyslog.com/doc/v8-stable/compatibility/v7comcomibility.html के उपयोग पर चर्चा की गई है ।
slm

14

& ~Rsyslogd के v7 में उपयोग को हटा दिया गया था, और आपको & stopइसके बजाय उपयोग करने के लिए प्रोत्साहित किया जाता है। आप v7compatibility पेज के इस भाग में इसके बारे में अधिक पढ़ सकते हैं ।

omruleset और त्याग (~) कार्रवाई पदावनत हैं

दोनों काम करना जारी रखते हैं, लेकिन बेहतर विकल्पों द्वारा प्रतिस्थापित किया गया है।

त्यागने की क्रिया (टिल्ड कैरेक्टर) को “स्टॉप” रेनस्क्रिप्ट निर्देश द्वारा प्रतिस्थापित किया गया है। यह अधिक सहज माना जाता है और थोड़ा बेहतर प्रदर्शन प्रदान करता है।

Omruleset मॉड्यूल "कॉल" RainerScript निर्देश द्वारा प्रतिस्थापित किया गया है। कॉल एक सबरूटीन की तरह एक नियम को निष्पादित करने की अनुमति देता है, और omruleset की तुलना में बहुत अधिक प्रदर्शन के साथ ऐसा करता है। ध्यान दें कि omruleset को एक async कतार से चलाया जा सकता है। यह एक वांछित प्रभाव से अधिक पक्ष था और कॉल स्टेटमेंट द्वारा समर्थित नहीं है। यदि उस प्रभाव की आवश्यकता थी, तो इसे तथाकथित नियम क्रियाओं को अतुल्यकालिक रूप से चलाकर अनुकरण किया जा सकता है (किसी भी मामले में इसे संभालने का सही तरीका क्या है)।

ध्यान दें कि उपयोग किए जाने पर हटाए गए मॉड्यूल चेतावनी संदेशों का उत्सर्जन करते हैं। वे बताते हैं कि निर्माण को हटा दिया गया है और प्रतिस्थापन के रूप में किस कथन का उपयोग किया जाना है। यह संचालन को प्रभावित नहीं करता है: दोनों मॉड्यूल अभी भी पूरी तरह से चालू हैं और v7 समय सीमा में हटाया नहीं जाएगा।

तो HAProxy के लिए कुछ इस तरह के बजाय:

$ more /etc/rsyslog.d/haproxy.conf
local2.*    /var/log/haproxy.log
& stop

जैसा कि यह कैसे काम करता है, & stopबताता है कि rsyslogd इस बिंदु पर पहले से मिलान किए गए नियमों से मेल खाने वाले किसी भी अतिरिक्त संदेश को छोड़ देता है। गारंटी करने के लिए कि इस नियम जल्दी पर उठाया जाता है, तो आप से फ़ाइल का नाम बदल सकते हैं /etc/rsyslog.d/haproxy.confकरने के लिए /etc/rsyslog.d/00-haproxy.conf


3

ठीक है, मैंने पता लगा लिया। यह मेरी /etc/rsyslog.d/20-haproxy.confतरह दिखता है:

$ModLoad imudp
$UDPServerRun 514

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

मैंने लाइन को इसमें बदल दिया 50-default.conf:

*.*;auth,authpriv,local0,local1.none     -/var/log/syslog

और अब यह वही करने लगता है जो मैं चाहता हूं।


यह आम तौर पर अन्य संकुल द्वारा बनाई गई कॉन्फ़िगर फ़ाइलों को संशोधित करने के लिए बेहतर नहीं है क्योंकि यह उन्नयन / स्वामित्व की समस्याएं पैदा करता है। यदि यह एक ऑफ-स्नोफ्लेक सर्वर है, जो भी ठीक है, लेकिन स्वचालित तैनाती के लिए, 50-default.conf को संशोधित करना आम तौर पर एक "बुरी बात" है।
ब्रूस एज

2

हाइपोक्सी लॉगिंग के लिए एक बेहतर समाधान है।

  • HAproxy chroot में चलता है इसलिए यह एक्सेस नहीं कर सकता है /dev/log
  • आधिकारिक मैनुअल के अनुसार नेटवर्क सॉकेट को सुनने के लिए rsyslog को कॉन्फ़िगर करने की आवश्यकता है:

    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    

लेकिन आप उसके लिए केवल rsyslog सॉकेट का उपयोग कर सकते हैं:

rsyslog.d / haproxy.conf:

    # HAproxy local socket
    $AddUnixListenSocket /var/lib/haproxy/dev/log
    :programname, contains, "haproxy" /var/log/haproxy.log
    & stop

haproxy.cfg:

    global
          log         /dev/log daemon
          chroot      /var/lib/haproxy
          .......

1

मैं फ़ाइल के आदेश के साथ गड़बड़ नहीं करना पसंद करता हूं, इसलिए इसके बजाय मैं स्थानीय में एक स्थानीय जोड़ें लाइन में प्रवेश। कॉन्फ़िगरेशन ऐसा दिखता है:

*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages

local2.*                                                 /var/log/haproxy.log

(CentOS 7 पर परीक्षण किया गया)

उम्मीद है की वो मदद करदे!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.