अपने एप्लिकेशन के प्रदर्शन पर उचित निगरानी अवलोकन सेट करना एक जटिल कार्य है। आम तौर पर, आपको पहले यह पता लगाना होगा कि आपको क्या निगरानी करने की आवश्यकता है, फिर अपने कोड को इंस्ट्रूमेंट करें, और अंत में उत्सर्जित सभी डेटा का अर्थ निकालें।
हालांकि, कुछ चीजों को सेट करके, और एक APM जो मूल रूप से Ruby का समर्थन करता है, यह पहले से कहीं ज्यादा आसान है। इस पोस्ट में, हम आपको दिखाएंगे कि आप इसे कैसे कर सकते हैं।
ऑटोमैटिक इंस्ट्रूमेंटेशन - हैंड्सफ्री APM सेटअप
यह पता लगाने के लिए कि आपके कोड के कौन से टुकड़े आपके प्रदर्शन के मुद्दों का कारण बन रहे हैं, आपको इसमें इंस्ट्रूमेंटेशन जोड़ना होगा। इस तरह, आप सभी कार्यों को तोड़ सकते हैं और माप सकते हैं कि कौन से सबसे धीमे हैं।
AppSignal के ऑटोमैटिक इंस्ट्रूमेंटेशन के साथ, हम उतना मैनुअल काम हटा देते हैं जितना हम कर सकते हैं। बस CLI के माध्यम से कुछ कमांड चलाएं, और आप सेट हो जाएंगे।
हमारा मॉनिटरिंग एजेंट आपके बुनियादी ढांचे के विभिन्न हिस्सों का पता लगाता है और स्वचालित रूप से इसे इंस्ट्रूमेंट करता है। यह AppSignal ऐप को उन ग्राफ़ और डैशबोर्ड को पचाने, संसाधित करने, निगरानी करने और दिखाने में सक्षम बनाता है जिनकी आपको सबसे अधिक आवश्यकता है।
इसका मतलब है कि उदाहरण के लिए Ruby के लिए graphql जेम के लिए, AppSignal आने वाले हर GraphQL अनुरोध को इंस्ट्रूमेंट करेगा, जिसका अर्थ है कि यह अनुरोध में सभी घटनाओं का ब्रेकडाउन प्रदान करेगा।
आउट-ऑफ-द-बॉक्स इंस्ट्रूमेंटेशन
हमने उन सभी टूल्स की एक सूची बनाई है जिन्हें AppSignal सपोर्ट करता है। यह काफी व्यापक है:
| प्रकार | टूल |
|---|---|
| फ्रेमवर्क | Rails |
| Rails विशेषताएं | Action Mailer |
| Rails विशेषताएं | Action Cable |
| Rails विशेषताएं | Active Record |
| Rails विशेषताएं | Active Job |
| Rails विशेषताएं | कैशिंग |
| ActiveRecord के माध्यम से समर्थित | PostgreSQL, MySQL, SQLite, आदि। |
| Heroku एकीकरण | Heroku PostgreSQL |
| फ्रेमवर्क | Padrino |
| फ्रेमवर्क | Sinatra |
| जेम | Rack |
| जेम | WebMachine |
| वेब सर्वर | Puma |
| वेब सर्वर | Unicorn |
| ORM | DataMapper |
| ORM | Sequel |
| ORM | MongoDB |
| API | Grape |
| API | GraphQL |
| मानक लाइब्रेरी | Net::HTTP |
| पृष्ठभूमि जॉब | Que |
| पृष्ठभूमि जॉब | Sidekiq |
| पृष्ठभूमि जॉब | Delayed Job |
| पृष्ठभूमि जॉब | Resque |
| पृष्ठभूमि जॉब | Shoryuken |
| जेम | Rake |
जैसा कि मैंने कहा, सूची काफी लंबी है, इसलिए हम इस पोस्ट में प्रत्येक टूल में गोता नहीं लगाएंगे।
वेब फ्रेमवर्क और APIs
AppSignal Ruby on Rails, Padrino, और Sinatra में वेब अनुरोधों के इंस्ट्रूमेंटेशन को आउट-ऑफ-द-बॉक्स सपोर्ट करता है। Grape या GraphQL जेम का उपयोग करने वाले APIs भी समर्थित हैं।
Ruby on Rails
Rails के लिए AppSignal एकीकरण अनुरोधों में अपवादों और प्रदर्शन को ट्रैक करके काम करता है। जब किसी अनुरोध के दौरान कंट्रोलर में कोई त्रुटि होती है तो AppSignal इसकी रिपोर्ट करेगा। प्रदर्शन के मुद्दे अनुरोध की अवधि पर आधारित होंगे और घटनाओं की एक समयरेखा बनाएंगे जिसमें विस्तार से बताया जाएगा कि एप्लिकेशन के किन हिस्सों में सबसे अधिक समय लगा।
यहां तक कि HTTP अनुरोधों के लोड बैलेंसर या वेब सर्वर के माध्यम से Rails ऐप पर आने में कितना समय लगा, इसे ट्रैक करना भी संभव है। यदि यह डिफ़ॉल्ट रूप से चालू नहीं है, तो अनुरोध कतार समय ट्रैकिंग हेडर सेट करें और AppSignal स्वचालित रूप से कतार समय का ग्राफ बनाएगा।
GraphQL
AppSignal Ruby के लिए graphql जेम का समर्थन करता है। यह आने वाले हर GraphQL अनुरोध को इंस्ट्रूमेंट करेगा और अनुरोध में सभी घटनाओं का ब्रेकडाउन प्रदान करेगा। आप यह देख पाएंगे कि आपके रिज़ॉल्वर को पार्स, मान्य और निष्पादित करने में कितना समय लगा। ऐप के वेब फ्रेमवर्क और डेटाबेस कॉल की घटनाएं निश्चित रूप से इस ब्रेकडाउन में शामिल हैं।
यह उन लोगों के लिए बहुत अच्छा है जो उन GraphQL क्वेरी को डीबग करना चाहते हैं जो लंबा समय लेती प्रतीत होती हैं, और आप सुनिश्चित नहीं हैं कि मंदी कहां हो सकती है। हमारे असामयिक ट्रिगर्स के बारे में मत भूलना - ये बहुत उपयोगी हो सकते हैं जब क्वेरी समय एक निश्चित सीमा तक पहुंच जाता है।
Sinatra, Padrino और Grape
Sinatra, Padrino और Grape Ruby के लिए वेब और API फ्रेमवर्क हैं जो विभिन्न तरीकों से ऐप का हिस्सा हो सकते हैं। वे या तो एक स्टैंडअलोन ऐप हैं या एक बड़े Rails ऐप पर माउंटेड हैं। ऐप को वेब सर्वर पर कैसे माउंट किया जाता है, इस पर निर्भर करते हुए Sinatra, Padrino और Grape के लिए कुछ अलग इंस्टॉलेशन चरणों की आवश्यकता होती है।
एक बार इंस्टॉल हो जाने पर Sinatra, Padrino, Grape अनुरोध सभी इंस्ट्रूमेंटेड होते हैं: जब ट्रैफिक API से टकराता है तो त्रुटियों और प्रदर्शन मापों की सूचना दी जाती है। प्रत्येक (API) एंडपॉइंट AppSignal में अपनी खुद की कार्रवाई है ताकि आसानी से पता लगाया जा सके कि किस एंडपॉइंट का सामना किस त्रुटि से हुआ। Rails ऐप्स की तरह प्रदर्शन ब्रेकडाउन इस बात की अंतर्दृष्टि प्रदान करता है कि कौन सी डेटाबेस क्वेरी या ऐप के अन्य हिस्से दूसरों की तुलना में धीमे थे।
डेटाबेस
Active Record और अन्य ORMs
यह देखने के लिए कि किसी अनुरोध को डेटाबेस क्वेरी करने में कितना समय लगा, एक घटना विस्तार पृष्ठ खोलें। पृष्ठ के शीर्ष पर अनुरोध में रिकॉर्ड किए गए घटनाओं के प्रकार प्रति समूह टूटे हुए हैं। यहां आप देख सकते हैं कि कुल मिलाकर कितना समय किस प्रकार के ऑपरेशन पर खर्च किया गया था।
यदि हम इस नमूने के प्रदर्शन पर आगे ज़ूम इन करते हैं, तो पृष्ठ पर आगे नीचे आपको अनुरोध में सभी घटनाओं की एक समयरेखा मिलेगी जिस क्रम में वे हुईं। यह आपको प्रत्येक क्वेरी का अवलोकन प्रदान करता है जो निष्पादित की गई थी और कौन सी सबसे लंबी ले रही हैं।
एकीकरण आपको डेटाबेस कॉल के लिए ट्रेसिंग दिखाता है, ताकि आप देख सकें कि कौन सी क्वेरी आपकी बुराई (या प्रतिभा) की जड़ है 😉
N+1 क्वेरी
चिंतित हैं कि अनुरोध में N+1 क्वेरी हो रही हैं और यही इसे धीमा कर रहा है? यदि हम N+1 क्वेरी का पता लगाते हैं तो उन घटनाओं के लिए घटना समयरेखा में एक चेतावनी दिखाई देगी जिनका पता चला था।
Redis
Redis एकीकरण के साथ, आप अपने Redis कॉल को घटना समयरेखा में देखेंगे:
आप Redis को भेजे गए कमांड का नाम और Redis इंस्टेंस का पता भी देख पाएंगे जिससे क्वेरी की गई थी:
यह उन लोगों के लिए बहुत अच्छी खबर है जो Redis कैश पर लंबे समय तक चलने वाले कॉल को डीबग करना चाहते हैं। आप अनुरोधों पर अलर्ट भेजने के लिए एक असामयिक ट्रिगर भी सेट कर सकते हैं जो सुपर लंबे समय तक चलते हैं!
पृष्ठभूमि जॉब
जब भी Sidekiq, Delayed::Job, Resque, Shoryuken और Que के साथ पृष्ठभूमि जॉब कतारबद्ध होती है, AppSignal स्वचालित रूप से त्रुटियों और प्रदर्शन मापों की रिपोर्ट करेगा। सभी Active Job एडाप्टर भी समर्थित हैं, और Sidekiq और Delayed::Job जैसे कुछ पृष्ठभूमि जॉब लाइब्रेरी स्वयं लाइब्रेरी से और भी अधिक मेटाडेटा रिपोर्ट करती हैं।
Action Mailer के साथ ईमेल भेजना
यदि Action Mailer का उपयोग करने वाले Rails मेलर्स deliver_later पर सेट हैं तो उन्हें Active Job के माध्यम से भी रूट किया जाएगा और उसी स्तर के इंस्ट्रूमेंटेशन पर भरोसा किया जा सकता है।
वेबसॉकेट्स
अपने Rails ऐप में Action Cable का उपयोग कर रहे हैं? AppSignal स्वचालित रूप से संदेशों और सब्सक्रिप्शन के लिए त्रुटियों और प्रदर्शन मापों की रिपोर्ट करता है। प्रत्येक संदेश को अलग से इंस्ट्रूमेंट किया जाता है ताकि लंबे समय तक चलने वाले चैनल भी सभी गतिविधि की रिपोर्ट करें। उन्हें प्रति एक्शन समूहीकृत किया जाता है जिससे प्रत्येक व्यक्तिगत एक्शन के प्रदर्शन का स्पष्ट अवलोकन मिलता है।
👋 यदि आप इसे पसंद करते हैं, तो हमारी Ruby प्रदर्शन निगरानी चेकलिस्ट में अन्य Ruby (on Rails) प्रदर्शन लेखों पर एक नज़र डालें।
AppSignal आज़माएं: निगरानी आसान और मीठी बनाई गई 🍪
पिछले 7 वर्षों में, हमने हजारों डेवलपर्स को अपने कोड को स्वचालित रूप से इंस्ट्रूमेंट करने में मदद की है, और हम चाहते हैं कि आप हमें भी आज़माएं। जब आप ऐसा करते हैं, तो बेझिझक संपर्क करें, हम आपको मुफ्त में स्ट्रॉपवाफल्स का एक बॉक्स भी भेजेंगे।
PS. यदि आप एक महान OSS प्रोजेक्ट के साथ दुनिया की मदद कर रहे हैं, तो हम आपको मुफ्त AppSignal अकाउंट के साथ वापस मदद करते हैं। उन रखरखावकर्ताओं को शब्द फैलाएं जिन्हें आप महत्व देते हैं!