Ubuntu 16.04 पर rsyslog और journald का संबंध


18

मैं चला रहा हूं कि एक वेनिला उबंटू 16.04 सर्वर क्या है, और मैं अपने सिर को चारों ओर लपेटने की कोशिश कर रहा हूं कि लॉगिंग डिफ़ॉल्ट रूप से कैसे सेट किया गया है। मैं देख सकता हूँ कि दोनों journaldऔर rsyslogस्थापित कर रहे हैं और चल रहे हैं, लेकिन यह कैसे लॉग संदेशों संसाधन हो रहा है मेरे लिए सब स्पष्ट में नहीं है।

अधिकांश संदेशों में /var/log/syslogऔर अंदर दोनों को दिखाने के लिए लगता है journalctl, लेकिन मैं दोनों के बीच /etc/systemd/journald.conf(जो मूल रूप से डिफ़ॉल्ट रूप से सभी टिप्पणी की गई है), /etc/rsyslog.confया दोनों के बीच अग्रेषण के लिए कोई स्पष्ट विन्यास नहीं देख सकता /etc/rsyslog.d/50-default.conf। मैंने आधिकारिक दस्तावेज, या यहां तक ​​कि एक ब्लॉग पोस्ट की व्याख्या करने की कोशिश की जिसमें बताया गया है कि उबंटू में दो कैसे स्थापित किए जाते हैं, लेकिन कुछ भी खोजने में कामयाब नहीं हुए हैं।

अपनी उलझन में और इजाफा करने के लिए, मैंने logger -p local1.info Testहोस्ट पर अमल किया है, और पाया कि कुछ भी नहीं लिखा गया था /var/log/syslog, जबकि संदेश के नीचे दिखाया गया था journalctl

मेरे प्रश्न हैं:

  1. Ubuntu 16.04 (डिफ़ॉल्ट रूप से) पर जर्नल और rsyslog एक साथ कैसे काम करते हैं?
  2. मैसेज से भेजे गए संदेश loggerजर्नल में कैसे समाप्त हो जाते हैं, लेकिन सॉगलॉग में नहीं?

अद्यतन: loggerउम्मीद के मुताबिक काम नहीं करना मेरे अंत में एक गलती थी, इसलिए यह मुख्य प्रश्न के लिए प्रासंगिक नहीं है।

जवाबों:


12

डिफ़ॉल्ट रूप rsyslogसे "imuxsock" मॉड्यूल का उपयोग कर रहा है, मॉड्यूल प्रदान करता है:

स्थानीय यूनिक्स सॉकेट्स के माध्यम से syslog संदेशों को स्वीकार करने की क्षमता। सबसे महत्वपूर्ण बात, यह वह तंत्र है जिसके द्वारा syslog (3) कॉल rysyslogd [1] को syslog संदेश भेजता है ।

rsyslog"Imjournal" [2] नामक एक मॉड्यूल का उपयोग करके सिस्टमड-जर्नल से संरचित लॉग संदेशों को आयात करना संभव है ।

इसे लोड किया जा सकता है:

module(load="imjournal") 

में:

/etc/rsyslog.conf

दूसरे हाथ में "systemd-journald" सभी डेटा को कैप्चर करता है:

man systemd-journald

systemd-journald एक सिस्टम सेवा है जो लॉगिंग डेटा एकत्र और संग्रहीत करती है। यह विभिन्न स्रोतों से प्राप्त होने वाली लॉगिंग जानकारी के आधार पर संरचित, अनुक्रमित पत्रिकाओं का निर्माण और रखरखाव करता है:

   ·   Kernel log messages, via kmsg
   ·   Simple system log messages, via the libc syslog(3) call
   ·   Structured system log messages via the native Journal API, 
       see sd_journal_print(4)
   ·   Standard output and standard error of system services
   ·   Audit records, via the audit subsystem

rsyslogdजब आप अभी भी सिस्टम लॉग का उपयोग कर रहे हैं, तब आप इसे अक्षम कर सकते हैं journalctl

$ sudo systemctl mask rsyslogd
$ sudo systemctl stop syslog.socket
$ sudo systemctl stop rsyslog.service
$ systemctl is-active rsyslog.service 
inactive
$ logger -p mail.info Helllooo
$ journalctl

उदाहरण के लिए, सेंटोस "imuxsock" मॉड्यूल का उपयोग कर रहा है, ताकि सभी "सिस्टमड-जर्नल" डेटा को कैप्चर किया जा सके, rsyslogजबकि ओपनस्यूज़ में "सिसलॉग" बिल्कुल भी नहीं है।


यह पता लगाने के लिए कि आपका संदेश समाप्त क्यों नहीं हुआ /var/log/syslog, आपको इस फ़ाइल की जाँच करनी चाहिए:

less /etc/rsyslog.d/50-default.conf

के लिए *.infoदेखें, देखें कि उन्हें कहाँ संग्रहीत किया जाएगा, यह एक अन्य फ़ाइल की तरह हो सकता है messages

मेरे लिए यह दोनों में journalctlऔर दिखाता है syslog


logger -p .info helloमान्य नहीं है। आपने कोई सुविधा नाम नहीं दिया है।
luv.preet

उत्तर को अपडेट करें ....
रवेक्सिना

जैसा कि मैंने अपने संपादन में नोट किया, loggerकाम नहीं करना मेरी गलती थी, इसलिए अब इसे ठीक किया गया है (वैसे भी सुझावों के लिए धन्यवाद)। जैसे कि दो स्थानों पर दिखाई देने वाली लॉग के लिए, आपका नोट imuxsockकुंजी लगता है: ऐसा लगता है कि rsyslog और journald दोनों स्थानीय syslog संदेशों के लिए सुन रहे हैं, इसलिए उन प्रविष्टियों को दो अलग लॉग में जाना चाहिए।
प्रेरित किया

मैंने ubuntu पर उपरोक्त का पालन किया और अब मुझे लकड़हारा, hmm: root @ T: ~ # logger -p mail.info Helllooo root @ T: ~ # journalctl से कोई लॉग नहीं मिला। - कोई प्रविष्टि नहीं - कोई विचार?
हैकरन

बहुत बढ़िया जवाब। हालाँकि मुझे याद आ रहा है, लेकिन इस बारे में एक नोट है कि कैसे जर्नल एक syslog सॉकेट खोलना जानता है (या यदि यह नहीं है, तो इसे syslog संदेशों में कैसे मिलता है) जब rsyslog अक्षम हो जाता है? या जर्नल के कुछ मैनुअल कॉन्फ़िगरेशन की आवश्यकता है?
मैथिज्स कोइजमैन

4

Systemd एक init सिस्टम है जो सिस्टम को बूट करने के लिए सेवाओं को शुरू करने के लिए उपयोग किया जाता है। सिस्टमड द्वारा शुरू की गई सेवाओं के लिए लॉग बनाने के लिए जर्नल जिम्मेदार है। सिस्टमड के साथ जर्नल को एकीकृत करके, यहां तक ​​कि शुरुआती बूट प्रक्रिया संदेश भी जर्नल के लिए उपलब्ध हैं।

रूपलॉग एक डेमॉन है जो विशेष रूप से लॉग प्रोसेसिंग के लिए बनाया गया है, इसका जर्नल से कोई लेना-देना नहीं है। यह कई तरीकों से लॉग ले सकता है और उन्हें कई तरीकों से आउटपुट कर सकता है। यह डिफ़ॉल्ट रूप से सक्षम नहीं है कि यह जर्नल से लॉग संदेश भी लेता है। उसके लिए आपको /etc/rsyslog.conf फाइल में लिखना होगा,

$ModLoad imjournal # im -> input module
OR
load(type="imjournal")

अब, यह लॉग पत्रिका से भी स्वीकार करेगा। लेकिन मेरा सुझाव है कि आपको अपनी /etc/rsyslog.conf फ़ाइल नहीं बदलनी चाहिए।

/Etc/rsyslog.conf फ़ाइल के अंत में एक पंक्ति लिखी गई है,

$IncludeConfig /etc/rsyslog.d/*.conf

इसका अर्थ है कि /etc/rsyslog.d/ फ़ोल्डर में अंत में .conf होने वाली सभी फ़ाइलों को rsyslog लोडिंग के दौरान शामिल किया जाना चाहिए। तो, आपके सभी कस्टम कॉन्फ़िगरेशन को इन फ़ाइलों में जाना चाहिए

मैं आपको एक फ़ाइल /etc/rsyslog.d/journald.conf बनाने का सुझाव दूंगा और नीचे दिए गए स्निपेट को उसमें चिपका दूंगा।

नीचे imjournal के rsyslog आधिकारिक पेज से स्निपेट दिया गया है

module(load="imjournal" PersistStateInterval="100"
   StateFile="/path/to/file") #load imjournal module
module(load="mmjsonparse") #load mmjsonparse module for structured logs

template(name="CEETemplate" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag% @cee: %$!all-json%\n" ) #template for messages

action(type="mmjsonparse")
action(type="omfile" file="/var/log/ceelog" template="CEETemplate")

पंक्ति 1 - यह जर्नल से लॉग को स्वीकार करने के लिए imjournal मॉड्यूल को लोड करता है

2 - लॉग्स के पार्सिंग में mmjsonparse मॉड्यूल का उपयोग किया जाता है

3 - वे टेम्पलेट में वर्णित प्रारूप में संरचित हैं

4 - यह mmjsonparse मॉड्यूल का उपयोग करके उन लॉग को पार्स करता है।

5 - यह उन फाइलों को अर्थात् / var / log / ceelog को दिए गए टेम्पलेट में दी गई संरचना के अनुसार, omfile (आउटपुट मॉड्यूल फाइल - फाइल को आउटपुट) मॉड्यूल का उपयोग करके भेजता है।

अपनी आवश्यकता के अनुसार विन्यास में बदलाव करें।


स्पष्टीकरण के लिए धन्यवाद, लेकिन मुझे लगता है कि @Ravexina द्वारा जवाब मुझे समझने में मदद करने के लिए करीब है कि rsyslog और journald के साथ क्या हो रहा है, डिफ़ॉल्ट रूप से (अतिरिक्त कॉन्फ़िगरेशन के बिना)।
प्रेरित किया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.