लगातार पूंछ के साथ लॉग की निगरानी करें जो कभी-कभी घुमाए जाते हैं


21

हम कई लॉग को लगातार मॉनिटर करने के लिए पूंछ का उपयोग कर रहे हैं, लेकिन जब एक लॉग को घुमाया जाता है तो उस फ़ाइल के लिए संघर्ष बंद हो जाएगा।

जहां तक ​​मैं समझता हूं, समस्या यह है कि जब लॉग को घुमाया जाता है, तो एक नई फ़ाइल बनाई जाती है, और चल रही पूंछ प्रक्रिया उस नई फ़ाइल हैंडल के बारे में कुछ भी नहीं जानती है।

जवाबों:


34

आह, इसके लिए एक झंडा है।

उपयोग करने के बजाय tail -f /var/log/fileहमें उपयोग करना चाहिएtail -F /var/log/file


tail -Fमें के tail --follow=name --retryरूप में अनुवाद ;

  • --follow=name: फाइल डिस्क्रिप्टर की जगह फाइल के नाम का पालन करें
  • --retry: यदि फ़ाइल अप्राप्य है, तो मरने के बजाय बाद में पुनः प्रयास करें

उनके पास "-f" विकल्प भी क्यों होगा? यह डिफ़ॉल्ट होना चाहिए!
डोमिनिक सेरिसानो

27
# tail --follow=mylog.log

से आदमी पूंछ :

With --follow (-f), tail defaults to  following  the  file  descriptor,
       which  means that even if a tail’ed file is renamed, tail will continue
       to track its end.  This default behavior  is  not  desirable  when  you
       really want to track the actual name of the file, not the file descrip‐
       tor (e.g., log rotation).  Use --follow=name in that case.  That causes
       tail  to track the named file by reopening it periodically to see if it
       has been removed and recreated by some other program.

तो इस मामले में -Fविकल्प का उपयोग करना सही होगा।

-F     same as --follow=name --retry

11

सटीक उत्तर आपके ओएस पर निर्भर करता है - लेकिन कई मामलों में, tail -Fसही काम करेगा।


3
यदि पूंछ -F काम नहीं करता है, तो पूंछ -F का एक संस्करण संकलित करें जो करता है। अन्य विकल्प पागल शहर के लिए एक छोटी सड़क है।
क्रिस


2

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

आठ साल बाद, मुझे नहीं पता कि मैं यहाँ किस बारे में बात कर रहा था: ऐसे कई स्थान हैं जहाँ आप आकार के हिसाब से घूमना चाहते हैं, क्योंकि दैनिक / साप्ताहिक / मासिक रोटेशन से MASSIVE फाइलें निकल सकती हैं जो गंभीर मुद्दों का कारण बन सकती हैं।

एक अधिक अनुभवी दृष्टिकोण से, असली सवाल यह है कि आप क्यों बैठना चाहते हैं और लगातार एक फाइल को पूंछते हैं जो इतनी तेज़ी से बढ़ रही है कि आप इसे दैनिक से अधिक घुमा रहे हैं ... यह मैट्रिक्स स्ट्रीम को देखना पसंद करेगा।

इन दिनों आप स्प्लंक या सुमोग्लिक जैसे कुछ बड़े डेटा लॉग एग्रीगेशन में देख रहे होंगे, जहाँ यह लॉग ईवेंट को कक्षाओं में फ़िल्टर कर सकता है और विशिष्ट लॉग मानों के आधार पर ट्रिगर कर सकता है ... लाइव लॉग देखने की कोई आवश्यकता नहीं है।


मैं सहमत हूं और यह एक चीज है जिसे मैंने महसूस किया कि मुझे देखना चाहिए। उम्मीद है कि log4j इसका समर्थन करता है। धन्यवाद!
DivideByHero

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

1

मैं अपने उत्पादन सर्वर पर कमांड का उपयोग करता हूं:

tail --follow var/log/apache-access_log --retry

-1

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

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