OpenVPN के लॉग किसके हैं: डेमन, rsyslog या logrotate?
एक लेखक, एक घुमाने वाला, एक प्रतिधारण नीति। पहले रास्ता चुनें, संकीर्ण फ़िल्टर के लिए डेमन को नाम दें, और एक ही घुमाई गई फ़ाइल से दोबारा खुलना सिद्ध करें।
लॉग रोटेशन अनुमानित ढंग से टूटता है: तीन घटकों में से हर एक मानता है कि फ़ाइल उसकी है, और परिणाम वह घुमाया गया लॉग होता है जो बढ़ता रहता है जबकि नई फ़ाइल खाली रहती है। डेमन एक डिस्क्रिप्टर रखता है, logrotate रास्ते का नाम बदलता है, और rsyslog बिल्कुल कहीं और लिखता है। ढेर में एक और नियम जोड़ने से पहले एक लेखक और एक घुमाने वाला चुनें। नीचे दी गई चेकलिस्ट उसी क्रम में चलती है, क्योंकि हर आगे का चरण उस पर निर्भर करता है।
तय करें कि फ़ाइल कौन लिखता है
दो डिज़ाइन वैध हैं। पहले में, VPN प्रक्रिया अपने ही log या log-append विकल्प के ज़रिए स्वयं एक फ़ाइल लिखती है। दूसरे में, वह रिकॉर्ड सिस्टम लॉगर को भेजती है और rsyslog या journald तय करता है कि वे कहाँ उतरें।
ये विकल्प हैं, परतें नहीं। जो होस्ट दोनों चालू करता है, उसके पास अंत में दो फ़ाइलें होती हैं जो मेल नहीं खातीं, और जो आप पढ़ रहे हैं वह अक्सर पुरानी होती है। रास्ता सोच-समझकर चुनें, फिर दूसरे लेखक को हटा दें।
कुछ भी बदलने से पहले सेवा का प्रभावी कॉन्फ़िगरेशन पढ़ें, उन drop-in फ़ाइलों सहित जो unit फ़ाइल को ओवरराइड कर सकती हैं। जिस प्रोफ़ाइल को आपने संपादित किया उसमें मौजूद कोई निर्देश इस बात का प्रमाण नहीं है कि वही वह निर्देश है जिसे चल रही प्रक्रिया ने लोड किया। unit की तुलना प्रक्रिया के आर्गुमेंट से करें, और फिर उन फ़ाइलों से जो उसने वास्तव में खोलीं।
डेमन को नाम दें ताकि फ़िल्टर संकीर्ण रहे
syslog रास्ते पर डेमन को अलग पहचान दें और उसी पर फ़िल्टर करें। जो नियम इस VPN इंस्टेंस के प्रोग्राम नाम से मेल खाता है वह उसके रिकॉर्ड को उस साझा फ़ाइल से बाहर रखता है जिसकी प्रतिधारण नीति किसी और की है।
संकीर्ण नियम अगले सवाल को भी उत्तरयोग्य बनाते हैं: यह पंक्ति किस सेवा ने बनाई? जो फ़िल्टर VPN शब्द वाली हर चीज़ से मेल खाता है वह खुशी-खुशी दूसरी सुरंग का ट्रैफ़िक भी जमा कर लेगा और दोनों को धुँधला कर देगा। उस सटीक पहचानकर्ता से मेल कराएँ जो unit लॉगर को देता है।
क्रिया के बाद नियम बंद करें ताकि रिकॉर्ड डिफ़ॉल्ट गंतव्य में भी न गिरें। दो फ़ाइलों में दोहराई गई पंक्तियाँ लॉगिंग बग जैसी दिखती हैं और वास्तव में एक गायब ठहराव हैं। वही एक चूक प्रतिधारण नीति की डिस्क लागत भी दोगुनी कर देती है।
डिस्क्रिप्टर खोए बिना घुमाएँ
जब डेमन फ़ाइल लिखता है, logrotate रास्ते का नाम बदलता है लेकिन प्रक्रिया अपना खुला डिस्क्रिप्टर रखती है। नए रिकॉर्ड उस नाम-बदली फ़ाइल में चलते रहते हैं जब तक कोई चीज़ प्रक्रिया को मूल रास्ता दोबारा खोलने पर मजबूर न करे; इसीलिए रोटेशन काम करता दिख सकता है जबकि नई फ़ाइल खाली रहती है।
समाधान वह postrotate क्रिया है जो सेवा के प्रलेखित पुनःलोड या पुनःआरंभ व्यवहार को चालू करती है। लॉगर को सिग्नल भेजना बिल्कुल अलग क्रिया है और अपनी फ़ाइल रखने वाले डेमन के लिए कुछ नहीं करती।
जहाँ दोबारा खोलना असंभव हो, वहाँ copytruncate विकल्प है: फ़ाइल की प्रतिलिपि बनाएँ, फिर उसे वहीं काट दें। यह डिस्क्रिप्टर को वैध रखता है पर प्रतिलिपि और कटाई के बीच लिखा सब कुछ खो देता है, इसलिए यह समाधान नहीं बल्कि सौदा है। भार के समय वह अंतराल ठीक उसी विफलता को निगल सकता है जिसे आप पकड़ना चाहते हैं।
हर फ़ाइल के लिए दोनों में से एक चुनें और चयन लिखकर रखें, क्योंकि उन्हें एक ही रास्ते पर मिलाने से ऐसे अंतराल बनते हैं जिन्हें बाद में जोड़ना बहुत कठिन होता है। जिस पाठक को एक ही निर्देशिका में दोनों पैटर्न मिलें वह नहीं बता सकता कि कौन प्रामाणिक है।
घटना की खिड़की से प्रतिधारण तय करें
प्रतिधारण, संपीड़न और अधिकतम आकार इस बात से निकलने चाहिए कि आप वास्तव में कितना पीछे जाँच करते हैं। संपीड़न और आकार सीमा के साथ सात दिन की खिड़की कई परिनियोजनों के लिए उचित शुरुआत है; किसी ट्यूटोरियल से नकल की गई संख्या नहीं।
नीति को एक ही जगह रखें। अगर logrotate फ़ाइल घुमाता है और rsyslog भी उसे घुमाता है, तो दूसरा रोटेशन जीतता है और पहले की नामकरण योजना बिखराव के रूप में बची रहती है। मालिक चुनें, दूसरा रोटेशन बंद करें, और वह निर्णय नीति के पास लिख लें।
rsyslog का दस्तावेज़ उसके रूटिंग और क्रिया मॉडल को कवर करता है, जबकि OpenVPN सेवा का दस्तावेज़ डेमन के अपने लॉगिंग विकल्पों के लिए प्रामाणिक रहता है। इनमें से कोई भी आपके बदले आपकी प्रतिधारण नीति तय नहीं करता।
एक रोटेशन और एक नई घटना जाँचें
एक ही रोटेशन को बाध्य करें और फिर एक नई घटना बनाएँ, जैसे विफल प्रमाणीकरण। पुष्टि करें कि नया रिकॉर्ड नई फ़ाइल में दिखता है और पुरानी फ़ाइल बढ़ना बंद हो गई है।
नई फ़ाइल की अनुमतियाँ भी देखें, क्योंकि किसी दूसरे मालिक के साथ उसे फिर से बनाने वाला रोटेशन अगली बार लिखते समय लेखक को तोड़ देता है और ऐसा अंतराल बनाता है जो क्रैश जैसा लगता है। जाने से पहले मालिक और मोड की तुलना सेवा खाते से करें। फिर पुष्टि करें कि संपीड़ित संग्रह पढ़ा जा सकता है, क्योंकि जिस संग्रह को कोई खोल न सके वह प्रतिधारण नहीं है। पुरानी फ़ाइल के सबसे नए रिकॉर्ड को जल्दी पढ़ना संपीड़न और अनुमतियाँ दोनों सिद्ध करता है।
हर चरण का मालिक दर्ज करके समाप्त करें: कौन-सा घटक लिखता है, कौन घुमाता है, और प्रतिधारण नीति कहाँ रहती है। वही रिकॉर्ड अगली लॉगिंग घटना को यह अनुमान लगाने में बिताई गई पूरी दोपहर के बदले पाँच मिनट की जाँच में बदल देता है कि किस परत ने पंक्ति गिराई।