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

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

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


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

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

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

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

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

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

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

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

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

ध्यान दें कि यदि आपके पास AppSignal आपके प्रदर्शन निगरानी टूल (APM) के रूप में Node.js के लिए, या आपके रूबी (ऑन रेल्स) APM या Elixir APM के रूप में सेट है, तो आप किसी भी अन्य स्वचालित रूप से इंस्ट्रूमेंटेड या मापी गई मेट्रिक्स के लिए डैशबोर्ड भी जोड़ सकते हैं।
समापन
हमने सीखा कि AppSignal के स्टैंडअलोन सर्वर का उपयोग अपनी मशीनों और सैटेलाइट कोड को देखने के लिए कैसे करें। इसके बिल्ट-इन StatsD सर्वर के साथ, आप मनमाने प्रदर्शन डेटा रिकॉर्ड कर सकते हैं और किसी भी प्रोसेस को इंस्ट्रूमेंट कर सकते हैं।
स्टैंडअलोन एजेंट का उपयोग करने के बारे में अधिक जानने के लिए निम्न लिंक देखें:
- StatsD संदर्भ।
- कस्टम मेट्रिक्स कैसे भेजें।
- AppSignal में डैशबोर्ड बनाना।
- स्टैंडअलोन एजेंट का उपयोग करके काफ्का समस्या की पहचान और समाधान।
टॉमस फर्नांडीज
हमारे गेस्ट ऑथर टॉमस ने IBM में 10 साल बिताए, जहां उन्होंने थोड़ा सब कुछ किया - विकास, सेवा वितरण, डेटाबेस प्रशासन, और क्लाउड इंजीनियरिंग। वह अब एक स्वतंत्र सलाहकार और तकनीकी लेखक हैं।
टॉमस फर्नांडीज के सभी लेख