OpenVPN सर्वर को अपना लॉग कहाँ लिखना चाहिए, और क्यों
log, log-append और syslog अलग-अलग हैं, और सेवा प्रबंधक अपनी अलग प्रति रखता है। एक आधिकारिक धारा चुनें, जीवनचक्र को पठनीय रखें और प्रतिधारण तय करें।
लॉग डिज़ाइन तीन सवालों का जवाब है: किस प्रक्रिया ने रिकॉर्ड बनाया, वह रिकॉर्ड कहाँ पहुँचता है और कितने समय तक जीवित रहता है। OpenVPN फ़ाइल में लिख सकता है, संदेशों को सिस्टम लॉगर को सौंप सकता है, या उन्हें उसी पर छोड़ सकता है जो सेवा प्रबंधक पकड़ता है, और ये एक ही धारा की तीन प्रतियाँ नहीं हैं। हर चुनाव बदलता है कि रोटेशन का स्वामी कौन है, कौन उपयोगकर्ता परिणाम पढ़ सकता है और शुरुआत के दौरान क्या होता है। घटना से पहले जवाब तय करें, क्योंकि बाद में आपको वही विरासत में मिलता है जो कॉन्फ़िगर किया गया है।
डेमॉन निर्देश के साथ वास्तव में क्या करता है
निर्देश अमूर्त नहीं हैं; हर एक तय करता है कि प्रक्रिया अपने संदेश कहाँ लिखती है। log /path उस फ़ाइल को खोलता है, log-append /path उसे जोड़ने के लिए खोलता है, और syslog संदेशों को अपने सॉकेट से स्थानीय सिस्टम लॉगर को सौंपता है। इनमें से कोई न हो तो आउटपुट मानक आउटपुट पर जाता है और सेवा प्रबंधक तय करता है कि आगे क्या हो। यह निष्कर्ष निकालने से पहले कि डेमॉन आपका कॉन्फ़िगरेशन नज़रअंदाज़ करता है, प्रभावी यूनिट और प्रोफ़ाइल साथ पढ़ें।
पिछला मामला पैकेज इंस्टॉल में आम है और यह बताता है कि दो प्रशासक लॉग की जगह पर सहमत क्यों नहीं हैं। एक यूनिट का जर्नल पढ़ता है, दूसरा ऐसी फ़ाइल जो डेमॉन ने कभी नहीं लिखी।
चल रहे कॉन्फ़िगरेशन की जाँच करें, डिस्क की फ़ाइल की नहीं। drop-in यूनिट ओवरराइड या पर्यावरण फ़ाइल प्रभावी निर्देश बदल सकती है, बिना उस प्रोफ़ाइल को छुए जिसे आप पढ़ रहे हैं।
log काटता है, log-append नहीं
log निर्देश लागू होते ही मौजूदा फ़ाइल काट देता है, इसलिए पुनः आरंभ उससे पहले के साक्ष्य मिटा देता है। log-append जो है उसे रखता है और जोड़ता है। कोई भी विकल्प कुछ घुमाता नहीं और कोई भी बाद में स्वयं फ़ाइल दोबारा नहीं खोलता, इसलिए रोटेशन को सहयोग चाहिए।
अगर रोटेशन फ़ाइल का नाम बदल दे जबकि डेमॉन पुराने डिस्क्रिप्टर में लिखता रहे, नई फ़ाइल खाली रहती है और डिस्क उपयोग बदले नाम वाली फ़ाइल में बढ़ता रहता है। प्रक्रिया को दोबारा खोलने का संकेत भेजें, या कॉपी-और-काट रणनीति से रोटेशन करें और कॉपी विंडो स्वीकारें।
निर्देशिका, स्वामित्व और अनुमतियाँ डिज़ाइन का हिस्सा हैं। डेमॉन शुरुआत के बाद गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चल सकता है, और इंस्टॉल के समय root द्वारा बनाई गई निर्देशिका तब लिखने योग्य न हो। इसे पैकेजिंग या परिनियोजन प्रक्रिया से तैयार करें, घटना के दौरान अनुमतियाँ ठीक करने के बजाय।
सेवा प्रबंधक दूसरी प्रति रखता है
systemd डिफ़ॉल्ट रूप से मानक आउटपुट और मानक त्रुटि पकड़ता है, इसलिए स्पष्ट रीडायरेक्शन के बिना भी यूनिट का लॉग पहले से होता है। फ़ाइल निर्देश जोड़ने से दो धाराएँ मिलती हैं जिनका प्रतिधारण, पाठक और टाइमस्टैम्प अलग हैं।
यह अपने आप गलत नहीं है, पर इसे निर्णय होना चाहिए। शुरुआती रिकॉर्ड जर्नल में रखें, क्योंकि कॉन्फ़िगर की गई फ़ाइल के होने से पहले की विफलताएँ कहीं और नहीं दिखतीं। फिर फ़ाइल को स्थिर-अवस्था घटनाओं के लिए आधिकारिक बनाएँ और यह runbook में लिखें। दो आधिकारिक धाराओं का अर्थ है हर सवाल के दो जवाब।
चुनाव की पुष्टि ऐसे परीक्षण से करें जो जानबूझकर विफल हो। डेमॉन को अपठनीय प्रमाणपत्र के साथ शुरू करें और देखें कौन सी धारा त्रुटि दर्ज करती है।
विस्तार उपयोगी विवरण के बराबर नहीं है
ऊँचा verb स्तर अधिक पंक्तियाँ जोड़ता है, और एक बिंदु के बाद ऐसी पंक्तियाँ जिन्हें कोई नहीं पढ़ता। स्तर 3 अधिकांश परिनियोजनों के लिए उचित स्थिर अवस्था है, जबकि स्तर 4 और ऊपर ज्ञात प्रश्न वाली सीमित जाँच के लिए उपयुक्त है। पुनरावृत्ति दमन शोर घटाता है, पर यह नहीं छिपाना चाहिए कि कोई घटना कितनी बार दोहराई जाती है। वह स्तर तय करें जिसे आप निभा सकें, और उसे केवल अंत वाली नामित जाँच के लिए बढ़ाएँ।
रिकॉर्ड में इंस्टेंस की पहचान और टाइमस्टैम्प रखें। जब फ़ाइल महीनों से बढ़ रही हो और इंस्टेंस का नाम गायब हो, तो पुनः कनेक्शन बिल्कुल पहले कनेक्शन जैसा दिखता है।
ध्यान दें कि उस फ़ाइल में और क्या गिरता है। रीडायरेक्ट किया गया आउटपुट बुलाए गए स्क्रिप्ट का पाठ शामिल कर सकता है, और अपना पर्यावरण छापने वाला सहायक प्रोग्राम क्रेडेंशियल और कुंजी पथ पठनीय लॉग में डाल देता है। लॉग तक पहुँच को सुरक्षा निर्णय मानें, भले ही डेमॉन स्वयं कुछ संवेदनशील न छापे।
रोटेशन, प्रतिधारण और वे संकेत जो दोबारा लोड करते हैं
प्रतिधारण का निर्णय डिस्क के स्वामी के साथ करें और इसे वॉल्यूम के आपकी जगह निर्णय लेने से पहले तय करें। पुनः लोड संकेत लॉग रखरखाव का आदेश नहीं है: गलत संकेत भेजने से टनल फिर शुरू होता है और हर उपयोगकर्ता कट जाता है। दोबारा खोलने की प्रक्रिया रोटेशन नियम के पास लिखें ताकि दोनों अलग न हों।
परिणाम ऐसी सेवा होनी चाहिए जिसे ऑपरेटर वर्णन कर सके: एक आधिकारिक धारा, हर घटना जीवनचक्र में रखी हुई, और ऐसा रिकॉर्ड जो होस्ट पर हर रहस्य रखने वाली फ़ाइल इकट्ठा किए बिना मिल जाए। यही विवरण डिज़ाइन का स्वीकृति परीक्षण है, और अगली घटना से पहले इसे जाँचना सस्ता है।