लॉगिंग
लॉगिंग टूल का चयन डेटा ट्रांसमिशन, फ़िल्टरिंग, रिटेंशन, कैप्चर, और आपका डेटा उत्पन्न करने वाले एप्लिकेशन के साथ एकीकरण की आपकी आवश्यकताओं से जुड़ा है। ऑब्ज़र्वेबिलिटी के लिए Amazon Web Services का उपयोग करते समय (चाहे आप ऑन-प्रिमाइसेस या किसी अन्य क्लाउड एनवायरनमेंट में होस्ट करें), आप विश्लेषण के लिए लॉगिंग डेटा उत्सर्जित करने के लिए CloudWatch agent या Fluentd जैसे अन्य टूल का लाभ उठा सकते हैं।
यहां हम लॉगिंग के लिए CloudWatch agent को लागू करने और AWS कंसोल या API के भीतर CloudWatch Logs के उपयोग के बेस्ट प्रैक्टिसेज़ पर विस्तार करेंगे।
CloudWatch agent का उपयोग CloudWatch को मेट्रिक डेटा की डिलीवरी के लिए भी किया जा सकता है। कार्यान्वयन विवरण के लिए मेट्रिक्स पेज देखें। इसका उपयोग OpenTelemetry या X-Ray क्लाइंट SDK से ट्रेस एकत्र करने और उन्हें AWS X-Ray को भेजने के लिए भी किया जा सकता है।
CloudWatch agent के साथ लॉग्स एकत्र करना
फॉरवर्डिंग
ऑब्ज़र्वेबिलिटी के लिए क्लाउड-फर्स्ट दृष्टिकोण अपनाते समय, एक नियम के रूप में, यदि आपको लॉग प्राप्त करने के लिए किसी मशीन में लॉग इन करना पड़ता है, तो यह एक एंटी-पैटर्न है। आपके वर्कलोड को अपने लॉगिंग डेटा को लगभग रियल टाइम में एक लॉग विश्लेषण सिस्टम में अपनी सीमाओं के बाहर उत्सर्जित करना चाहिए, और उस ट्रांसमिशन और मूल इवेंट के बीच की विलंबता एक संभावित point-in-time जानकारी हानि का प्रतिनिधित्व करती है यदि आपके वर्कलोड पर कोई आपदा आती है।
एक आर्किटेक्ट के रूप में आपको यह निर्धारित करना होगा कि लॉगिंग डेटा के लिए आपका स्वीकार्य नुकसान क्या है और CloudWatch agent के force_flush_interval को इसके अनुसार समायोजित करना होगा।
force_flush_interval agent को एक नियमित अंतराल पर डेटा प्लेन में लॉगिंग डेटा भेजने का निर्देश देता है, जब तक कि बफर साइज तक नहीं पहुंच जाता, उस स्थिति में यह सभी बफर किए गए लॉग तुरंत भेज देगा।
एज डिवाइस की आवश्यकताएं कम-विलंबता, इन-AWS वर्कलोड से बहुत भिन्न हो सकती हैं, और उन्हें बहुत लंबी force_flush_interval सेटिंग की आवश्यकता हो सकती है। उदाहरण के लिए, कम-बैंडविड्थ इंटरनेट कनेक्शन पर एक IoT डिवाइस को केवल हर 15 मिनट में लॉग फ्लश करने की आवश्यकता हो सकती है।
कंटेनराइज्ड या स्टेटलेस वर्कलोड लॉग फ्लश आवश्यकताओं के प्रति विशेष रूप से संवेदनशील हो सकते हैं। एक स्टेटलेस Kubernetes एप्लिकेशन या EC2 फ्लीट पर विचार करें जिसे किसी भी समय स्केल-इन किया जा सकता है। जब ये रिसोर्स अचानक समाप्त हो जाते हैं तो लॉग का नुकसान हो सकता है, भविष्य में उनसे लॉग निकालने का कोई तरीका नहीं बचता। मानक force_flush_interval आमतौर पर इन परिदृश्यों के लिए उपयुक्त है, लेकिन आवश्यकता होने पर इसे कम किया जा सकता है।