2013-11-23 6 views
31

हम लॉग्रोटेट का उपयोग करते हैं और यह दैनिक चलता है ... अब हमारे पास कुछ स्थितियां हैं जहां लॉग महत्वपूर्ण रूप से बढ़े हैं (पढ़ें: gigbaytes) और हमारे सर्वर को मारना। तो अब हम लॉग में अधिकतम फाइलसाइज सेट करना चाहते हैं ....सभी लॉग के लिए अधिकतम फ़ाइल आकार के लिए Centos/Linux सेटिंग logrotate

क्या मैं इसे logrotate.conf में जोड़ सकता हूं?

आकार 50M

और यह तो सभी लॉग फ़ाइलों के लिए लागू होते हैं? या मुझे इसे प्रति लॉग आधार पर सेट करने की आवश्यकता है?

या कोई अन्य सलाह?

(पीएस। मैं समझता हूं कि अगर आप अधिसूचित होना चाहते हैं तो लॉग वर्णित की तरह बढ़ता है और हम जो करना चाहते हैं वह आदर्श नहीं है - लेकिन यह अब लॉगऑन करने में सक्षम नहीं है क्योंकि वहां कोई स्थान उपलब्ध नहीं है)

धन्यवाद, शॉन

उत्तर

37

यह लॉग फ़ाइल के आकार को निर्दिष्ट रोटेशन को गति प्रदान करने। उदाहरण के लिए size 50M फ़ाइल में 50 एमबी या इससे अधिक होने के बाद एक लॉग रोटेशन ट्रिगर करेगा। आप गीगाबाइट्स के लिए मेगाबाइट्स, k के लिए प्रत्यय M और गीगाबाइट्स के लिए G का उपयोग कर सकते हैं। यदि कोई प्रत्यय उपयोग नहीं किया जाता है, तो यह इसे बाइट्स के लिए ले जाएगा। आप अंत में उदाहरण की जांच कर सकते हैं। size, maxsize, और minsize उपलब्ध तीन निर्देश उपलब्ध हैं। मैनपेज के अनुसार:

"/var/log/httpd/access.log" /var/log/httpd/error.log { 
      rotate 5 
      mail [email protected] 
      size 100k 
      sharedscripts 
      postrotate 
       /usr/bin/killall -HUP httpd 
      endscript 
     } 

यहाँ दोनों फ़ाइलों /var/log/httpd/access.log और /var/log/httpd/error.log के लिए एक स्पष्टीकरण है:

minsize size 
       Log files are rotated when they grow bigger than size bytes, 
       but not before the additionally specified time interval (daily, 
       weekly, monthly, or yearly). The related size option is simi- 
       lar except that it is mutually exclusive with the time interval 
       options, and it causes log files to be rotated without regard 
       for the last rotation time. When minsize is used, both the 
       size and timestamp of a log file are considered. 

size size 
       Log files are rotated only if they grow bigger then size bytes. 
       If size is followed by k, the size is assumed to be in kilo- 
       bytes. If the M is used, the size is in megabytes, and if G is 
       used, the size is in gigabytes. So size 100, size 100k, size 
       100M and size 100G are all valid. 
maxsize size 
       Log files are rotated when they grow bigger than size bytes even before 
       the additionally specified time interval (daily, weekly, monthly, 
       or yearly). The related size option is similar except that it 
       is mutually exclusive with the time interval options, and it causes 
       log files to be rotated without regard for the last rotation time. 
       When maxsize is used, both the size and timestamp of a log file are     
       considered. 

यहाँ एक उदाहरण है। जब भी यह आकार में 100k से अधिक हो जाता है, तो वे घुमाए जाते हैं, और हटाए जाने के बजाय, 5 रोटेशन के माध्यम से जाने के बाद पुराने लॉग फ़ाइलों को [email protected] पर मेल किया जाता है (असम्पीडित)। साझा स्क्रिप्ट का अर्थ है कि पोस्ट्रोटेट स्क्रिप्ट केवल एक बार चलती है (पुराने लॉग को संपीड़ित करने के बाद), एक बार घुमाए गए प्रत्येक लॉग के लिए नहीं। ध्यान दें कि इस खंड की शुरुआत में पहले फ़ाइल नाम के चारों ओर डबल कोट्स नाम में रिक्त स्थान के साथ लॉग घुमाने के लिए लॉग्रोटेट को अनुमति देता है। सामान्य शेल उद्धरण नियम लागू होते हैं, ,, और \ वर्ण समर्थित हैं।

+1

अच्छा। एक छोटा सा नोट, मैंने पाया कि अधिकतम और minsize पुराने distros (जैसे Centos5 और ubuntu 10.10 ... के साथ अच्छी तरह से काम नहीं करता है ... बाद में ईओएल है)। – tobixen

0

मैंने इसे कभी भी वैश्विक विकल्प के रूप में उपयोग नहीं किया है, लेकिन इसका परीक्षण करने का एक तरीका -d ध्वज का उपयोग करना है। यह किसी भी घूर्णन को संसाधित नहीं करेगा, लेकिन यह आपको बताएगा कि कौन सा लॉग्रोट करेगा।

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

+0

क्यों? @Zeeshan I द्वारा निकालने वाले मैन पेज को पढ़ने से मैं केवल उस व्यवहार की अपेक्षा करूंगा ... ("minsize: ... जब वे आकार बाइट्स से बड़े होते हैं, तो लॉग फ़ाइलों को घुमाया जाता है, लेकिन * अतिरिक्त * अंतराल निर्दिष्ट समय अंतराल से पहले नहीं ...") – MarcoS

49

जैसा कि मेरे ज़ीशान का उल्लेख है, लॉगोटेट विकल्प size, minsize, maxsize रोटेशन के लिए ट्रिगर्स हैं।

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

आकार विकल्प यह सुनिश्चित नहीं करते हैं कि आपके घुमावदार लॉग निर्दिष्ट आकार के भी हैं। निर्दिष्ट आकार के करीब होने के लिए आपको पर्याप्त रूप से लॉग्रोटेट प्रोग्राम को कॉल करने की आवश्यकता है। यह महत्वपूर्ण है।

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

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

Ubuntu पर

, आप आसानी से प्रति घंटा रोटेशन के लिए स्क्रिप्ट /etc/cron.daily/logrotate ले जाकर

/etc/cron.hourly/logrotate या करने के लिए

*/5 * * * * /etc/cron.daily/logrotate 

जोड़ने के लिए स्विच कर सकते हैं अपने/आदि/crontab फ़ाइल। इसे हर 5 मिनट चलाने के लिए।

size विकल्प दैनिक, साप्ताहिक, मासिक समय विकल्पों को अनदेखा करता है। लेकिन & न्यूनतम आकार को ध्यान में रखें।

मैन पेज थोड़ा उलझन में है। यहां मेरी व्याख्या है।

minsize केवल तभी घूमता है जब फ़ाइल उचित आकार तक पहुंच जाती है और निर्धारित समय अवधि बीत जाती है। उदा। 50 एमबी + दैनिक न्यूनतम करें यदि फ़ाइल दैनिक समय से पहले 50 एमबी तक पहुंच जाती है, तो यह अगले दिन तक बढ़ती रहेगी।

maxsize घुमाएगा जब लॉग सेट आकार तक पहुंच जाएगा या उपयुक्त समय बीत चुका है। उदा। अधिकतम 50 एमबी + दैनिक। यदि फ़ाइल 50 एमबी है और हम अगले दिन नहीं हैं, तो लॉग घुमाया जाएगा। अगर फ़ाइल केवल 20 एमबी है और हम अगले दिन तक रोल करते हैं तो फ़ाइल घुमाएगी।

size लॉग> आकार के दौरान घुमाएगा। भले ही प्रति घंटा/दैनिक/साप्ताहिक/मासिक निर्दिष्ट किया गया हो। तो यदि आपके पास आकार 100 एम है - इसका मतलब है कि जब आपकी लॉग फ़ाइल है> 100M लॉग को घुमाया जाएगा यदि यह स्थिति सत्य होने पर लॉग्रोटेट चलाया जाता है। एक बार यह घुमाए जाने के बाद, मुख्य लॉग 0 होगा, और बाद वाला रन कुछ भी नहीं करेगा।

तो ओप के मामले में। Specficially 50 एमबी अधिकतम मैं निम्नलिखित की तरह कुछ उपयोग करेंगे:

/var/log/logpath/*.log { 
    maxsize 50M 
    hourly 
    missingok 
    rotate 8 
    compress 
    notifempty 
    nocreate 
} 

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

चूंकि मैंने प्रति घंटा वहां रखा है, इसलिए हमें लॉग इनोटेट की आवश्यकता होगी ताकि प्रत्येक घंटे कम से कम चल सके। लेकिन चूंकि वे प्रति दिन 2 गीगाबाइट कहते हैं और हम 50 एमबी चाहते हैं ...83 एमबी प्रति घंटे की स्थिर दर मानते हुए। इसलिए आप कल्पना कर सकते हैं कि अगर हम अधिकतम 50 सेट करने के बावजूद लॉग इनोटेट चलाते हैं, तो हम उस मामले में 83 एमबी लॉग के साथ समाप्त हो जाएंगे। तो इस उदाहरण में सेट करें कि हर 30 मिनट या उससे कम तक चलना पर्याप्त होना चाहिए।

सुनिश्चित करें कि प्रत्येक 30 मिनट में लॉग्रोटेट चलाया जाता है।

*/30 * * * * /etc/cron.daily/logrotate 
+0

क्या आप "आकार विकल्प दैनिक, साप्ताहिक, मासिक समय विकल्पों को अनदेखा करते हैं" के बारे में अधिक जानकारी दे सकते हैं। – Jisson

+0

यह लगभग अधिकतम के समान है? – Jisson

+0

ठीक है, आकार – Matt

संबंधित मुद्दे