Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

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

Node.js के लिए AppSignal APM, और रूबी APM और Elixir APM स्वचालित रूप से आपके ऐप को इंस्ट्रूमेंट करते हैं। लेकिन AppSignal डिफ़ॉल्ट रूप से इन सैटेलाइट प्रोसेस को नहीं देखता। हर जगह निगरानी बढ़ाने और अपने सभी डेटा को एक ही ऐप में रखने के लिए, आप AppSignal के स्टैंडअलोन एजेंट को इंस्टॉल कर सकते हैं।

AppSignal का स्टैंडअलोन एजेंट

स्टैंडअलोन एजेंट उसी सॉफ्टवेयर पर आधारित है जिससे हम आमतौर पर रूबी, Elixir, या JavaScript एप्लिकेशन को इंस्ट्रूमेंट करते हैं। यह सॉफ्टवेयर स्टैंडअलोन मोड में भी चल सकता है।

स्टैंडअलोन एजेंट का उपयोग निम्न की निगरानी के लिए किया जा सकता है:

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

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

यह कैसे काम करता है

एजेंट को deb या rpm पैकेज के रूप में शिप किया जाता है और इसकी कोई भाषा निर्भरता नहीं होती। यह किसी भी Debian/Ubuntu या Red Hat-आधारित सिस्टम पर चलता है। विस्तृत इंस्टॉलेशन निर्देशों के लिए, एजेंट डॉक्यूमेंटेशन देखें।

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

StatsD क्या है?

StatsD मनमाने डेटा को एकत्र और एकत्रित करने के लिए एक मानक है। यह मीट्रिक और प्रदर्शन जानकारी लॉगिंग पर केंद्रित है। यह एक हल्के टेक्स्ट प्रोटोकॉल का उपयोग UDP कनेक्शन पर करता है जिसका आपकी मशीन में छोटा पदचिह्न होता है।

एक StatsD संदेश इस तरह दिखता है:

जहां KEY कोई भी मनमाना स्ट्रिंग है, और VALUE एक संख्या है। टाइप मान परिभाषित करता है कि संख्या कैसे संसाधित की जाती है।

हम तीन प्रकार के मेट्रिक्स का समर्थन करते हैं:

  • c: यह एक काउंटर है जो हर बार कॉल किए जाने पर बढ़ता है। उदाहरण के लिए, active_users:1|c active_users काउंटर में 1 जोड़ता है।
  • g: एक गेज एक संख्यात्मक मान लेता है और इसे अपडेट होने तक बनाए रखता है। यह उन मानों को रिकॉर्ड करने के लिए उपयोगी है जो समय के साथ ऊपर और नीचे बदलते हैं, जैसे थ्रूपुट, सक्रिय यूजर्स की संख्या, या क्यू में लंबित कार्यों की संख्या।
  • t: टाइमिंग मान स्टोर करता है। यह प्रकार अवधि ट्रैक करने के लिए आदर्श है। AppSignal लॉग किए गए सभी टाइमिंग के लिए माध्य, गणना, और पर्सेंटाइल्स की गणना करता है।

अन्य असमर्थित मीट्रिक प्रकारों को साइलेंटली नजरअंदाज कर दिया जाएगा।

StatsD को डेटा भेजना

स्टैंडअलोन एजेंट पोर्ट 8125 पर UDP पैकेट्स के लिए सुनता है। हम कमांड लाइन से netcat का उपयोग करके StatsD-फॉर्मेटेड स्ट्रिंग्स भेज सकते हैं:



चूंकि हम UDP का उपयोग कर रहे हैं, हमें रिस्पांस के लिए इंतजार नहीं करना पड़ता।

Socat भी काम करता है:



यह किसी भी बैच या क्रॉन जॉब्स को इंस्ट्रूमेंट करना आसान बनाता है। उदाहरण के लिए, निम्न लाइनें एक गेज का उपयोग करके लॉग करती हैं कि बैकअप जॉब ने कितना डेटा उत्पन्न किया है:



हम इंटीजर्स तक सीमित नहीं हैं। StatsD फ्लोटिंग-पॉइंट नंबर्स के साथ भी काम करता है:



आप अपने मेट्रिक्स में टैग जोड़ सकते हैं। StatsD सर्वर संदेश के अंत में वैकल्पिक टैग्स का समर्थन करता है:

हम एक ही संदेश में कई टैग लागू कर सकते हैं और बाद में फ़िल्टरिंग के लिए मान निर्दिष्ट कर सकते हैं:



हम थोड़ी देर में AppSignal में डेटा देखना सीखेंगे।

भाषाओं को इंस्ट्रूमेंट करना

StatsD सर्वर किसी भी भाषा के साथ संगत है जो UDP पैकेट भेज सकती है। आइए कुछ उदाहरण देखें।

पायथन डेटा माइनिंग और मशीन लर्निंग के लिए एक लोकप्रिय भाषा है। हम बिल्ट-इन socket लाइब्रेरी का उपयोग करके पायथन एप्लिकेशन में इंस्ट्रूमेंटेशन जोड़ सकते हैं:



हम java.net लाइब्रेरी के साथ Java में समान परिणाम प्राप्त कर सकते हैं:



PHP एक और अविश्वसनीय रूप से लोकप्रिय भाषा का उदाहरण है। हम socket_sendto के साथ UDP पैकेट भेज सकते हैं:



StatsD क्लाइंट्स

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

AppSignal में होस्ट डेटा देखना

होस्ट मेट्रिक्स डैशबोर्ड आपके मशीन के संसाधन उपयोग को दिखाता है:

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

AppSignal स्टैंडअलोन एजेंट चलाने वाली हर मशीन के लिए एक एंट्री जोड़ता है।

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

डैशबोर्ड लोड और CPU औसत डिस्क, नेटवर्क, मेमोरी, और स्वैप उपयोग दिखाता है:

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

डैशबोर्ड बनाना

AppSignal आपके द्वारा भेजे गए StatsD मान के लिए ऑटोमैटिकली डैशबोर्ड जनरेट नहीं करता - आपको इसके लिए कस्टम डैशबोर्ड बनाने की आवश्यकता होगी।

सबसे पहले, डैशबोर्ड मेनू के तहत डैशबोर्ड जोड़ें पर क्लिक करें:

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

डैशबोर्ड को एक नाम दें:

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

ग्राफ जोड़ें बटन पर क्लिक करने से ग्राफ बिल्डर दिखाई देता है:

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

ग्राफ को एक नाम दें, और मीट्रिक जोड़ें पर क्लिक करें:

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

मेनू से उस मीट्रिक को चुनें जिसमें आप रुचि रखते हैं।

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

वैकल्पिक रूप से, फ़िल्टरिंग के लिए टैग्स का उपयोग करें:

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

अगला, ओवरव्यू पर वापस क्लिक करें। आप विभिन्न ग्राफ प्रकारों और वैल्यू यूनिट्स को आज़माना चाह सकते हैं ताकि यह पता लगाया जा सके कि कौन सा आपके द्वारा प्रतिनिधित्व किए जाने वाले डेटा के लिए सबसे उपयुक्त है।

टाइमिंग डेटा एरिया ग्राफ के साथ बेहतर दिखता है क्योंकि माध्य और पर्सेंटाइल्स अधिक स्पष्ट रूप से दिखाए जाते हैं।

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

लाइन ग्राफ काउंटर्स और गेज के लिए बहुत अच्छा काम करते हैं।

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

एक बार जब आप परिणाम से खुश हों, तो ग्राफ बनाएं पर क्लिक करें।

इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

ध्यान दें कि यदि आपके पास AppSignal आपके प्रदर्शन निगरानी टूल (APM) के रूप में Node.js के लिए, या आपके रूबी (ऑन रेल्स) APM या Elixir APM के रूप में सेट है, तो आप किसी भी अन्य स्वचालित रूप से इंस्ट्रूमेंटेड या मापी गई मेट्रिक्स के लिए डैशबोर्ड भी जोड़ सकते हैं।

समापन

हमने सीखा कि AppSignal के स्टैंडअलोन सर्वर का उपयोग अपनी मशीनों और सैटेलाइट कोड को देखने के लिए कैसे करें। इसके बिल्ट-इन StatsD सर्वर के साथ, आप मनमाने प्रदर्शन डेटा रिकॉर्ड कर सकते हैं और किसी भी प्रोसेस को इंस्ट्रूमेंट कर सकते हैं।

स्टैंडअलोन एजेंट का उपयोग करने के बारे में अधिक जानने के लिए निम्न लिंक देखें:

  • StatsD संदर्भ।
  • कस्टम मेट्रिक्स कैसे भेजें।
  • AppSignal में डैशबोर्ड बनाना।
  • स्टैंडअलोन एजेंट का उपयोग करके काफ्का समस्या की पहचान और समाधान।
इन्फ्रास्ट्रक्चर दृश्यता बढ़ाएं: StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करें

टॉमस फर्नांडीज

हमारे गेस्ट ऑथर टॉमस ने IBM में 10 साल बिताए, जहां उन्होंने थोड़ा सब कुछ किया - विकास, सेवा वितरण, डेटाबेस प्रशासन, और क्लाउड इंजीनियरिंग। वह अब एक स्वतंत्र सलाहकार और तकनीकी लेखक हैं।

टॉमस फर्नांडीज के सभी लेख


  1. Android में उपयोगकर्ता चयन पर ऐप भाषा कैसे बदलें? Android में उपयोगकर्ता चयन पर ऐप भाषा कैसे बदलें?

    Android में रनटाइम भाषा परिवर्तन (Locale बदलना) यह उदाहरण दर्शाता है कि Spinnner से भाषा चुनकर ऐप की भाषा को रनटाइम पर कैसे बदला जाए, बिना ऐप रीस्टार्ट किए (एक्टिविटी रीक्रिएट करके)। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: स्ट्रिंग रिसोर्स फ़ाइलें बनाएं डिफ़

  1. HTML DOM इनपुट मंथ name प्रॉपर्टी HTML DOM इनपुट मंथ name प्रॉपर्टी

    परिचय HTML DOM इनपुट मंथ name प्रॉपर्टी HTML दस्तावेज़ में type=month वाले इनपुट फील्ड के name एट्रिब्यूट का मान प्राप्त करती है और संशोधित करती है। सिंटैक्स मान प्राप्त करना object.name मान सेट करना object.name = text उदाहरण मंथ इनपुट फील्ड के name एट्रिब्यूट को प्रदर्शित करना: <!DOCTYPE html

  1. जावास्क्रिप्ट में innerHTML बनाम innerText जावास्क्रिप्ट में innerHTML बनाम innerText

    innerHTML - innerHTML प्रॉपर्टी टेक्स्ट को सभी स्पेसिंग और इनर एलिमेंट टैग्स सहित लौटाती है। यह टेक्स्ट के फॉर्मेटिंग और सभी एक्स्ट्रा टैग्स जैसे <b>, <i> आदि को संरक्षित रखता है। innerText - innerText प्रॉपर्टी केवल टेक्स्ट लौटाती है, स्पेसिंग और इनर एलिमेंट टैग्स को हटा देती है। जावास