जैसे-जैसे आपका IT बुनियादी ढांचा आकार में बढ़ता है और जटिल हो जाता है, आपको यह सुनिश्चित करने के लिए अधिक ध्यान देने के लिए मजबूर किया जा सकता है कि सब कुछ ठीक से प्रबंधित है।
क्लाउड के उदय के बाद से, यह विशेष रूप से अधिक प्रासंगिक हो गया है, यह देखते हुए कि हमारे पास अब कई अलग-अलग स्थानों पर फैली तकनीकी जानकारी की प्रचुरता है।
लेकिन व्यापक लॉग विश्लेषण करने में सक्षम होना थकाऊ, समय लेने वाला और दर्दनाक रूप से उबाऊ हो सकता है।
इस बोझ से खुद को मुक्त करने का एक सरल लेकिन प्रभावी तरीका उन सॉफ्टवेयर या एप्लिकेशन का उपयोग करना है जो लॉग की निगरानी को आसान बनाने के लिए डिज़ाइन किए गए हैं… और ठीक यही Alexis Gardin ने अपने एप्लिकेशन, Logub में किया है।
कई अन्य SaaS समाधानों के विपरीत, Logub इन कार्यों को ऑन-प्रिमाइज और ओपन सोर्स पर कर सकता है। नीचे दिए गए चरणों का पालन करके, आप एक ऐसा एप्लिकेशन बनाने में सक्षम होंगे जो आपके लिए एप्लिकेशन लॉग को एकत्र, एक्सप्लोर और विश्लेषण करेगा।
इस एप्लिकेशन के केंद्र में RediSearch की क्षमता पर भरोसा था जो विभिन्न स्थानों पर लॉग को बेजोड़ दक्षता के साथ एक्सप्लोर और विश्लेषण कर सकता है। आइए देखें कि Alexis इस एप्लिकेशन को कैसे एक साथ लाया।
लेकिन इससे पहले कि हम गोता लगाएं, हमें आपको बता देना चाहिए कि हमारे पास Redis Launchpad पर आपके लिए जांचने के लिए अनुप्रयोगों की एक रोमांचक श्रृंखला भी है।
- आप क्या बनाएंगे?
- आपको क्या चाहिए?
- आर्किटेक्चर
- शुरुआत करना
- डेटा कैसे संग्रहीत किया जाता है
- डेटा कैसे क्वेरी किया जाता है
- खोज बार कैसे काम करता है?
- Logub को अपने प्रोजेक्ट में कैसे एकीकृत करें?
- निष्कर्ष
1. आप क्या बनाएंगे?
आप Redis द्वारा संचालित एक विशेष ऐप बनाएंगे जो लॉग एप्लिकेशन को एकत्र, विश्लेषण और एक्सप्लोर करता है। नीचे दिए गए चरणों में, हम इस एप्लिकेशन को बनाने के लिए A-Z से क्या आवश्यक है, आवश्यक घटकों के साथ जाएंगे।
भले ही आप Redis में नए हों, हम आपको ठीक से दिखाएंगे कि इस शक्तिशाली डेटाबेस को कैसे समझें। शुरू करने के लिए तैयार हैं?
ठीक है, चलिए सीधे इसमें गोता लगाते हैं।
2. आपको क्या चाहिए?
- Fluentd: लॉग प्रोसेसिंग के लिए क्रॉस-प्लेटफॉर्म ओपन-सोर्स डेटा संग्रह सॉफ्टवेयर के रूप में उपयोग किया जाता है।
- Redis आउटपुट प्लगइन Fluent के लिए: fluent-plugin-redis Redis पर आउटपुट करने के लिए एक फ्लुएंट प्लगइन है। RediSearch:
- Docker: डेवलपर्स के लिए एप्लिकेशन को कंटेनरों में पैकेज करने के लिए एक प्लेटफॉर्म के रूप में उपयोग किया जाता है।
- Docker Compose: मल्टी-कंटेनर Docker एप्लिकेशन को परिभाषित करने और चलाने के लिए उपयोग किया जाता है।
3. आर्किटेक्चर
- Fluentd विभिन्न गंतव्यों पर प्रत्येक एप्लिकेशन से सभी लॉग एकत्र करता है
- Fluentd फिर प्रत्येक लॉग को फॉर्मेट करता है और उन्हें स्टोरेज के लिए Redis पर भेजता है
- डेटा को Fluentd Redis प्लगइन का उपयोग करके संग्रहीत किया जाता है – Redis पर आउटपुट करने के लिए एक फ्लुएंट प्लगइन।
- Logub बैकएंड RediSearch को उपयोगकर्ता द्वारा परिभाषित फ़ील्ड को इंडेक्स करके पूर्ण-पाठ खोज करने की अनुमति देता है।
4. शुरुआत करना
डेमो में, एक DEMO ऐप Logub में लॉग प्रकाशित करेगा। आप इस DEMO ऐप के साथ बातचीत करके अपने लॉग उत्पन्न कर सकेंगे। फिर आप उन्हें Logub में अनुरोध कर सकेंगे
पूर्वापेक्षाएँ
- Docker
- Docker Compose
सबसे पहले, सुनिश्चित करें कि दिए गए पोर्ट आपके सिस्टम पर खुले हैं: 8080, 8081, 3000 और 6379।
चरण 1: रिपॉजिटरी क्लोन करें
git clone https://github.com/redis-developer/logub
चरण 2. DEMO ऐप लाएं
- /demo फ़ोल्डर पर जाएं (cd ./demo)
- दिए गए कमांड के साथ docker-compose लॉन्च करें:
Logub डेमो लॉन्च करें
लॉग एक्सप्लोर करने के लिए localhost:3000 पर जाएं।
आपको लॉग आते देखने में लगभग एक मिनट लग सकता है। आप पेज पर दाईं ओर साइडबार के साथ उन्हें फ़िल्टर करके लॉग देख सकते हैं। वैकल्पिक रूप से, आप शीर्ष पर खोज बार के माध्यम से फ़िल्टर या पूर्ण-पाठ क्वेरी द्वारा उन्हें खोज सकते हैं।
जब आप एक लॉग पर क्लिक करते हैं, तो विवरण प्रदर्शित होंगे और आपके पास व्यावसायिक गुणों को इंडेक्स करने का विकल्प होगा। इन व्यावसायिक गुणों को बाद में फिल्टर के रूप में उपयोग किया जा सकता है।
अगला, localhost:3000/demo पर जाएं प्लेग्राउंड तक पहुंचने और अपने कस्टम लॉग जोड़ने के लिए। यह डेमो पेज आपको अनुमति देगा:
- डेमो नकली ऐप में नकली उपयोगकर्ता बनाएं और उन्हें लॉग में देखें।
- सिस्टम में अपने लॉग प्रकाशित करें।
यदि आप मुख्य पृष्ठ पर लौटते हैं, तो आप उन लॉग को खोजने का प्रयास कर सकते हैं जिन्हें आपने अभी उत्पन्न किया है।
नोट: एक कंटेनर में लॉग के उत्पादन और Logub में इसके प्रदर्शन के बीच लगभग 1 मिनट की विलंबता है। यह विलंबता लॉग को एकत्र करने, फॉर्मेट करने, और डेटाबेस में अंतर्ग्रहण करने की प्रक्रिया के कारण होती है।
5. यह कैसे काम करता है?
डेटा कैसे संग्रहीत किया जाता है
डेटा को Fluentd Redis प्लगइन का उपयोग करके संग्रहीत किया जाता है। यह प्रत्येक लॉग को HSET के साथ संग्रहीत करता है। उदाहरण के लिए: HSET level DEBUG message "Hello World" thread main
डेटा कैसे क्वेरी किया जाता है
यह वह ऑब्जेक्ट है जिसका उपयोग आप लॉग को मैनिपुलेट करने और उन्हें Redis से पुनर्प्राप्त करने के लिए करेंगे। इस कार्रवाई को करने से Logub UI लॉग प्रदर्शित करने में सक्षम होगा। अपने लॉग में जटिल क्वेरी करने के लिए, आप RediSearch का उपयोग कर सकते हैं।
चूंकि आप RediSearch स्कीमा को डायनामिक रूप से बदल सकते हैं, आप 'List' डेटा संरचना का उपयोग करके ट्रैक कर सकते हैं कि कौन सी स्कीमा इंडेक्स की गई है।
उपरोक्त कमांड आपको उपयोगकर्ता इनपुट के आधार पर एक सादे पाठ RediSearch क्वेरी बनाने की अनुमति देगा। RediSearch लाइब्रेरी के शीर्ष पर बने छोटे QueryBuilders का एक गुच्छा है। यह वही कमांड है जो Logub UI द्वारा आपके लॉग में व्यापक और कुशल खोज करने के लिए भेजा जाएगा।
चरण 2: खोज बार कैसे काम करता है
आप टैग या पूर्ण-पाठ खोज द्वारा खोज कर सकते हैं। नीचे कुछ उदाहरण हैं जिनका उपयोग आप मॉडल के रूप में कर सकते हैं यदि आप फंस जाते हैं।
- env:dev Ut ea vero voluptate* dev वातावरण में सभी लॉग खोजेगा जिनका संदेश Ut ea vero voluptate से शुरू होता है
- -env:prod Ut ea vero voluptate* prod को छोड़कर सभी वातावरण में सभी लॉग खोजेगा जिनका संदेश Ut ea vero voluptate से शुरू होता है
- originRequest:France originRequest:USA उन सभी लॉग को खोजेगा जिनमें originRequest फ़ील्ड का मान France या USA पर सेट है
- "dog" "cat" उन सभी लॉग को खोजेगा जिनमें "dog" और "cat" शब्द हैं
- -"dog" "cat" उन सभी लॉग को खोजेगा जिनमें "dog" नहीं है लेकिन "cat" है
ऐप के साथ एक अच्छा परीक्षण अनुभव प्राप्त करने के लिए, हम अत्यधिक अनुशंसा करते हैं कि आप प्लेग्राउंड के साथ अपना खुद का लॉग बनाएं, व्यावसायिक गुण जोड़ें और फिर बस थोड़ा प्रयोग करें ताकि इसके लिए एक एहसास प्राप्त हो सके।
चरण 3: Logub को अपने प्रोजेक्ट में कैसे एकीकृत करें
Logub संचालित करने के लिए आपको नीचे दी गई Docker इमेज की सूची की आवश्यकता होगी:
- Logub Fluentd इमेज लॉग एकत्र करने और Redis पर भेजने के लिए – Logub Fluentd Image
- RediSearch मॉड्यूल के साथ Redis इमेज Redis Mod Image
- Logub कंट्रोलर इमेज लॉग एक्सप्लोर कार्यक्षमता परोसने के लिए – Logub Controller Image
- लॉग एक्सप्लोर और क्वेरी करने के लिए Logub UI – Logub UI Image
Logub लॉग फॉर्मेट
अभी के लिए, Logub केवल एक विशेष लॉग फॉर्मेट को संभाल सकता है। भविष्य में, इस फॉर्मेट को बढ़ाया जाएगा और अधिक अनुकूलन योग्य बनाया जाएगा।
यहां Logub फॉर्मेट है
कृपया ध्यान दें, ये फ़ील्ड अनिवार्य नहीं हैं।
यदि आप अपने व्यावसायिक गुण जोड़ना चाहते हैं, तो आपको एक नेस्टेड JSON ऑब्जेक्ट जोड़ना होगा जिसमें "mdc" कुंजी के रूप में हो। उदाहरण के लिए:
Logub में लॉग प्रकाशित करना
Loghub में लॉग एक्सप्लोर करने के लिए, आपके कंटेनरों को Docker Fluentd लॉगिंग ड्राइवर का उपयोग करना होगा। ग्राहक एकीकरण के लिए यहां एक कॉन्फ़िगरेशन उदाहरण है।
चरण 4: Logub में Redis सेट करना
RediSearch
Logub एप्लिकेशन लॉग प्रोसेस करने के लिए RediSearch की कार्यक्षमता का उपयोग करता है। जब लॉग Redis डेटाबेस में बने रहते हैं, तो वे 3 प्रकार के फ़ील्ड के साथ होते हैं:
- सिस्टम गुण: वे जानकारी हैं जो Docker और Fluentd हमें लॉग भेजते समय प्रदान करते हैं (जैसे वातावरण, कंटेनर नाम आदि)।
- बुनियादी गुण: वे बुनियादी जानकारी हैं जो एक लॉग में होती है (जैसे टाइमस्टैम्प, सेवा आदि)। ये गुण RediSearch में स्वचालित रूप से इंडेक्स किए जाते हैं।
- व्यावसायिक गुण: एक Logub उपयोगकर्ता द्वारा एक विशिष्ट फ़ील्ड में दिए जाते हैं। उपयोगकर्ता को यहां Key-Value (Map) फॉर्मेट का सम्मान करना होगा। RediSearch की उन्नत क्षमताओं के लिए धन्यवाद, यदि आप उन पर कुछ शोध करना चाहते हैं तो आप इन 'व्यावसायिक गुणों' को इंडेक्स कर पाएंगे।
यहां हमारे पास एक लॉग का उदाहरण है जो बताता है कि जब Fluentd फ्लैट करता है और Redis डेटाबेस में बने रहता है तो हमारा टूल कैसे कार्य करता है। Logub API उपयोगकर्ता या कंपनी को mdc ऑब्जेक्ट के एक या सभी फ़ील्ड को इंडेक्स करने की अनुमति देगा।
इस प्रोजेक्ट में, टैग डेटाटाइप का व्यापक रूप से उपयोग किया जाता है। लॉग अक्सर व्यावसायिक गुणों के आधार पर खोजे जाते हैं जब लॉग में खोज की जाती है (उदाहरण के लिए एक ग्राहक आईडी)। इसके अलावा, हम लॉग संदेशों के लिए TextField डेटाटाइप का भी उपयोग करते हैं। यह उपयोगकर्ता को इस फ़ील्ड में पूर्ण-पाठ खोज करने की अनुमति देता है।
यहां खोज प्रक्रिया का एक सरलीकृत स्कीमा है:
Redis
Redis का उपयोग Fluentd द्वारा इस तरह HashSet प्रकार में लॉग स्टोर करने के लिए किया जाता है।
उपयोगकर्ता द्वारा इंडेक्स किए गए फ़ील्ड को ट्रैक करने के लिए, आप एक 'स्कीमा' ऑब्जेक्ट भी जोड़ सकते हैं जो Redis के List प्रकार का उपयोग करता है।
निष्कर्ष: RediSearch के साथ अव्यवस्था को दूर करना
डिजिटल नवाचारों के विस्फोट, जैसे क्लाउड, का एक दोष यह है कि IT बुनियादी ढांचे की निगरानी जटिल हो सकती है। एप्लिकेशन विभिन्न स्थानों पर बिखरे होने की संभावना है, जिससे हर लॉग को एक स्थान पर खींचना चुनौतीपूर्ण और मुश्किल हो जाता है।
हालांकि, Redis का उपयोग करके, इस प्रक्रिया की नीरसता दूर हो जाती है, जिससे आप आसानी से लॉग खोज, एकत्र और स्टोर कर सकते हैं। यदि आप इस एप्लिकेशन को कैसे बनाया गया था, इसके अंदरूनी विवरण के बारे में अधिक जानना चाहते हैं, तो आप यहां Alexis का YouTube वीडियो देख सकते हैं।
हमारे Launchpad पर प्रतिभाशाली प्रोग्रामर्स द्वारा विकसित नवीन अनुप्रयोगों की एक रोमांचक श्रृंखला भी है। इसे देखें, प्रेरित हों और देखें कि आप Redis का उपयोग करके क्या नवाचार ला सकते हैं।
इस एप्लिकेशन को किसने बनाया?
Alexis Gardin
Alexis एक नवीन सॉफ्टवेयर इंजीनियर हैं जो वर्तमान में Zendoc के लिए काम करते हैं। उनके GitHub पेज पर जाएं यह देखने के लिए कि वे किन अन्य परियोजनाओं में शामिल रहे हैं।