इस गाइड में, हम Ruby on Rails एप्लिकेशन में प्रदर्शन बॉटलनेक्स का पता लगाने, निदान करने और हटाने के लिए AppSignal का उपयोग करेंगे और उचित ट्रेसिंग को नियोजित करेंगे। ट्रेसिंग सेटअप से लेकर त्रुटियों को कैप्चर करने और लॉगिंग तक, हमने आपको कवर किया है।
हम यह सुनिश्चित करेंगे कि हमारा एप्लिकेशन अब तक की तुलना में अधिक सुचारू रूप से चलता है, यहां तक कि सबसे भारी लोड के तहत भी!
लेकिन पहले, आइए जल्दी से छू लें कि ट्रेसिंग को कैसे परिभाषित किया जाए और इसके लाभ क्या हैं।
ट्रेसिंग क्या है?
ट्रेसिंग एक एप्लिकेशन के माध्यम से एक अनुरोध और ऑपरेशन का पालन करने की प्रक्रिया है। Ruby एप्लिकेशन में, ट्रेसिंग निष्पादन प्रवाह को कैप्चर करता है, विभिन्न घटकों के प्रदर्शन में गहरी अंतर्दृष्टि प्रदान करता है।
ट्रेसिंग के लाभ
ट्रेसिंग के कई लाभ हैं, जिनमें शामिल हैं:
- प्रदर्शन अनुकूलन: ट्रेसिंग एप्लिकेशन के धीमे हिस्सों की पहचान करता है जिनमें प्रदर्शन सुधार की आवश्यकता होती है।
- बेहतर डीबगिंग: विस्तृत ट्रेस आपको कोड मुद्दों को जल्दी से इंगित करने और उनके कारणों को निर्धारित करने की अनुमति देते हैं।
- बेहतर विश्वसनीयता: ट्रेसिंग एप्लिकेशन व्यवहार को ट्रैक करता है, अधिक विश्वसनीय और प्रभावी सिस्टम ऑपरेशन सुनिश्चित करता है।
एक परिदृश्य: हमारा पिछड़ता Rails ऐप
मान लें कि यह ब्लैक फ्राइडे है, साल का सबसे बड़ा खरीदारी दिवस। आपका Rails-आधारित ई-कॉमर्स प्लेटफॉर्म हजारों उत्सुक ग्राहकों के साथ गूंज रहा है, उनकी कार्ट उत्पादों से भरी हुई हैं, चेकआउट के लिए तैयार। सब कुछ सही लगता है — जब तक सिस्टम पिछड़ना शुरू नहीं करता।
लेनदेन विफल होते हैं। परित्यक्त कार्ट्स आसमान छूते हैं। घबराहट होती है। यह हर डेवलपर का बुरा सपना है। लेकिन क्या होगा अगर आपके पास एक गुप्त हथियार होता? एक उपकरण जो न केवल आपको वास्तविक समय में मुद्दों के प्रति सचेत करता है बल्कि आपके एप्लिकेशन के दिल में गहराई से गोता लगाता है, हर अनुरोध, हर डेटाबेस क्वेरी, और हर बैकग्राउंड जॉब को ट्रेस करता है? AppSignal दर्ज करें।
AppSignal का उपयोग करके Ruby on Rails ऐप्स के लिए ट्रेसिंग कैसे सेट करें
AppSignal का उपयोग करके ट्रेसिंग की शक्ति का प्रदर्शन करने के लिए, मैंने एक नमूना Rails ई-कॉमर्स प्रोजेक्ट बनाया है जिसे हम AppSignal के साथ एकीकृत कर सकते हैं। यह आपको प्रत्यक्ष रूप से देखने में मदद करेगा कि ट्रेसिंग कैसे समस्याओं की पहचान और समाधान कर सकती है।
पूर्वापेक्षाएँ
- Ruby संस्करण: AppSignal Ruby 2.5 और उससे ऊपर के साथ संगत है।
- AppSignal खाता: AppSignal पर एक खाता बनाएं (फ्री ट्रायल उपलब्ध है)
अब आप AppSignal का उपयोग करके अपने Ruby एप्लिकेशन में ट्रेसिंग सेट करने के लिए तैयार हैं।
चरण 1: AppSignal जेम इंस्टॉल करें
यहां जेम है:
बस bundle install चलाएं:
चरण 2: AppSignal इनिशियलाइज़ करें
आवश्यक कॉन्फिगरेशन फाइल सेट करने के लिए AppSignal इंस्टॉलेशन कमांड चलाएं।
अपने टर्मिनल पर प्रॉम्प्ट का पालन करें। आप AppSignal को अपने ऐप में कॉन्फिगर करने के लिए एक कॉन्फिग फाइल या एनवायरनमेंट वेरिएबल्स चुन सकते हैं। हम कॉन्फिग फाइल विकल्प चुनेंगे।
यह कमांड आपके कॉन्फिग डायरेक्टरी में एक appsignal.yml कॉन्फिगरेशन फाइल उत्पन्न करेगा। यह फाइल आपके AppSignal पुश API कुंजी और कुछ बुनियादी कॉन्फिगरेशन सेटिंग्स के साथ प्री-फिल्ड होगी।
चरण 3: AppSignal कॉन्फिगर करें
सुनिश्चित करें कि config/appsignal.yml आपके वातावरण के लिए सही ढंग से कॉन्फिगर किया गया है। इस फाइल में विभिन्न वातावरण (डेवलपमेंट, टेस्ट, प्रोडक्शन) के लिए कॉन्फिगरेशन सेटिंग्स हैं। उन कार्यों को अनदेखा करें जो कम मूल्य प्रदान करते हैं।
और ता दा! आप पूरी तरह से सेट हैं:

हमारे Ruby on Rails एप्लिकेशन को इंस्ट्रूमेंट करना
AppSignal हमारे Rails एप्लिकेशन के कई प्रमुख घटकों को स्वचालित रूप से इंस्ट्रूमेंट कर सकता है, जैसे डेटाबेस क्वेरी और वेब अनुरोध। हम अपने एप्लिकेशन के विशिष्ट भागों को ट्रेस करने के लिए कस्टम इंस्ट्रूमेंटेशन भी जोड़ सकते हैं।
कस्टम Rails इंस्ट्रूमेंटेशन
हमारे कोड के विशिष्ट भागों को इंस्ट्रूमेंट करने के लिए, हम Appsignal.instrument मेथड के साथ कोड की कुछ पंक्तियों को लपेटेंगे। इस मेथड का उपयोग कोड के विशिष्ट ब्लॉक्स को ट्रेस करने के लिए किया जा सकता है, जैसे कंट्रोलर एक्शन या बैकग्राउंड जॉब के अधिक जटिल भाग।
इस एंडपॉइंट पर अनुरोध भेजने से N+1 क्वेरी रिपोर्ट होगी।
N+1 समस्या तब होती है जब हमारा एप्लिकेशन एक संग्रह में प्रत्येक ऑब्जेक्ट के लिए संबंधित रिकॉर्ड लोड करने के लिए कई डेटाबेस क्वेरी बनाता है, एकल, कुशल क्वेरी का उपयोग करने के बजाय। यह प्रदर्शन को काफी कम कर सकता है, खासकर बड़े डेटासेट के साथ काम करते समय।
इस मामले में समाधान सभी ऑर्डर्स क्वेरी को उत्सुकता से लोड करना है — बस इस कोड को बदलें:
निम्नलिखित के साथ:
AppSignal के साथ Ruby त्रुटियों को एकत्र करना और रिपोर्ट करना
AppSignal आपको Appsignal.set_error मेथड का उपयोग करके एप्लिकेशन त्रुटियों को कैप्चर और रिपोर्ट करने की अनुमति देता है।
ऑर्डर कंट्रोलर इंडेक्स एक्शन में त्रुटि को कैप्चर और रिपोर्ट करने का एक उदाहरण यहां दिया गया है:
इस उदाहरण में, हम एक विशिष्ट कंट्रोलर एक्शन के भीतर कस्टम त्रुटि हैंडलिंग का प्रदर्शन करते हैं। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि AppSignal डिफ़ॉल्ट रूप से त्रुटियों की रिपोर्ट करता है, इसलिए Appsignal.set_error के साथ स्पष्ट त्रुटि रिपोर्टिंग आमतौर पर आवश्यक नहीं होती है।
सभी कंट्रोलर एक्शन में सुसंगत और केंद्रीकृत त्रुटि हैंडलिंग के लिए, कंट्रोलर स्तर पर rescue_from का उपयोग करने की सिफारिश की जाती है। यह दृष्टिकोण सुनिश्चित करता है कि आपके कंट्रोलर एक्शन में किसी भी अनहैंडल्ड एक्सेप्शन को ठीक से रिपोर्ट और प्रबंधित किया जाता है।
यहां एक उदाहरण है कि आप इसे कैसे लागू कर सकते हैं:
Error > Issue list टैब पर, हम सभी त्रुटियों की सूची, प्रत्येक मुद्दे की स्थिति, और कितने समय पहले त्रुटि हुई देख सकते हैं:

RuntimeError पर क्लिक करने पर, हम त्रुटि लॉग और कोड लाइन देख सकते हैं जो इस त्रुटि को ट्रिगर कर रही है:

समाप्त करने से पहले कुछ और उन्नत ट्रेसिंग तकनीकों पर बात करते हैं।
उन्नत ट्रेसिंग तकनीकें
हम अपने ई-कॉमर्स ऐप के ऑर्डर एंडपॉइंट पर कुछ उन्नत ट्रेसिंग तकनीकों को लागू करेंगे।
ये तकनीकें हमें उच्च-ट्रैफिक वातावरण को कुशलतापूर्वक प्रबंधित करने, डेटा गोपनीयता सुनिश्चित करने, और ट्रेस डेटा तक सुरक्षित पहुंच सुनिश्चित करने में मदद करेंगी।
उच्च ट्रैफिक उपयोग के मामले
उच्च-थ्रूपुट वातावरण में, हर अनुरोध के लिए ट्रेस डेटा एकत्र करने से महत्वपूर्ण ओवरहेड हो सकता है। सैंपलिंग केवल अनुरोधों के एक सबसेट के लिए ट्रेस डेटा एकत्र करके इसे कम करने में मदद करता है।
लेनदेन में मेटाडेटा जोड़ना
आप टैग्स और सैंपल डेटा का उपयोग करके त्रुटियों और प्रदर्शन मुद्दों पर अतिरिक्त संदर्भ प्रदान कर सकते हैं। यह जानकारी जोड़ने में मदद कर सकता है जो पहले से ही अनुरोध, सत्र, या वातावरण पैरामीटर्स का हिस्सा नहीं है। अतिरिक्त मेटाडेटा पास करने और जोड़ने के तरीके के बारे में और पढ़ें।
अतुल्यकालिक प्रसंस्करण
अतुल्यकालिक प्रसंस्करण उन कार्यों को संभालने के लिए उपयोग की जाने वाली एक सामान्य तकनीक है जो अनुरोध-प्रतिक्रिया चक्र के भीतर किए जाने के लिए बहुत समय लेने वाली हैं, जैसे ईमेल भेजना, बैकग्राउंड जॉब प्रोसेस करना, और बड़े डेटा आयात को संभालना। Ruby on Rails एप्लिकेशन आमतौर पर इन कार्यों को प्रबंधित करने के लिए Sidekiq, Resque, या Delayed Job जैसे बैकग्राउंड जॉब लाइब्रेरी का उपयोग करते हैं।
AppSignal Active Job, DelayedJob, Shoryuken, Sidekiq, और Que जैसे लाइब्रेरी के साथ निर्बाध रूप से एकीकृत होता है ताकि आपके बैकग्राउंड जॉब्स के प्रदर्शन और त्रुटियों में अंतर्दृष्टि प्रदान की जा सके।
सुरक्षा विचार
सुरक्षा किसी भी प्रोडक्शन-रेडी एप्लिकेशन का एक बहुत महत्वपूर्ण हिस्सा है। हमें यह सुनिश्चित करने की आवश्यकता है कि संवेदनशील डेटा ट्रेस डेटा में शामिल न हो ताकि उपयोगकर्ता गोपनीयता बनी रहे। फिल्टर पैरामीटर्स के मान AppSignal को प्रेषित होने पर [FILTERED] से बदल दिए जाएंगे।
आइए config/appsignal.yml को संशोधित करें ताकि कई संवेदनशील अनुरोध पैरामीटर्स शामिल हों जिन्हें मास्क करने की आवश्यकता है।
यदि आप Rails filter_parameters कॉन्फिग विकल्प का उपयोग करते हैं, तो AppSignal अपने कॉन्फिग को Rails के कॉन्फिग के साथ मर्ज करेगा, इसलिए इसे दो बार कॉन्फिगर करने की कोई आवश्यकता नहीं है।
इन उन्नत ट्रेसिंग तकनीकों को लागू करके, आप उच्च-ट्रैफिक वातावरण को कुशलतापूर्वक प्रबंधित कर सकते हैं और संवेदनशील डेटा की गोपनीयता सुनिश्चित कर सकते हैं। फिल्टर पैरामीटर्स पर और पढ़ें।
समापन
हमने देखा कि AppSignal का उपयोग करके Ruby ऐप के लिए ट्रेसिंग सेट करना ट्रेसिंग फंडामेंटल्स को समझने, अपने एप्लिकेशन को तैयार करने, और चरण-दर-चरण सेटअप प्रक्रिया का पालन करने पर निर्भर करता है। उन्नत विधियों और डीबगिंग तकनीकों का उपयोग तब ट्रेसिंग को बढ़ाने के लिए किया जा सकता है।
विकास और रखरखाव चक्रों में नियमित रूप से ट्रेसिंग लागू करने से उच्च प्रदर्शन और विश्वसनीयता प्राप्त होती है। आज ही AppSignal के साथ शुरू करें अपने Ruby एप्लिकेशन में उन्नत निगरानी और गहरी प्रदर्शन अंतर्दृष्टि के लिए।
हैप्पी कोडिंग!
Daniel Amah
हमारे अतिथि लेखक Daniel एक प्रिंसिपल सॉफ्टवेयर इंजीनियर और टेक्निकल फाउंडर हैं, जिनके पास Ruby on Rails, React, और AI-पावर्ड आर्किटेक्चर का उपयोग करके स्केलेबल वेब और मोबाइल प्लेटफॉर्म बनाने का एक दशक से अधिक का अनुभव है। वे Taskclan के निर्माता हैं और मीडियम और लिंक्डइन पर इंजीनियरिंग लीडरशिप, डेवलपर वर्कफ्लो, और स्टार्टअप एक्जीक्यूशन के बारे में अक्सर लिखते हैं।
Daniel Amah के सभी आलेख