जर्नल के साथ प्रति-यूनिट लॉग भंडारण नीति को कैसे कॉन्फ़िगर करें?


14

मेरे पास एक विशेष सेवा है, जो दुर्लभ, लेकिन महत्वपूर्ण जानकारी लॉग करती है। मैंने इसे कुछ महीने पहले स्थापित किया है, और आज मैं journalctl -n 50 --unit=my-serviceकेवल खोजने के लिए चला हूं कोई प्रविष्टियां नहीं हैं।

मैं अधिकांश इकाइयों के लिए इस व्यवहार से पूरी तरह से खुश हूँ - मुझे या तो कुछ ऐसा चाहिए जो तुरंत हुआ (या कुछ दिन पहले सबसे अधिक हुआ), और मुझे महीनों पुराने रिकॉर्ड की परवाह नहीं है।

हालांकि, journaldएक विशेष इकाई के रिकॉर्ड के लिए एक स्वतंत्र भंडारण और अवधारण नीति के बारे में बताने का कोई तरीका है ? मैं कहना चाहता हूं कि 5 साल के लिए उन विशेष लॉग्स को जारी रखना चाहिए - कोई भी आकार नहीं होगा। अन्य इकाइयों के लॉग को इससे अप्रभावित होना चाहिए, और उनके मौजूदा व्यवहार को बनाए रखना चाहिए।

मैं खोई समझ journald.conf(5)को पसंद कर रहा हूं , और जब भी प्रति यूनिट कॉन्फ़िगरेशन संभव हो तो यह पता नहीं लगाया जा सकता है। यदि यह है - एक संक्षिप्त ठोस उदाहरण की सराहना करेंगे - मुझे किस फ़ाइल को संपादित करना / बनाना चाहिए और मुझे क्या लिखना चाहिए। या, यदि आप जानते हैं कि यह निश्चित रूप से उल्लेखनीय नहीं है - तो यह एक अच्छा जवाब होगा।

नोट: मेरे विशेष मामले में आर्क लिनक्स होस्ट शामिल है, लेकिन मुझे लगता है कि यह ज्यादा मायने नहीं रखना चाहिए।


मैं इस सुविधा को journald में जोड़ने के बारे में इस मुद्दे को जोड़ने के लिए ऊपर दिए गए उत्तर पर टिप्पणी नहीं कर सकता, इसलिए यहां यह एक और उत्तर के रूप में है: github.com/systemd/systemd/issues/4751
swoop81

जवाबों:


7

लगता है कि मैं सबसे अधिक संभावना के साथ भाग्य से बाहर हूँ। जब तक मैं एक स्वतंत्र "लॉन्ग-टर्म स्टोरेज" पत्रिका (जैसे वर्तमान में अलग-अलग प्रति-उपयोगकर्ता पत्रिकाएँ) को प्रकाशित करने का एक तरीका नहीं निकालूँगा, लेकिन मुझे यकीन नहीं है कि यह एक व्यवहार्य और समझदार दृष्टिकोण है। मुझे लगता है, एक syslogd (और logrotate) सेट करना आसान होगा।

यह सुविधा 2014 के अंत में मौजूद नहीं थी , जैसा कि खुद लेनार्ट ने पुष्टि की थी।

और ऐसा लगता है कि यह अभी तक यहां नहीं है। कम से कम, लाइन "जर्नल: प्रति-प्राथमिकता और प्रति-सेवा प्रतिधारण समय की अनुमति दें जब घूर्णन / वैक्यूमिंग" अभी भी TODO फ़ाइल (2016-07-11 से संशोधन के लिए लिंक) में है।


3
यह एक बहुत बड़ा डिजाइन दोष लगता है, लगभग अपंग। खासकर यदि कोई प्रतिधारण को कम करना चाहता है या कम से कम लॉग इन स्तर पर बहुत बात करता है, जो लॉग को रोक देता है।
ओरियन

1
इस प्रश्न पर किसी को भी ठोकर लगने के लिए, TODO में संदर्भित लाइन अभी भी इस टिप्पणी (26.03.18) के रूप में मौजूद है: github.com/systemd/systemd/blob/…
timss

1
उस पर कुछ कर्षण प्राप्त करने के प्रयास में मैंने इसे परियोजना के साथ एक मुद्दे के रूप में उठाया - github.com/systemd/systemd/issues/9519
स्लम

1

यह लॉग फ़ाइल उत्पन्न करने के लिए उल्लेखनीय रूप से सरल है। डिफ़ॉल्ट रूप से सभी लॉगिंग करने के लिए sdlog भी जाता है और इस डिफ़ॉल्ट को जगह में होना चाहिए। Rsyslog.conf नियंत्रित करता है कि प्रविष्टियाँ syslog को कैसे सौंपी जाती हैं। किसी भी सेवा के लिए लॉग प्रविष्टियों को आम तौर पर SyslogFacilityचूक के अलावा daemonआमतौर पर daemon.logफ़ाइल में समाप्त होता है /var/log

अपनी सेवा फ़ाइल में [सेवा] अनुभाग में जोड़ें

SyslogFacility=local2

(संख्या 0 और 7 के बीच हो सकती है) https://www.freedesktop.org/software/systemd/man/systemd.exec.html

/Etc/rsyslog.conf को संशोधित करें (मौजूदा लाइनों को संशोधित करने के लिए ढूंढें) ताकि स्थानीय 2 एक विशिष्ट फ़ाइल (पहली पंक्ति) में लॉग इन हो और आदर्श local2.noneरूप से दिखाए गए अनुसार जोड़कर syslog में लॉग इन न हो (यह पत्रिका में पहले से ही है)।

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[संपादित करें] आपको सभी कैच में संशोधन करना होगा

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

निश्चित रूप से वास्तविक प्रतिधारण को लॉगोट्रेट द्वारा किया जाना चाहिए।

HTH

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