जब वे आते हैं, तो Apache लॉग अनुरोधों को पूरा करने के बजाय


9

मैं एक विचित्र सर्वर क्रैशिंग समस्या का निदान करने की कोशिश कर रहा हूं ( सर्वर पिंग का जवाब देता है, लेकिन रिबूट तक एसएसएच स्वीकार नहीं करेगा। 0% सीपीयू ) जहां सर्वर को रिबूट करने से सब कुछ सामान्य हो जाता है। मैं अपनी अपाचे एक्सेस लॉग्स (या कुछ अन्य लॉग) को शामिल करना चाहता हूं जिसमें सभी अनुरोध शामिल हैं जो दुर्घटना के रूप में ठीक किए गए थे, लेकिन दुर्भाग्य से अपाचे अनुरोधों को पूरा होने तक लॉग नहीं करते हैं। मतलब कि अगर कोई अनुरोध सर्वर को क्रैश कर रहा है, तो वह अनुरोध कभी खत्म नहीं होता है और इस तरह लॉग में दिखाई नहीं देता है।

क्या कोई तरीका है अपाचे को कॉन्फ़िगर करने के लिए लॉग फ़ाइल बनाने के लिए जिसे अनुरोधों के रूप में लिखा जाता है?


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

जवाबों:


15

मुझे लगता है कि आपको फोरेंसिक लॉगिंग की क्या आवश्यकता है, इस लिंक को देखें: http://httpd.apache.org/docs/current/mod/mod_log_forensic.html

टुकड़ा:

फोरेंसिक लॉग प्रारूप:

प्रत्येक अनुरोध को दो बार लॉग किया जाता है। पहली बार यह आगे संसाधित होने से पहले (हेडर प्राप्त करने के बाद) है। दूसरा लॉग प्रविष्टि अनुरोध प्रसंस्करण के बाद उसी समय लिखा जाता है जहां सामान्य लॉगिंग होती है।

प्रत्येक अनुरोध की पहचान करने के लिए, एक अद्वितीय अनुरोध आईडी असाइन किया गया है। इस फोरेंसिक आईडी को% {फोरेंसिक-आईडी} n प्रारूप स्ट्रिंग का उपयोग करके सामान्य हस्तांतरण लॉग में क्रॉस लॉग किया जा सकता है। यदि आप mod_unique_id का उपयोग कर रहे हैं, तो इसकी उत्पन्न आईडी का उपयोग किया जाएगा।

पहली पंक्ति फोरेंसिक आईडी, अनुरोध लाइन और सभी प्राप्त हेडर को जोड़ती है, जो पाइप वर्णों (|) द्वारा अलग की जाती है। एक नमूना रेखा निम्न की तरह दिखती है (सभी एक पंक्ति पर):

+ yQtJf8CoAB4AAFNXBIEAAAAA | GET /manual/de/images/down.gif HTTP / 1.1 | Host: localhost% 3a8080 | उपयोगकर्ता-एजेंट: Mozilla (5.0 (X11; U; Linux i686; en-US; rv% 3a1.6) Gecko / 20040216 फ़ायरफ़ॉक्स / 0.8 | स्वीकार करें: छवि / पीएनजी, आदि ...

शुरुआत में प्लस वर्ण इंगित करता है कि यह इस अनुरोध की पहली लॉग लाइन है। दूसरी पंक्ति में केवल एक ऋण वर्ण और ID फिर से शामिल है:

-yQtJf8CoAB4AAFNXBIEAAAAA

Check_forensic script अपने तर्क को logfile का नाम लेती है। यह उन +/- आईडी जोड़े की तलाश करता है और यदि अनुरोध पूरा नहीं हुआ है तो शिकायत करता है।


यह वही है जो मैं देख रहा था, लेकिन ऐसा नहीं लगता है कि मैं इस लॉग को समय-समय पर मिटा सकता हूं (आरएम / अनवर / प्लॉट / वापिस 2/forensic.log हर घंटे) या फोरेंसिक लॉगिंग तब तक टूट जाती है जब तक मैं अपाचे को पुनरारंभ नहीं करता। विचार?
बेन दिल्ट्स 20

निश्चित रूप से अगर आप किसी भी अपाचे लॉग rm, कि हो जाएगा। समय-समय पर लॉग (समय या आकार-वार) रोल करने के लिए अपने वातावरण में लॉगरोटेट या जो भी समकक्ष मौजूद है, का उपयोग करने का प्रयास करें। यदि नहीं, इसे हटाने के बजाय, फ़ाइल को स्थानांतरित करने का प्रयास करें, तो /var/log/apache2/forensic.log (हालांकि अनुमतियों की जांच करें) को स्पर्श करें
सैंडरॉयल

2

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

यदि आप सुनिश्चित कर सकते हैं कि कैप्चर चलाने वाली मशीन में अन्य की तुलना में अलग नेटवर्क हार्डवेयर और / या ड्राइवर हैं। एक की कीमत के लिए दो दुर्घटना करने के लिए चूसना होगा। ;-)

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