क्रोनोलॉज बनाम लॉगरोट


जवाबों:


14

मेरे अनुभव में, logrotate बहुत अच्छा है। यह बहुत लचीला है, और अधिकांश सॉफ्टवेयर के साथ अच्छा काम करता है।

हालाँकि, इसके साथ कुछ समस्याएँ हैं, और जैसा कि क्रोनोलॉज़ मुख्य रूप से एक वेब लॉग रोटेशन सुविधा है, मैं लॉगोट्रेट + अपाचे के साथ अपने अनुभव को लिखूंगा जो समस्याग्रस्त था:

लॉग को घुमाते समय, हमें अपाचे को सूचित करना चाहिए कि एक लॉग को घुमाया जा रहा है, जैसे कि लॉगरोटेट access.log का नाम बदल देता है। access.log.1 तक, अपाचे access.log.1 को लिखना जारी रखेगा, क्योंकि यह इनोड में लिख रहा है, और फ़ाइल का नाम बदलना इनोड नंबर को प्रभावित नहीं करता है।

डेबियन एच (और शायद कई अन्य डिस्ट्रोस) पर, एपाचे लॉग को घुमाने के लिए लॉगरोटेट का उपयोग किया जा रहा है। अब, अपाचे के पास एक शानदार पुनरारंभ है जो अपाचे बच्चे की प्रक्रियाओं को मौजूदा कनेक्शनों की सेवा समाप्त करने से पहले बाहर निकलने की सलाह देता है, अपाचे फिर यह कॉन्फ़िगरेशन को फिर से पढ़ता है, नई बाल प्रक्रियाओं को जन्म देता है, जो एक नई लॉग फ़ाइल में लिखना शुरू करता है (मामले में पिछले एक) घुमाया)।

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

लब्बोलुआब यह है, लोगरोट महान है, लेकिन कुछ कार्यक्रमों के लिए कुछ मुद्दों को जन्म दे सकता है। मुझे क्रोनोलॉग के साथ बहुत अनुभव नहीं है, लेकिन जैसा कि यह एक पाइप के माध्यम से लॉग लिखता है, इसे लॉग फ़ाइलों को घुमाते समय किसी भी अपाचे रीलोड की आवश्यकता नहीं होती है, जो मूल रूप से ऊपर वर्णित सभी को हल करता है।

संबंधित लॉगोटेट / अपाचे डेबियन बग:

  1. डेबियन बग # 301702
  2. डेबियन बग # 400455

1
ऊपर के लिए समाधान ट्रंकट का उपयोग करना है! यह क्या है। access.log.1 के लिए access.log की सामग्री की प्रतिलिपि बनाएँ और फिर access.log को खाली करें (जैसा कि आप देखते हैं कि access_log का इनोड अवशेष समान रहता है)। आमतौर पर आपके पास कुछ जीबी (सबसे खराब कैज़) से बड़ा लॉग नहीं होता है, इसलिए पूरी प्रक्रिया में लंबा समय नहीं लगेगा!
निकोलाइडिस फोटिस

3

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

logrotate जहां cron द्वारा शुरू किया गया है, और यदि किसी कारण से एक सिस्टम डाउन हो जाता है जब रोटेट होना चाहिए था, तो आपकी लॉग फाइलें घुमाई नहीं जाएंगी।

मुझे यह भी पसंद है कि लॉग फाइल के पास नाम में तारीख (% Y% m.combined.access.log) है क्योंकि मैं उन लॉग को लंबे समय तक रखता हूं। अधिकांश सिस्टमों पर, डिफ़ॉल्ट रूप से, अपाचे लॉगोटेट फाइलों का नाम access.log, access.log.1, आदि रखेंगे। लॉगरोट के साथ लॉगफाइल्स में एक तारीख का उपयोग करना संभव हो सकता है, लेकिन मैं यह नहीं पता लगा सका कि पिछली बार मैंने कैसे देखा था।


2
वह समस्या जहां लॉगोटेट काम नहीं करता है यदि वह क्रोन समय पार कर गया है तो "एनाक्रॉन" पैकेज को स्थापित करके तय किया जा सकता है।
andrewd18

या इससे भी बेहतर आप अपने लॉग को वांछित प्रारूप में सहेज सकते हैं -इसको rsyslog में टेम्पलेट्स के साथ किया जा सकता है - (% वर्ष% -% माह% -% दिन% _lala.log)। इस स्थिति में, आपको लॉग को घुमाने की भी आवश्यकता नहीं है, क्योंकि हर दिन tha नाम बदल दिया जाता है!
निकोलाइडिस फोटिस

2

केवल कभी लॉगोटेट का उपयोग किया। यह डेबियन डिफ़ॉल्ट रूप से उपयोग करता है और मुझे इसके साथ कोई शिकायत नहीं है।


2

मैं लगभग विशेष रूप से उपयोग करने cronologसे अधिक logrotatelogrotateडेबियन के साथ आता है, और मैं इसे मेल सर्वर लॉग जैसी सिस्टम सेवाओं के लिए काम करने की अनुमति देता हूं। लेकिन अपाचे और lighttpdलॉग फ़ाइलों के लिए, यह सब है cronolog

मेरे द्वारा उपयोग किए जाने के कारणों में से cronologएक यह है कि सभी कॉन्फ़िगरेशन वेब सर्वर कॉन्फ़िगरेशन की लॉग-फाइल लाइन में होता है

एक lighttpdविन्यास फाइल में उदाहरण के लिए , आप डाल सकते हैं:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"

और सभी को किसी भी अन्य कॉन्फ़िगरेशन के बिना हर हफ्ते एक नई लॉग फ़ाइल मिलती है। या आप रचनात्मक हो सकते हैं और कुछ ऐसा कर सकते हैं:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"

और एक लॉग फ़ाइल प्राप्त करें जो सप्ताह के दिन तक ट्रैफ़िक दिखाता है। जैसे रविवार, सभी मंगलवार।

क्या बेहतर है कि भले ही सर्वर किसी भी समय के लिए नीचे है, फिर भी सही लॉग फ़ाइल को पुनरारंभ करने पर उपयोग किया जाएगा।


1
यह बहुत कुछ दिखता है जैसे svlogd (रनिट और डेमोंटोलस वंश का)।
तोबू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.