2015-08-31 5 views
10

मैं जावा ऐप से एलस्टिक खोज में लॉग भेजना चाहता हूं, और पारंपरिक दृष्टिकोण ऐप चलाने वाले सर्वर पर लॉगस्टैश सेट करना प्रतीत होता है, और लॉगस्टैश लॉग को पार्स करता है फाइलें (रेगेक्स ...!) के साथ और उन्हें लोचदार खोज में लोड करें।लॉग इन करने के लिए जावा ऐप से ईएलके तक लॉगिंग

क्या ऐसा कोई कारण है कि यह वांछित स्वरूप में सीधे लॉग इन कलेक्टर में लॉग इन करने के लिए लॉग 4 जे (या लॉगबैक) सेट करने के बजाय किया गया है जिसे बाद में एलैस्टिकशर्च को असीमित रूप से भेज दिया जा सकता है? ऐसा लगता है कि मल्टीलाइन स्टैक निशान (और लॉग पार्सिंग पर सीपीयू चक्र जलाते हैं) के साथ निपटने के लिए मुझे ग्रोक फिल्टर के साथ परेशान होना पड़ता है जब ऐप स्वयं इसे वांछित प्रारूप को पहले स्थान पर लॉग कर सकता है?

एक डॉकर कंटेनर में चल रहे ऐप्स के लिए, एक स्पर्शिक रूप से संबंधित नोट पर, केवल एक प्रक्रिया चलाने की आवश्यकता के कारण, सीधे लोचदार खोज पर लॉग इन करने का सबसे अच्छा अभ्यास है?

+0

भले ही आप एक अच्छा जेसन दस्तावेज़ सीधे लोचदार खोज के लिए भेज दें, फिर भी व्यवसाय की खुफिया जानकारी हो सकती है जिसे रास्ते में लागू किया जाना चाहिए। लॉगस्टैश के लिए यह एक अच्छा उपयोग है। इसके अलावा, ज्यादातर लोग एक विषम दुनिया में नहीं रहते हैं, इसलिए एक एग्रीगेटर का उपयोग शक्तिशाली हो सकता है। निश्चित रूप से tmtowtdi। –

+0

मुझे लगता है कि यह मुख्य रूप से स्केलेबिलिटी कारणों के कारण है। यदि एप्लिकेशन Elasticsearch पर लॉग को दबा रहा है, तो ELasticsearch से धीमी गति के कारण बैक प्रेशर एप्लिकेशन प्रदर्शन को प्रभावित कर सकता है और यदि एप्लिकेशन मुख्य मेमोरी में बहुत सारे लॉग कतार कर रहा है, तो इसका निश्चित रूप से प्रतिकूल प्रभाव पड़ेगा। –

उत्तर

2

मुझे लगता है कि आमतौर पर लॉग 4j/लॉगबैक/जो भी एपेंडर से एलैस्टिकसेर्च पर लॉग इन करने की सलाह दी जाती है, लेकिन मैं सहमत हूं कि "सामान्य" मानव-पठनीय जावा लॉग को पार्स करने के लिए लॉगस्टैश फ़िल्टर लिखना भी एक बुरा विचार है। मैं https://github.com/logstash/log4j-jsonevent-layout का उपयोग करता हूं, जहां भी मैं लॉग 4j के नियमित फ़ाइल एपेंडर जेएसओएन लॉग उत्पन्न कर सकता हूं जिन्हें लॉगस्टैश द्वारा आगे की पार्सिंग की आवश्यकता नहीं होती है।

4

तुम सच में नीचे उस मार्ग से जाने के लिए चाहते हैं, तो विचार एक Elasticsearch appender (या this one या this other one) जो अपने लॉग अपने ES क्लस्टर के लिए सीधे जहाज होगा की तरह कुछ का उपयोग करने के लिए होगा।

हालांकि, मैं @ विनीथ मोहन द्वारा उल्लिखित कारणों के लिए इसके खिलाफ सलाह दूंगा। आपको खुद को कुछ प्रश्न पूछने की भी आवश्यकता होगी, लेकिन मुख्य रूप से क्या होगा यदि आपका ईएस क्लस्टर किसी भी कारण से हो (ओओएम, नेटवर्क डाउन, ईएस अपग्रेड इत्यादि)?

एसिंक्रोनिसिटी मौजूद होने के कई कारण हैं, जिनमें से एक आपके आर्किटेक्चर की मजबूती है और अधिकांश समय लॉग पार्सिंग पर कुछ और CPU चक्रों को जलाने से कहीं अधिक महत्वपूर्ण है।

यह भी ध्यान दें कि आधिकारिक ईएस चर्चा मंच में इस विषय के बारे में ongoing discussion है।

+0

संरचित डेटा से अस्पष्ट पाठ लॉग उत्सर्जित करना और इसे फिर से पार्स करना अनावश्यक जटिलता है। यह सीपीयू चक्रों के बारे में नहीं है, यह डेटा की मजबूती के बारे में है। जब वे मूल रूप से संरचित होते हैं तो सावधानीपूर्वक स्टैक निशान निकालने की शर्म की बात है ... और मुझे समझ में नहीं आता कि आप ईएस क्लस्टर के बारे में क्यों बात कर रहे हैं (विशेष रूप से यदि आप प्रतिकृति के साथ अनावश्यकता को कॉन्फ़िगर करते हैं)।लॉगस्टैश/फ्ल्यूम या यहां तक ​​कि कफका/रेडिस ईएस की तुलना में मृत होने के लिए शायद बहुत कुछ है ... – gavenkoa

+0

@gavenkoa मुझे आपका संदर्भ पता नहीं है और आपका लाभ भिन्न हो सकता है। बेशक, एक ही विकास या स्टेजिंग नोड पर, यह समझ में नहीं आता है, लेकिन अनुभव से पता चला है कि इस एसिंक्रोनस पाइपलाइन के कारण कई कारणों से असली उत्पादन सेटिंग्स में अधिक मजबूती प्रदान की जाती है। अपने विस्तृत उपयोग मामले (ओं) के साथ एक प्रश्न बनाने के लिए स्वतंत्र महसूस करें और हम इसके बारे में बात कर सकते हैं। – Val

0

यदि आपको त्वरित समाधान की आवश्यकता है तो मैंने इस एपेंडर को Log4J2 Elastic REST Appender लिखा है यदि आप इसका उपयोग करना चाहते हैं। इसमें एलैस्टिक को भेजने से पहले समय और/या घटनाओं की संख्या के आधार पर लॉग इवेंट बफर करने की क्षमता है (_bulk एपीआई का उपयोग करके ताकि यह सब एक ही बार में भेज सके)। इसे मेवेन सेंट्रल में प्रकाशित किया गया है, इसलिए यह काफी सीधे है।

जैसा कि अन्य लोगों ने पहले से ही यह करने का सबसे अच्छा तरीका बताया है, इसे फ़ाइल में सहेजना होगा, और फिर इसे अलग से ईएस पर भेज दें। हालांकि मुझे लगता है कि यदि आपके पास समय/संसाधन इष्टतम तरीके से लागू होने तक कुछ तेज़ी से चलने की आवश्यकता है तो मूल्य है।

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