2016-05-12 5 views
6

मैं ग्रेजलॉग को केंद्रीय लॉगिंग सर्वर के रूप में उपयोग कर रहा हूं और मैं ग्रे लॉगॉग को लॉग संदेश भेजने के लिए एक gelf log4j2-appender का उपयोग कर रहा हूं। यह ठीक काम करता है। अब मैंने अपने आवेदन की एक डॉकर छवि बनाई है और मैं अपने सॉफ़्टवेयर को डॉकर कंटेनर के रूप में चलाने में सक्षम हूं।एक जेवीएम अनुप्रयोग से ग्रेग्लॉग पर लॉग भेजने का सबसे अच्छा अभ्यास क्या है जो डॉकर कंटेनर के भीतर चलता है?

डॉकर का उपयोग करके मैं डॉकर (डॉकर लॉग {कंटेनर आईडी}) में एप्लिकेशन लॉग प्राप्त करने के लिए stdout (console-appender) पर भी लॉग ऑन करता हूं।

अब मैं खुद से गीला पूछता हूं कि मैं gelf log4j2-appender पर छोड़ सकता हूं और इसके बजाय स्वयं के लिए एक डॉकर लॉग-ड्राइवर/प्लगइन का उपयोग कर सकता हूं। (https://docs.docker.com/engine/admin/logging/overview/ देखें)

यहां सबसे अच्छा अभ्यास क्या है? मुझे लगता है कि डॉकर लॉग प्लगइन का उपयोग करके पूरे स्ट्रिंग संदेश को ग्रेग्लॉग और ग्रेग्लॉग को उस स्ट्रिंग से मेटा जानकारी निकालने की आवश्यकता होगी (इसलिए मुझे लॉग संदेश के भीतर यह मेटा डेटा प्रदान करना होगा, उदाहरण के लिए log_level)। इससे ग्रेग्लॉग पक्ष पर अधिक संसाधन खपत हो सकती है और ग्रेलॉग में केवल त्रुटि संदेशों को भेजने के लिए डॉकर को कॉन्फ़िगर करना भी संभव नहीं है। इससे अधिक नेटवर्क यातायात होता है। Log4j2 gelf-appender का उपयोग करके मैं मुख्य लॉग संदेश में शामिल किए बिना लॉग संदेश के अतिरिक्त कुछ मेटा डेटा प्रदान करने में सक्षम हूं और ग्रेग्लॉग पक्ष पर एक निष्कर्षण आवश्यक नहीं होगा। यह भी कॉन्फ़िगर करना संभव है कि कौन से संदेश log_level द्वारा graylog पर भेजे जाने चाहिए। या मैं गलत हूँ? ग्रेजलॉग पर लॉग भेजने के हर तरीके का सबसे अच्छा समाधान क्या है या पेशेवर और विपक्ष क्या हैं?

उत्तर

4

मैं लॉगिंग फ्रेमवर्क के लिए मौजूदा जीईएलएफ एपेंडर का उपयोग करने की सलाह दूंगा जो आप उपयोग कर रहे हैं (ई। जी logstash-gelf) स्टडआउट में सब कुछ लॉग इन करने और डॉकर के जीईएलएफ लॉगिंग ड्राइवर का उपयोग करने के बजाय।

एक मूल जावा लॉगिंग फ्रेमवर्क के साथ एक उचित जीईएलएफ एपेंडर का उपयोग करने से आप MDC जैसी उन्नत सुविधाओं का उपयोग कर सकते हैं ताकि आप मूल्यवान संरचित जानकारी के साथ लॉग संदेश को समृद्ध कर सकें, बिना सर्वर सर्वर पर उन्हें प्राप्त करने के बाद उन संदेशों को फिर से पार्स किए। डॉकर जीईएलएफ लॉगिंग ड्राइवर के साथ, आपको केवल लॉग संदेश लाइन-प्रति-रेखा प्राप्त होगी, विशेष रूप से जावा अनुप्रयोगों के साथ निपटने के लिए सिरदर्द हो सकता है (मल्टीलाइन स्टैक निशान सोचें)।

अधिकांश लॉगिंग फ्रेमवर्क स्थिर फ़ील्ड का समर्थन करते हैं, ताकि आप उदाहरण के लिए अपने डॉकर कंटेनर की आईडी इंजेक्ट कर सकें।

संबंधित मुद्दे

 संबंधित मुद्दे