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

StatsD और AppSignal के स्टैंडअलोन एजेंट के साथ किसी भी सिस्टम की निगरानी करना

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

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

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

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

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

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

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

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

एजेंट को डेब या आरपीएम पैकेज के रूप में भेजा जाता है और उसकी कोई भाषा निर्भरता नहीं होती है। यह किसी भी डेबियन/उबंटू या रेड हैट-आधारित सिस्टम में चलता है। स्थापना के विस्तृत निर्देशों के लिए, एजेंट के दस्तावेज़ देखें।

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

StatsD क्या है?

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

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

KEY:VALUE|TYPE

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

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

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

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

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

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

echo -n "myscript.myevent.counter:1|c" | nc -4u -w0 localhost 8125

चूंकि हम यूडीपी का उपयोग कर रहे हैं, इसलिए हमें प्रतिक्रिया की प्रतीक्षा करने की आवश्यकता नहीं है।

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

echo -n "myscript.myevent.counter:1|c" | socat - udp:localhost:8125

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

backup_size=$(du -m /backups | cut -f1)
echo -n "backup.data:$backup_size|g" | nc -4u -w0 localhost 8125

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

echo -n "network.latency:0.2|g" | nc -4u -w0 localhost 8125

टैग का उपयोग करना

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

KEY:VALUE|TYPE|#TAGS

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

echo -n "backup.data:$backup_size|g|#backups,env:production" | nc -4u -w0 localhost 8125

हम सीखेंगे कि ऐपसिग्नल में डेटा कैसे देखा जाता है।

इंस्ट्रुमेंटिंग लैंग्वेज

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

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

import time
 
# measure time taken for function
start = time.process_time()
train_my_model()
training_time = time.process_time() - start
 
# send value to statsd
import socket
 
UDP_IP = "127.0.0.1"
UDP_PORT = 8125
MESSAGE = b"model.training.time:" + bytes(str(training_time), 'utf-8') + b"|t"
 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

हम जावा में java.net . के साथ समान परिणाम प्राप्त कर सकते हैं पुस्तकालय:

byte[] buffer = "mybatch.exception.counter:1|c".getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(
    buffer, buffer.length, address, 8125
);
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.send(packet);

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

$msg = "mywebsite.active_users:$ACTIVE_USERS|g";
$len = strlen($msg);
 
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 8125);
socket_close($sock);

StatsD क्लाइंट

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

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

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

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

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

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

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

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

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

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

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

मेनू से अपनी रुचि का मीट्रिक चुनें.

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

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

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

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

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

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

रैपिंग अप

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

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

  • StatsD संदर्भ.
  • कस्टम मेट्रिक्स कैसे भेजें।
  • AppSignal में डैशबोर्ड बनाना।
  • काफ्का मुद्दे को स्टैंडअलोन एजेंट की पहचान करना और उसका समाधान करना।

  1. डीफ़्रैग्लर के साथ बूट-टाइम पर डिस्क, फ़ाइलें और सिस्टम फ़ाइलें डीफ़्रैग करें

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

  1. डीफ़्रैग्लर के साथ बूट-टाइम पर डिस्क, फ़ाइलें और सिस्टम फ़ाइलें डीफ़्रैग करें

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

  1. रूबी में GCE, क्लाउड स्टोरेज और PubSub के साथ एक अपटाइम मॉनिटरिंग सिस्टम बनाएं

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