मैं किसी विशिष्ट प्रोग्राम से दूरस्थ syslog सर्वर पर लॉग भेजने के लिए rsyslog को कैसे कॉन्फ़िगर करूं?


17

मेरे पास एक प्रोग्राम है जो दिए गए टैग / प्रोग्राम के नाम के साथ syslog को आउटपुट करता है। मैं उस प्रोग्राम से syslog ट्रैफ़िक को फ़िल्टर करने में सक्षम होना चाहता हूँ और इसे अन्य सभी sys ट्रैफ़िक लोकल को छोड़कर किसी दूरस्थ syslog सर्वर पर भेजना चाहता हूँ।

मैं दूरस्थ सर्वर के साथ सभी ट्रैफ़िक भेज सकता हूं

*.* @remote_server

मैं इसे कैसे फ़िल्टर करूं?


1
इसने मेरे सवाल का जवाब दिया। stackoverflow.com/questions/4042115/ruby-syslog-custom-facility
Simmo

जवाबों:


37

रुपयेलॉग कॉन्फिग फाइल में स्थित हैं: /etc/rsyslog.d/*.conf

रुपयेलॉग गोपनीय फ़ाइलों को क्रमिक रूप से पढ़ता है, इसलिए यह महत्वपूर्ण है कि आप अपनी कॉन्फ़िग फ़ाइल को नाम दें ताकि कुछ भी होने से पहले विशिष्ट कॉन्फ़िगरेशन लोड हो जाए। तो, अपनी फ़ाइल को अग्रणी शून्य से शुरू करने का नाम दें, अर्थात 00-my-file.conf। यह एक नई फ़ाइल बनाने के लिए बेहतर है ताकि अपडेट और इसी तरह आपके स्थानीय कॉन्फ़िगरेशन को अधिलेखित न करें।

उदाहरण:

if $programname == 'programname' and $msg contains 'a text string' and $syslogseverity <= '6' then /var/log/custom/bind.log

या यदि आप केवल कुछ प्रविष्टियों को छोड़ना चाहते हैं:

if $programname == 'programname' then ~

आपके मामले में: (UDP)

if $programname == 'programname' then @remote.syslog.server
& ~

या (टीसीपी)

if $programname == 'programname' then @@remote.syslog.server
& ~

& ~एंट्री को आगे बढ़ने से रोकने का मतलब है (पिछली लाइन!) प्रविष्टियाँ आगे।

कुछ और सामान्य जानकारी:

इसके अलावा, हमेशा सुनिश्चित करें कि फिल्टर एक ही लाइन पर हैं:

# Example: Log mail server control messages to mail-queue.log
if $hostname == 'titus'\
and $programname == 'smtp.queue.'\
and $syslogseverity <= '6' then /var/log/titus/mail-queue.log
& ~

उपयोगी फिल्टर:

$hostname
$programname
$msg
$syslogseverity

ऑपरेटर:

== (equals)
contains
and
or

अधिक जानकारी: http://wiki.rsyslog.com/index.php/Configuration_Samples


1
क्या हम टूटी हुई कड़ी को ठीक कर सकते हैं?
मार्क वाल्श

1

हम भी यह कोशिश कर सकते हैं। यह मेरे लिए ठीक काम कर रहा है।

$template Incoming-logs,"/var/log/testing_docker/%PROGRAMNAME%.log"
if $programname startswith 'docker' then -?Incoming-logs

नोट: यहाँ testing_dockerफ़ोल्डर स्वामित्व syslog उपयोगकर्ता को दिया जाना चाहिए। अनुमतियाँ सेट करने के लिए नीचे दिए गए आदेश का पालन करें।

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