Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> डेटाबेस

Fluentd और ObjectRocket के साथ हाइब्रिड क्लाउड में लॉग इन करना

Fluentd और ObjectRocket के साथ हाइब्रिड क्लाउड में लॉग इन करना

यह पोस्ट हार्ट हूवर और रयान वॉकर द्वारा सह-लिखा गया था

हाल ही में, रैकस्पेस देवओप्स ऑटोमेशन टीम ने एक ऐसी सेवा की घोषणा की जो न्यू रेलिक से रैकस्पेस समर्थन के लिए अलर्ट भेजती है। ये अलर्ट हमारे DevOps इंजीनियर्स को जवाब देने के लिए टिकट जेनरेट करेंगे, ताकि सुबह 3 बजे अलर्ट जेनरेट होने पर हमारे ग्राहक अच्छी तरह सो सकें। हमारे ग्राहकों के परिवेश के बारे में एकत्र किए गए अन्य डेटा बिंदुओं के साथ संयुक्त होने पर, हमारे इंजीनियर यह पहचानेंगे कि समस्याएँ कहाँ हैं और फिर उचित कार्रवाई को अंजाम देंगे।

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

यह वातावरण को बहुत अच्छी तरह से विभाजित करता है, लेकिन लॉग एकत्रीकरण के संबंध में हमारे लिए एक समस्या पैदा करता है। हम अपने निजी वातावरण में इलास्टिकसर्च/किबाना स्टैक चलाते हैं। फ़ायरवॉल के पीछे, हम लॉग को सीधे ElasticSearch पर पुश करने के लिए फ्लुएंटड का उपयोग करते हैं। फ़ायरवॉल के बाहर, EK स्टैक तक नहीं पहुँचा जा सकता है। इसे हल करने के लिए, हमने अपनी सार्वजनिक एपीआई सेवाओं से लॉग को ऑब्जेक्टरॉकेट मोंगोडीबी इंस्टेंस में पुश करने के लिए फ्लुएंटड का उपयोग करना शुरू कर दिया। आंतरिक रूप से, हम ऑब्जेक्टरॉकेट से लोचदार खोज में लॉग खींचने के लिए फिर से फ्लुएंट का उपयोग करते हैं। यह हमें हमारे पर्यावरण की सभी गतिविधियों के लिए एक ही गंतव्य देता है।

फ्लुएंटड क्या है?

Fluentd एक खुला स्रोत डेटा संग्राहक है जो डेटा को यथासंभव JSON के रूप में संरचित करने का प्रयास करता है। इसका मतलब है कि आपको एक समान प्रारूप में लॉगिंग डेटा प्राप्त करने के लिए स्क्रिप्ट का एक गुच्छा लिखने और बनाए रखने की आवश्यकता नहीं है। यह सब JSON है।

धाराप्रवाह की शक्ति कई स्रोतों और गंतव्यों के लिए इसके समर्थन में है। उदाहरण के लिए, आप ट्विटर स्ट्रीम से डेटा एकत्र कर सकते हैं और आईआरसी में आपको इसके बारे में सूचित कर सकते हैं। बहुत सारे सामुदायिक प्लगइन्स उपलब्ध हैं।

Docker के साथ Fluentd का उपयोग करना

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

<source>
  type tail
  format json
  time_key time
  path /var/lib/docker/containers/abcdef/abcdef-json.log
  pos_file /var/lib/docker/containers/abcdef/abcdef-json.log.pos
  tag docker.container.abcdef
  rotate_wait 5
</source>

यह कंटेनर लॉग को पूंछता है, और स्थिति फ़ाइल के साथ लॉग में कहां है इसका ट्रैक रखता है। यह नोट करना महत्वपूर्ण है कि इस कॉन्फ़िगरेशन अनुभाग में मौजूद टैग एक फ्लुएंट टैग है, जिसका उपयोग धाराप्रवाह को यह बताने के लिए किया जाता है कि इसे एकत्रित किए गए डेटा का क्या करना है।

MongoDB के साथ Fluentd का उपयोग करना

सार्वजनिक पक्ष पर, हम धाराप्रवाह बताते हैं कि "मैच" के साथ डेटा का क्या करना है। इस स्थिति में, वैरिएबल को उसी कॉन्फ़िगरेशन फ़ाइल में अपने ऑब्जेक्टरॉकेट डेटाबेस से वास्तविक जानकारी से बदलें:

<match docker.**>
  type mongo
  database $DBNAME
  collection prod
  host $HOSTNAME
  port $PORT
  ssl
  capped
  capped_size 100m
  user $MONGOUSER
  password $MONGOPASS
  include_tag_key true
</match>

सेटिंग शामिल_टैग_की धाराप्रवाह को मोंगोडीबी में लॉग के लिए रिकॉर्ड में टैग शामिल करने के लिए कहती है। इस तरह हम वास्तव में जानते हैं कि कौन सी लॉग प्रविष्टि किस कंटेनर से संबंधित है। Fluentd डेटा के साथ MongoDB को पॉप्युलेट करना शुरू कर देगा, जिसे हम तब अपने एप्लिकेशन के निजी पक्ष पर खींच सकते हैं।

निजी तौर पर, हम अभी भी धाराप्रवाह MongoDB प्लगइन का उपयोग करते हैं, लेकिन इस बार इसे एक स्रोत के रूप में सेट करें:

<source>
  type mongo_tail
  database $DBNAME
  collection prod
  host $HOSTNAME
  port $PORT
  user $MONGOUSER
  password $MONGOPASS
  ssl
  time_key time
  wait_time 5
  tag prod
  id_store_file /app/prod_last_id
</source>

फिर, हम अपने लॉग को ElasticSearch में धकेलने के लिए एक "मिलान" प्रदान करते हैं:

<match **>
  type forest
  subtype elasticsearch
  <template>
    host elasticsearch.domain.com
    port 9200
    index_name fluentd
    logstash_format true
    buffer_type memory
    type_name ${tag}
    flush_interval 3
    retry_limit 17
    retry_wait 1.0
    num_threads 1
  </template>
</match>

हम फ़ॉरेस्ट फ़्लुएंट प्लग इन का भी उपयोग कर रहे हैं जो कई वातावरणों में हमारे टैगिंग कॉन्फ़िगरेशन को सरल बनाता है।

Fluentd आपके डॉकर लॉग को कई होस्ट में एकत्रित करने और उन्हें MongoDB डेटाबेस में धकेलने का एक शानदार तरीका है। हमारे मामले में, ऑब्जेक्टरॉकेट लॉग एकत्रीकरण के लिए हमारे सार्वजनिक और निजी वातावरण के बीच एक रास्ता स्टेशन है। अन्य उपयोग के मामलों में आपके द्वारा एकत्रित किए जा रहे डेटा पर रीयल-टाइम विश्लेषण शामिल हो सकते हैं। हमारी टीम के लिए सबसे अच्छी बात यह है कि ऑब्जेक्टरॉकेट की विश्वसनीयता और ज्ञान के कारण हमें MongoDB को प्रबंधित करने की आवश्यकता नहीं है।


  1. सर्वर रहित क्लाउड, Next.js और Upstash Redis के साथ आरंभ करें

    सर्वरलेस क्लाउड उस टीम का बैकएंड प्लेटफॉर्म है जिसने Serverless Framework . बनाया है . यह डेवलपर उत्पादकता को बढ़ावा देने के लिए एक ही मंच में क्लाउड रनटाइम, सीएलआई और एसडीके प्रदान करता है। इस पोस्ट में, हम एक नेक्स्ट.जेएस एप्लिकेशन बनाएंगे जो सर्वरलेस रेडिस (अपस्टैश) से डेटा पढ़ता है और इसे सर्वरल

  1. क्लाउड ट्यूनअप प्रो के साथ इंटरनेट कुकीज़ और सिस्टम रजिस्ट्री को स्कैन करें

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

  1. क्या हाइब्रिड क्लाउड वास्तव में गेम चेंजर है?

    आज क्लाउड कंप्यूटिंग हमारे जीवन का एक अनिवार्य हिस्सा बन गया है। हम, सामान्य या सहयोगी रूप से संगठन के रूप में इसके बिना हमारे जीवन के बारे में नहीं सोच सकते। संसाधनों के रणनीतिक प्रबंधन के लिए क्लाउड कंप्यूटिंग के उपयोग ने हमारे जीवन को आसान बना दिया है और इसमें शामिल निवेश को कम कर दिया है। जैसे-ज