एक Systemd आर्क लिनक्स के साथ Syslog संदेश प्राप्त करना


25

मुझे ऐसा लग रहा है कि मैंने स्पष्ट की अनदेखी कर दी है, लेकिन मैं यह पता नहीं लगा सकता कि मेरे आर्क लिनक्स सर्वर को कैसे प्राप्त किया जाए, जो systemdप्राप्त करने और लॉग इन करने के लिए उपयोग करता हैsyslog रिमोट सिस्टम से संदेश है।

मेरे पास एक सिस्को 678 डीएसएल मॉडेम और एक डीडी-डब्ल्यूआरटी वैप है, और दोनों को कुछ अन्य मशीन में सिसालॉग-प्रारूप संदेश भेजने के लिए कॉन्फ़िगर किया जा सकता है। मुझे वह मशीन मेरे आर्क लिनक्स सर्वर की तरह लगेगी।

मैंने चारों ओर गुगली की है, और मुझे लगता है कि "systemd syslog की जगह लेता है", या यह कि मुझे syslogअपने प्रश्न के लिए समान रूप से अप्रासंगिक होने की आवश्यकता नहीं है ।

अद्यतन करें

मैंने आर्क मंचों पर पूछा है और कोई प्रासंगिक जवाब नहीं दिया है। मैंने केवल UDP पोर्ट 514 पर सुनने के लिए syslog-ng स्थापित किया है। मेरे Cisco 678 से syslog-ng संदेश लिखते हैं, और मुझे एक DD-WRT WAP मिला है। दुर्भाग्य से, संदेश सिस्टमड के जर्नल में समाप्त नहीं होते हैं, बल्कि समतल फाइलों में होते हैं। तो, कोई सटीक समाधान नहीं है, लेकिन वर्कअराउंड का कुछ। मैं पत्रिका में syslog संदेश रखना चाहता हूं, न कि समतल फ़ाइलों में।


systemd अपने लॉग का उपयोग करता है । मेटलोग भी है , जो कोर आर्क रिपोज में उपलब्ध है - I, व्यक्तिगत रूप से, तीनों का उपयोग करते हैं: syslog, systemd की पत्रिका और मेटलॉग। सिस्टमड जर्नल की जाँच करने का प्रयास करें। अगर मुझे सही ढंग से याद है, तब से syslog, जब से systemd पर स्विच किया गया है, अपने सभी संदेशों और इस तरह के systemd के जर्नल में भेजने के लिए कॉन्फ़िगर किया गया है।
एलेक्सेज मगुरा

जवाबों:


11

आप एक गरीब आदमी के syslog सर्वर को आसानी से समाज के साथ लिख सकते हैं । आपको बस इस तरह एक सेवा इकाई की आवश्यकता है:

[Service]
Restart=on-success
ExecStart=/usr/bin/socat -u UDP-RECV:514 STDOUT

यह syslog सर्विस पोर्ट पर प्राप्त कुछ भी आँख बंद करके सिस्टम जर्नल को भेजेगा। ऊपर के रूप में सहेजें, कहते हैं, /etc/systemd/system/syslog.serviceऔर फिर

# systemctl daemon-reload
# systemctl start syslog

तब आपको अपने श्रवण सर्वर पर UDP पोर्ट 514 पर संदेश भेजने के लिए बस आपके स्रोत की आवश्यकता होती है।

आप वास्तव में प्राप्त डेटा को पार्स करने के लिए इसे बढ़ाना चाहते हैं और इसे प्रारूपित कर सकते हैं लेकिन यह आवश्यक नहीं है कि आप जो करना चाहते हैं वह वही है जो प्राप्त हुआ है।

( Socat आर्क लिनक्स में है अतिरिक्त भंडार: pacman -S socat)


4
अच्छा उत्तर। मैं एक त्वरित अजगर स्क्रिप्ट के साथ चला गया क्योंकि मैं import socket; sock = socket.socket(type=socket.SocketKind.SOCK_DGRAM); sock.bind(("0.0.0.0", 514)); while True: print(sock.recv(1024 * 1024))
समाज

3

इसलिए यहां थोड़ा अंतराल है।

सिस्टमड, सिस्टम-जर्नल-गेटवे घटक के माध्यम से दूरस्थ संदेश का समर्थन करता है। कहा जा रहा है कि ये संदेश syslog प्रारूप में नहीं हैं। Syslog (एक प्रारूप के रूप में) RFC 5424 (जो पिछले संस्करण, RFC 3164 को दर्शाया गया है) में प्रलेखित एक IETF अनुसमर्थित रीफ़िकेशन है।

इन नाटकों को एक साथ बनाने की पेचीदगियों को यहाँ दर्ज़ किया गया है:

http://www.freedesktop.org/wiki/Software/systemd/syslog/

और यहाँ (आदमी systemd-journald.service)

   systemd-journald is a system service that collects and stores logging data.
   It creates and maintains structured, indexed journals based on logging
   information that is received from the kernel, from user processes via the
   libc syslog(3) call, from STDOUT/STDERR of system services or via its native
   API. It will implicitly collect numerous meta data fields for each log
   messages in a secure and unfakeable way. See systemd.journal-fields(7) for
   more information about the collected meta data.

सारांश में सुनिश्चित करें कि संदेश syslog-ng से STDOUT तक भेजे गए हैं और पत्रिका में चीजें समाप्त होनी चाहिए।

इस पर थोड़ा और अधिक के रूप में मैं यह पाया:

https://github.com/intgr/pg_journal/blob/master/doc/pg_journal.md

जहाँ कोई लॉगिंग के लिए PostgreSQL से सिस्टमड के लिए बाइंडिंग लिख रहा है। इसमें वे कहते हैं कि वर्तमान में (उस फ़ाइल के समय के अनुसार, 2013/06) सिस्टम लाइन में बहु-पंक्ति संदेशों का समर्थन नहीं किया जाता है, इसलिए उसके लिए भी देखें।


2

मैं आर्क वितरण नहीं जानता। मेरे पास Fedora 20 (सिस्टमड सहित) है और इसे दूरस्थ syslog संदेशों को स्वीकार करने के लिए कॉन्फ़िगर किया है।

IMHO, यह कार्यक्षमता सिस्टमड से संबंधित नहीं है। Systemd-journald.service कर्नेल / यूजरस्पेस प्रोग्राम और सिसलॉग सबसिस्टम के बीच स्वयं को जोड़ता है। यह इन स्रोतों से केवल स्थानीय संदेशों को अपने जर्नल डेटाबेस में कैप्चर (मुझे लगता है) करता है और फिर उन्हें सीसॉलॉग पर भेज देता है। उदाहरण के लिए देखें "मैन सिस्टमड-जर्नलड्स सर्विस" (कम से कम फेडोरा पर)।

मेरे मामले में मैं /etc/rsyslog.conf में एक वैकल्पिक "टीसीपी syslog रिसीवर मॉड्यूल" कॉन्फ़िगर करके इसे सक्षम करता हूं अर्थात

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

एक यूडीपी मॉड्यूल भी उपलब्ध है।

वांछित फ़ाइलों में आउटपुट को निर्देशित करने के लिए (r) syslog नियमों को जोड़ना भी आवश्यक है। पूर्ण प्रलेखन के लिए देखें: http://www.rsyslog.com/doc/

HTH।


2

मैंने syslog-ng स्थापित किया और syslog लॉग संदेश प्राप्त करने में सक्षम था। लेकिन चाहते हैं कि मैं वास्तव में syslog लॉग संदेश प्राप्त करना चाहता था और फिर कहा संदेश लिखने के लिए। मुझे sdlog- एनजी को कॉन्फ़िगर करने का कोई तरीका नहीं मिल सका है ताकि दूरस्थ syslog संदेशों को जर्नल में लिखा जा सके।

इसलिए मैंने ऐसा करने के लिए एक उपयोगिता लिखी।

https://github.com/advantageous/rsyslog-journald-repeater

./rsyslog-journald-repeater -h
Usage of ./rsyslog-journald-repeater:
-debug
    debug flag
-host string
    hostname to listen on (default "0.0.0.0")
-port int
    port to listen on (default 5514 on darwin, default 514 on Linux, Unix, etc.)

प्रोजेक्ट के साथ परीक्षण और नमूना सिस्टमड यूनिट फ़ाइलों के लिए फ़ाइलों और निर्देशों का निर्माण करें। का आनंद लें!


0

syslog- एनजी और सिस्टमड जर्नल

से syslog-एनजी

system()सिस्टम-सिस्टम का उपयोग करके लिनक्स सिस्टम पर डिफ़ॉल्ट स्रोत 3.6.1 के syslog- एनजी संस्करण के साथ शुरू करना इसके मानक system()स्रोत के रूप में जर्नल का उपयोग करता है ।

यदि आप जर्नल और syslog- एनजी दोनों फाइलों का उपयोग करना चाहते हैं, तो सुनिश्चित करें कि निम्नलिखित सेटिंग्स प्रभावी हैं। Systemd-journald के लिए, /etc/systemd/journald.conf फ़ाइल में, Storage = या तो auto या unset (जो auto में चूक करता है) और ForwardToSyslog = के लिए सेट किया गया है या unset (no के लिए डिफ़ॉल्ट) पर सेट है। /Etc/syslog-ng/syslog-ng.conf के लिए, आपको निम्नलिखित स्रोत श्लोक की आवश्यकता है:

 source src {
   system();
   internal();
 };

यदि, दूसरी ओर, आप जर्नल लॉग्स को बरकरार नहीं रखना चाहते हैं, लेकिन केवल syslog- एनजी के टेक्स्ट लॉग, सेट Storage=volatileऔर ForwardToSyslog=yesइन /etc/systemd/journald.conf। यह जर्नल को रैम में स्टोर करेगा। के रूप में syslog- एनजी 3.6.3, syslog- एनजी के रूप में जर्नल का उपयोग कर रहा हैsystem() स्रोत के जर्नल इसलिए यदि आप स्टोरेज = कोई भी सेट नहीं करते हैं, तो सिस्टमड जर्नल सभी संदेशों को छोड़ देगा और उन्हें syslog-ng पर अग्रेषित नहीं करेगा।

परिवर्तन के बाद systemd-journald.serviceऔर syslog-ng.serviceडेमॉन पुनः आरंभ करें ।

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