lnav - देखो और एक लिनक्स टर्मिनल से अपाचे लॉग का विश्लेषण


दो हफ्ते से भी कम समय पहले, वानाक्राइ रैंसमवेयर हमले ने हजारों कंप्यूटरों से समझौता किया, जिससे बड़ी कंपनियों और व्यक्तियों को काफी नुकसान हुआ। हाल के वर्षों (जैसे शेलशॉक बग) में पाई जाने वाली अन्य व्यापक कमजोरियों के साथ, अपने मिशन-क्रिटिकल सिस्टम के शीर्ष पर बने रहने के महत्व को उजागर करते हैं।

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

जैसा कि मुझे यकीन है कि आप पहले से ही जानते हैं, सिस्टम लॉग पहला स्थान है जहां हमें इस जानकारी की तलाश करनी चाहिए। इस कार्य को आसान बनाने के लिए, इस लेख में हम बताएंगे कि एक उन्नत लॉग फ़ाइल दर्शक lnav कैसे स्थापित करें और उसका उपयोग करें। Lnav के साथ, आप एक साथ कई प्रकार के लॉग देख पाएंगे, हॉटकी का उपयोग करके फ़ाइल के माध्यम से नेविगेट कर सकते हैं, और एक्सेस और त्रुटियों का सारांशित हिस्टोग्राम उत्पन्न कर सकते हैं। तो पढ़ते रहिये!

लिनक्स में lnav को इंस्टॉल और लॉन्च करना

Lnav को स्थापित करने के लिए, अपने वितरण के पैकेज प्रबंधन प्रणाली का उपयोग करें।

# aptitude install lnav          [Debian and derivatives]
# yum install epel-release lnav  [CentOS 7 and similar]

एक बार इंस्टॉलेशन पूरा हो जाने के बाद, lnav को उस डाइरेक्टरी के लिए निरपेक्ष पथ के साथ लॉन्च करें जहाँ जाँच की जाने वाली लॉग स्थित हैं। चूंकि यह आमतौर पर /var/log होगा, चलो करते हैं:

# lnav /var/log/httpd

अपाचे वेब सर्वर के लॉग का निरीक्षण करने के लिए एक CentOS 7 में:

पिछली छवि में दिखाए गए आउटपुट को संक्षेप में देखें:

  • शीर्ष दायां कोना वर्तमान में निरीक्षण की जा रही फ़ाइलों को दिखाता है (access_log-20170519 और access_log)। जैसा कि आप नीचे या ऊपर स्क्रॉल करते हैं, आप ध्यान देंगे कि फ़ाइल नाम बदल सकते हैं जैसे ही आप एक से दूसरे में जाते हैं।
  • 40x HTTP प्रतिसाद (उदाहरण के लिए, नहीं मिला या निषिद्ध) बोल्ड में प्रदर्शित होते हैं, जबकि 20x प्रतिसाद नियमित पाठ में होते हैं।
  • IP पते बोल्ड ग्रीन में दिखाई देते हैं।

यह निश्चित रूप से अच्छा लग रहा है, क्या यह नहीं है? लेकिन अब थोड़ा और गहरा होने दें, और हम देखेंगे कि lnav एक सुंदर रंगीन आउटपुट की तुलना में बहुत अधिक प्रदान करता है।

यदि आप उत्सुक हैं कि त्रुटि लॉग क्यों नहीं दिखाए गए हैं, तो आपको इस लेख में बाद में उत्तर मिलेगा। तो पढ़ते रहिये!

विकल्प और हॉटकी के साथ आउटपुट को संशोधित करना

इससे पहले कि हम आगे बढ़ें, कुछ हॉटकी की सूची दें, जो हमें lnav के आउटपुट के माध्यम से आगे बढ़ने की अनुमति देगा और उपलब्ध विचार आसानी से चुन सकते हैं:

    अगली/पिछली त्रुटि संदेश पर जाने के लिए
  • e या E । अगले/पिछले चेतावनी संदेश पर जाने के लिए
  • w या W
  • b या Backspace पिछले पृष्ठ पर जाने के लिए।
  • अगले पृष्ठ पर जाने के लिए स्थान।
  • वर्तमान दृश्य के शीर्ष/तल पर जाने के लिए
  • <कोड> जी या <कोड> जी

जब लॉग को घुमाया जाता है, तो लॉगोट्रेट कॉन्फ़िगरेशन फ़ाइलों में निर्दिष्ट सेटिंग्स के आधार पर पुरानी फ़ाइलों को संपीड़ित (या नहीं) किया जा सकता है। आउटपुट में संपीड़ित फ़ाइलों को शामिल करने के लिए, निम्नानुसार lnav लॉन्च करें:

# lnav -r /var/log/httpd

यदि आप lnav संचालित करने के तरीके पर करीब से नज़र डालना चाहते हैं, तो आप प्रोग्राम को -d विकल्प के साथ लॉन्च कर सकते हैं, उसके बाद फ़ाइल नाम जहाँ डिबग जानकारी लिखी जाएगी, जैसे:

# lnav /var/log/httpd -d lnav.txt

इस उदाहरण में, डीबग जानकारी जो कि lnav शुरू होने पर उत्पन्न होती है, उसे मौजूदा वर्किंग डायरेक्टरी के अंदर lnav.txt नामक फाइल पर लिखा जाएगा।

उस फ़ाइल की पहली कुछ पंक्तियाँ निम्न छवि में दिखाई गई हैं:

हाइलाइट किया गया पाठ इंगित करता है कि lnav ने डिफ़ॉल्ट प्रारूप फ़ाइल लोड की है, और विशेष रूप से, Apache एक्सेस लॉग को पार्स करने के लिए access_log प्रारूप। इसके अतिरिक्त, lnav प्रत्येक आउटपुट लाइन को पार्स करने की अनुमति देता है ताकि आउटपुट कल्पना और समझने में आसान हो जाए।

इस सुविधा का उपयोग करने के लिए, प्रोग्राम लॉन्च करें और उस पंक्ति को चुनें जिसे आप पार्स करना चाहते हैं। चयनित पंक्ति हमेशा विंडो के शीर्ष पर एक होती है। फिर p दबाएं और आपको निम्नलिखित परिणाम देखना चाहिए:

सामान्य मोड पर लौटने के लिए, फिर से p दबाएं।

अब, यदि आप दिनांक और समय के अनुसार लॉग का सारांश देखना चाहते हैं, तो i दबाएं। उदाहरण के लिए, हाइलाइट किया गया पाठ इंगित करता है कि सोमवार, 10 अप्रैल को रात 10 से 11 बजे के बीच, 14 के साथ 37 HTTP अनुरोध थे, जिसके परिणामस्वरूप त्रुटियां हुईं।

एक बार जब आप ऊपर दिखाए गए हिस्टोग्राम के आधार पर संभावित समस्या की पहचान कर लेते हैं, तो आप पार्सर का उपयोग करके इसे और अधिक विस्तार से जांचने के लिए दृश्य से बाहर निकलने के लिए i दबा सकते हैं जैसा कि पहले बताया गया है। या आप अर्धविराम लिखकर और एक मानक क्वेरी लिखकर अंतर्निहित SQL क्षमताओं का उपयोग भी कर सकते हैं। उदाहरण के लिए, करें:

;.schema

डेटाबेस स्कीमा में उपलब्ध तालिकाओं को देखने के लिए। सही तालिका (हमारे मामले में एक्सेस_लॉग) की पहचान करने के बाद, q दबाएं और फिर 195.154.230.31 से आने वाले अनुरोधों के बारे में सभी उपलब्ध जानकारी वापस करने के लिए निम्नलिखित क्वेरी का उपयोग करें:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

ध्यान दें कि हम log_time से भी परिणाम फ़िल्टर कर सकते हैं। बिंदु यह है कि थोड़ा एसक्यूएल और आकाश में फेंक दें और आप लानव के साथ क्या कर सकते हैं इसकी सीमा है।

अपाचे डिफ़ॉल्ट लॉग प्रारूप

कई लॉग प्रारूप डिफ़ॉल्ट रूप से lnav के साथ लोड होते हैं और इस प्रकार हमारे हस्तक्षेप के बिना पार्स होते हैं। आप आधिकारिक दस्तावेज़ में लॉग प्रारूप अनुभाग में सूची देख सकते हैं।

डिफ़ॉल्ट प्रारूप ~/.lnav/स्वरूपों/डिफ़ॉल्ट/default -json.sample में निर्दिष्ट किए गए हैं, और अन्य को <कोड> .json एक्सटेंशन का उपयोग करके ~/.lnav/स्वरूपों को जोड़ा जा सकता है।

हालाँकि, इन फ़ाइलों को संपादित करने के लिए JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) और PCRE (पर्ल-कम्पेटिबल रेगुलर एक्सप्रेशंस) लाइब्रेरी के साथ एक निश्चित डिग्री की आवश्यकता होती है।

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

जैसा कि पहले उल्लेख किया गया है, आप JSON और PCRE से कम से कम कुछ परिचित होने के बाद अपने स्वयं के प्रारूप बना सकते हैं। यह काम में आ सकता है, उदाहरण के लिए, यदि आपने कस्टम अपाचे लॉग को परिभाषित किया है।

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

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