Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Ruby
Code

नई अवशेष कस्टम मैट्रिक्स का उपयोग सभी बातों पर नजर रखने के लिए

by
Length:LongLanguages:
This post is part of a series called Performance Monitoring With New Relic.
New Relic & JMeter - Perfect Performance Testing
How to Use New Relic Custom Dashboards & Why You'd Want To

Hindi (हिंदी) translation by Redy Sediawan (you can also view the original English article)

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

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

चलो कैसे नए अवशेष वास्तव में हुक में अपने आवेदन के प्रदर्शन को ट्रैक करने पर एक त्वरित देखो लेने के द्वारा शुरू करते हैं ।

प्रायोजित सामग्री

इस सामग्री को नए अवशेष द्वारा कमीशन और लिखा गया था और/या Tuts + टीम द्वारा संपादित । प्रायोजित सामग्री के साथ हमारा उद्देश्य प्रासंगिक और उद्देश्य ट्यूटोरियल, मामले के अध्ययन, और प्रेरणादायक साक्षात्कार है कि हमारे पाठकों के लिए वास्तविक शैक्षिक मूल्य प्रदान करते है और हमें और अधिक उपयोगी सामग्री के निर्माण निधि के लिए सक्षम प्रकाशित है ।


कैसे नए अवशेष पटरियों लेनदेन और तुम एक ही कैसे कर सकते है

यह जादू की तरह एक छोटे से लग सकता है, आप अपने Gemfile में एक मणि शामिल हैं:

और किसी तरह नए अवशेष अपने सभी कोड पर नज़र रखता है । बेशक यह सिर्फ कोड है, तो यह एजेंट मणि की आवश्यकता होती है जब यह निगरानी शुरू कर सकते हैं तो कैसे नए अवशेष वास्तव में अपने अनुप्रयोग उपकरणों देखते हैं. हम एक रेल 4 अनुप्रयोग के संदर्भ में यह करना होगा ।

पहली जगह देखने के लिए newrelic_rpm. rb है, जो इसे में निंनलिखित प्रासंगिक कोड है:

तो एक Railtie बनाया जाता है जब रेल संस्करण तीन से ऊपर है, यह एक NewRelic हो जाता है:: नियंत्रण सिंगलटन उदाहरण (जब यह शुरू की है) और कॉल init_plugin । जब NewRelic:: नियंत्रण उदाहरण बनाया है यह क्या रूपरेखा बाहर आंकड़े (हमारे मामले में रेल 4) चल रहा है और कुछ प्रासंगिक कोड लोड; हम new_relic/नियंत्रण/class_methods # load_framework_class में यह देख सकते हैं । init_plugin विधि है कि निष्पादित हो जाता है new_relic/नियंत्रण/instance_methods में रहता है । दिलचस्प यहां कोड है:

Install_instrumentation कॉल महत्वपूर्ण है। कार्यान्वयन new_relic / नियंत्रण / उपकरण में रहता है। बॉयलरप्लेट बिट्स पर छोड़कर, यह काम करता है कि कौन सी उपकरण फाइलों को लोड करने की आवश्यकता है और फिर उन्हें एक-एक करके आवश्यकता होती है। हमारे मामले में, यह new_relic/एजेंट/इंस्ट्रूमेंटेशन/rails4 के तहत फ़ाइलें लोड होगा । यहां फ़ाइलों में से एक action_controller. rb है, जब यह आवश्यक हो जाता है अंततः कुछ metaprogramming जादू के द्वारा निंनलिखित कोड निष्पादित:

और यहां हम इसे की जड़ को मिलता है: ActionController:: आधार (जहां से अपने सभी नियंत्रकों वारिस) मॉड्यूल की एक जोड़ी में शामिल हो जाता है, जिनमें से सबसे महत्वपूर्ण NewRelic है:: एजेंट:: इंस्ट्रूमेंटेशन:: ControllerInstrumentation । यह कैसे नए अवशेष के रूप में अपने सभी नियंत्रक कार्यों पर नजर रखने के लिए शुरू होता है ' लेनदेन ' । बेशक, यह एक कुछ हद तक सरल दृष्टिकोण है और हम विस्तार का एक बहुत पर चमकदार रहे हैं, लेकिन यह आप कैसे नए अवशेष अपने कोड की निगरानी करता है की एक विचार देता है । सवाल यह है कि आप इस जानकारी का उपयोग कैसे कर सकते हैं?

निगरानी कस्टम चौखट & पृष्ठभूमि नौकरियां

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

हम यह इतना पसंद साधन कर सकते हैं:

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

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

उदाहरण के लिए, हमारे कस्टम Tuts + पृष्ठभूमि नौकरियां नियमित रूप से रूबी कक्षाएं कि निष्पादन विधि के लिए जवाब दिया गया है, तो हम सब करना है यह है:

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

किसी लेन-देन को और भी अधिक अनुकूलित करना

काफी दिलचस्प है, यहां तक कि वेब लेनदेन कि नए अवशेष स्वचालित रूप से नज़र रखता है sacrosanct नहीं हैं । उदाहरण के लिए, आप वर्तमान में निष्पादित हो रहे लेन-देन के लिए नए अवशेष को भेजे जाने के लिए कुछ कस्टम पैरामीटर जोड़ सकते हैं (यदि आपने पैरामीटर्स कैप्चरिंग पर स्विच किया है).

01_capture_parameters

आप लेनदेन के दौरान किसी भी बिंदु पर ऐसा कर सकते हैं । सब तुम्हें क्या करना है कॉल:: NewRelic:: एजेंट. जोड़ें _custom_parameters (: कुंजी = > ' मान ') किसी भी समय और आप में पारित मापदंडों पैरामीटर डेटा आप नए अवशेष के अंदर देखने के लिए जोड़ा मिल जाएगा. उदाहरण के लिए, यदि हम एक नियंत्रक है कि इस तरह देखा था:

धीमे लेनदेन हमें निंनलिखित देना होगा:

02_custom_parameter_display

यह सब हम नहीं कर सकते हैं । यह नाम बदलकर चल रहा है, जबकि हम एक सौदे को सेगमेंट कर सकते हैं. हम कहते है कि हम एक सौदे के रूप में विशेष जब यह एक विशेष उपयोगकर्ता द्वारा किया जाता है इलाज करना चाहते हैं । आप कुछ इस तरह कर सकते हैं:

अब इस सौदे के नए अवशेष UI में एक अलग लेनदेन के रूप में माना जाएगा:

03_segmented_transaction

यहां तक कि डिफ़ॉल्ट नए अवशेष इंस्ट्रूमेंटेशन अनुकूलन के लिए कुछ कमरे में है, लेकिन कई बार, बस कप्तान Kirk की तरह, तुम सिर्फ और अधिक शक्ति की जरूरत है । यह वह स्थान है जहां कस्टम मीट्रिक आते हैं ।


नई अवशेष कस्टम मेट्रिक्स & वे कैसे उपयोगी है

दिन में वापस, आप बाह्य सेवा संचार और Redis जैसे विभिंन आम उपकरणों के उपयोग की तरह चीजों पर नजर रखने के लिए कस्टम मैट्रिक्स का इस्तेमाल किया जाएगा । इन दिनों, न्यू रिलीक के पास उस सामान की निगरानी करने के बेहतर तरीके हैं, तो हमें कस्टम मीट्रिक की क्या आवश्यकता है? मुझे कस्टम परिस्थितियों को चार परिस्थितियों में उपयोगी पाया गया है:

  • निगरानी कोड है कि नए अवशेष नहीं देख सकते है
  • निगरानी कोड आप नियंत्रण नहीं है
  • निगरानी लिपियों
  • पूरी तरह से कस्टम घटनाओं की निगरानी

चलो उनमें से प्रत्येक पर एक त्वरित देखो ले ।

निगरानी कोड नए अवशेष नहीं देख सकते

नई अवशेष नीचे एक सौदे का पता लगाने में अपने विभिंन आवेदन तरीकों के प्रदर्शन को तोड़ने में बहुत अच्छा है, लेकिन कई बार आप एक का पता लगाने में इस तरह कुछ देखना होगा:

04_uninstrumented_code

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

हम इतनी तरह राशि विधि ट्रैक शुरू कर सकते हैं:

add_method_tracer करने के लिए दूसरा पैरामीटर नाम है कि इस कस्टम मीट्रिक नए अवशेष यूआई में मिल जाएगा है । मीट्रिक नाम अलग तार स्लेश कर रहे हैं और सभी कस्टम मीट्रिक के साथ शुरू कर देना चाहिए ' कस्टम/ उदाहरण के लिए, आप अपने कस्टम मीट्रिक को ' कस्टम//' के रूप में नाम दे सकते<class_name><method_name>हैं । इस बिंदु पर आप अपने सौदे में राशि विधि देख शुरू हो जाएगा निशान, नए अवशेष UI में ।</method_name> </class_name> लेकिन, अगर हमारी राशि विधि बहुत जटिल है और हम इसके कुछ हिस्सों की निगरानी करना चाहते हैं, तो हमें संदेह है कि हम धीमे हैं? मेरी सलाह यह है कि आपको अपनी विधि को दोबारा करना चाहिए-यह बहुत बड़ा है, लेकिन यदि आप ऐसा नहीं कर सकते हैं, तो आप इस तरह यादृच्छिक कोड का उपयोग कर सकते हैं:

अब विधि के साधन हिस्सा अपने लेनदेन निशान में अलग से सूचित किया जाएगा । यदि आपने पहले विधि को स्वयं लिखती है, तो आपके नए ' इनर ' मीट्रिक को पिछले एक के अंतर्गत समूहीकृत किया जाएगा.

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

निगरानी कोड आप नियंत्रण नहीं है

अक्सर आप एक पुस्तकालय है जो, आपको संदेह है, नीचे अपने आवेदन धीमा है का उपयोग कर सकते हैं । नई अवशेष डिफ़ॉल्ट रूप से आप के लिए किसी भी यादृच्छिक मणि साधन नहीं है, तो आप क्या कर सकते हैं? तुम मणि कांटा और कुछ विधि हम ऊपर देखा का उपयोग कर उपकरण जोड़ सकते हैं, लेकिन एक भी सरल समाधान मौजूद है-का प्रयोग करें । हम कहते है कि तुम foobar पुस्तकालय जो एक विधि पट्टी है कि आप इसे में कुछ धीमी कोड है संदेह के साथ एक वर्ग फू है प्रयोग कर रहे हैं । तुम सब करने की ज़रूरत है एक initializer foobar_instrumentation. rb बनाने के लिए, और यह में निंनलिखित डाल:

जैसा कि आप कोड देख सकते है बहुत क्या हम ऊपर था के समान है, नए अवशेष बाहर अपने नए कस्टम वर्ग और विधि नाम के आधार पर मीट्रिक के लिए एक समझदार नाम काम करेंगे और आप इसे अपने सौदे में देखने के निशान शुरू हो जाएगा । इस का प्रयोग करें कि अगर संदिग्ध पुस्तकालय वास्तव में अपने कोड बना रही है बुरी तरह से काम करने के लिए, लेकिन स्थाई रूप से चारों ओर इस उपकरण नहीं रख । यह अपने रेल अनुप्रयोग में अनावश्यक initializers spams और आप वास्तव में स्थायी रूप से ट्रैक करने की जरूरत नहीं है कि कस्टम मैट्रिक्स के साथ अपने नए अवशेष यूआई प्रदूषित करता है.

निगरानी लिपियों

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

आप ऊपर बताए गए अनुसार कस्टम मीट्रिक का उपयोग करके अपना स्क्रिप्ट कोड लिखती कर सकते हैं. यह लेनदेन अंश में दिखाई नहीं देगा क्योंकि यह किसी लेन-देन का हिस्सा नहीं होगा । क्या आप हालांकि करने में सक्षम हो जाएगा, मैट्रिक्स आप इकट्ठा जो आपको एक विचार अगर आपकी स्क्रिप्ट बुरी तरह से प्रदर्शन कर रहा है चाहिए से एक कस्टम डैशबोर्ड बना है ।

दूसरी बात आप कर सकते है पृष्ठभूमि नौकरी और यह तदनुसार साधन के एक प्रकार के रूप में अपनी स्क्रिप्ट का इलाज है (NewRelic शामिल:: एजेंट:: इंस्ट्रूमेंटेशन:: ControllerInstrumentation और इतने पर) । यह UI में अन्य पृष्ठभूमि नौकरियों के साथ एक साथ एकमुश्त मिल जाएगा, लेकिन आप कस्टम डैशबोर्ड के बारे में चिंता करने की जरूरत नहीं है.

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

इस तरह आप कभी भी अपने डेटा UI में दिखाई नहीं दे रहा है क्यों आश्चर्य करने की आवश्यकता नहीं होगी.

पूरी तरह से कस्टम घटनाओं की निगरानी

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

नई अवशेष आप दो एपीआई कॉल के माध्यम से सीधे कस्टम मैट्रिक्स रिकॉर्ड की सुविधा देता है:

  • record_metric
  • increment_metric

आप record_metric उपयोग के लिए किसी भी मीट्रिक है कि एक राशि है और increment_metric सुंदर आत्म व्याख्यात्मक है ट्रैक कर सकते हैं । तो हम उदाहरण के लिए, यह कर सकते हैं:

आपके लिए UI में इन मीट्रिक को देखने का एकमात्र तरीका कुछ कस्टम डैशबोर्ड्स बनाना होगा. मैं उल्लेख है कि इस नए अवशेष एपीआई के कुछ "रचनात्मक" उपयोग के रूप में यह मन में प्रदर्शन डेटा के साथ बनाया गया है होगा, लेकिन यह निश्चित रूप से एक आसान बात को पता है जब आप एक त्वरित डैशबोर्ड एक साथ फेंक की जरूरत है और नहीं करना चाहते अतिरिक्त infrastru का एक गुच्छा सेट cture ।


बहुत ज्यादा निगरानी के खतरों

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


निष्कर्ष

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

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.