Heroku अपने Twelve-Factor App manifest के रूप में सरल इवेंट स्ट्रीम में लॉग वर्णन करता है:डॉकर के साथ माइक्रोस्कोप आर्किटेक्चर में लॉग कैसे शिप करें?
लॉग्स एकत्रित की गई, समय-आदेश दिया गया घटनाओं चल रहे सभी प्रक्रियाओं और समर्थन सेवाओं के उत्पादन धाराओं से एकत्र की धारा है। उनके कच्चे रूप में लॉग आमतौर पर प्रति पंक्ति एक घटना के साथ एक टेक्स्ट प्रारूप होते हैं (हालांकि अपवादों से बैकट्रैक कई लाइनों तक फैल सकता है)। लॉग की कोई निश्चित शुरुआत या अंत नहीं है, लेकिन जब तक ऐप चालू हो रहा है तब तक लगातार प्रवाह करें।
इसके अतिरिक्त, ऐप्स को "पर्यावरण" पर कार्य छोड़कर stdout
पर लॉग लिखना चाहिए।
एक बारह-कारक ऐप कभी भी आउटपुट स्ट्रीम के रूटिंग या स्टोरेज के साथ स्वयं से संबंधित नहीं है। इसे लॉगफाइल को लिखने या प्रबंधित करने का प्रयास नहीं करना चाहिए। इसके बजाए, प्रत्येक चलती प्रक्रिया अपनी घटना स्ट्रीम, unbuffered, stdout लिखता है। स्थानीय विकास के दौरान, डेवलपर इस स्ट्रीम को ऐप के व्यवहार का निरीक्षण करने के लिए अपने टर्मिनल के अग्रभूमि में देखेगा।
स्टेजिंग या उत्पादन तैनाती में, प्रत्येक प्रक्रिया 'स्ट्रीम निष्पादन पर्यावरण द्वारा कैप्चर की जाएगी, ऐप से अन्य सभी धाराओं के साथ मिलकर एकत्र की जाएगी, और देखने और दीर्घकालिक अभिलेखीय के लिए एक या अधिक अंतिम गंतव्यों पर जायेगी। ये अभिलेखीय गंतव्य ऐप द्वारा दृश्यमान या कॉन्फ़िगर करने योग्य नहीं हैं, और इसके बजाय निष्पादन वातावरण द्वारा पूरी तरह से प्रबंधित किए जाते हैं। ओपन-सोर्स लॉग राउटर (जैसे कि लॉगप्लेक्स और फ्लुएंट) इस उद्देश्य के लिए उपलब्ध हैं।
तो विश्वसनीयता, दक्षता और उपयोग में आसानी के मामले में डॉकर पर्यावरण में इसे प्राप्त करने का सबसे अच्छा तरीका क्या है? मुझे लगता है कि निम्न सवालों दिमाग में आते हैं:
- यह डोकर की अपनी लॉग सुविधा (
docker logs
) पर भरोसा करने के लिए सुरक्षित है? - क्या डॉकर को अनचाहे चलाने के लिए सुरक्षित है और लॉगिंग स्ट्रीम के रूप में इसके आउटपुट पर विचार करना सुरक्षित है?
stdout
को सीधे फ़ाइल (डिस्क स्थान) पर रीडायरेक्ट किया जा सकता है?- यदि फ़ाइल का उपयोग करना है, तो यह डॉकर छवि या बाध्य मात्रा (
docker run --volume=[]
) के अंदर होना चाहिए? - क्या तर्कांकन आवश्यक है?
- क्या यह सीधे एक लॉगशिपर (और कौन सा लॉगशिपर) में stdout को रीडायरेक्ट करना सुरक्षित है?
- क्या नामित पाइप (उर्फ फीफो) एक विकल्प है?
- (अधिक सवाल?)
ध्यान दें कि यह तकनीकी भी है: किसी अन्य कंटेनर से syslog डिमन का उपयोग करना: http: //jpetazzo.github।आईओ/2014/08/24/syslog-docker/ –
कॉन्फ़िगर लॉगिंग ड्राइवर लिंक टूटा हुआ है। होना चाहिए: https://docs.docker.com/engine/admin/logging/overview/ – HellishHeat