इस आलेख श्रृंखला के पहले भाग में, हमने DigitalOcean के ऐप प्लेटफॉर्म पर एक सरल Ruby on Rails एप्लिकेशन तैनात किया। हमने एक Rails ऐप को AppSignal से भी जोड़ा, यह देखते हुए कि सरल त्रुटियों को AppSignal के Errors डैशबोर्ड में कैसे ट्रैक और प्रदर्शित किया जाता है।
इस श्रृंखला के इस भाग में, हम आपके Ruby on Rails एप्लिकेशन के लिए AppSignal का उपयोग करके निम्नलिखित सेट अप करने में गोता लगाएंगे:
- प्रदर्शन निगरानी
- Rails बैकग्राउंड जॉब्स निगरानी, जिसमें सरल API कॉल्स की निगरानी कैसे करें शामिल है
- लॉगिंग
- सूचना अलर्ट
आइए इसमें गोता लगाएं!
AppSignal का उपयोग करके Rails ऐप प्रदर्शन की निगरानी
जब आपका अपटाइम मॉनिटर दिखाता है कि आपका ऐप चालू है, तो यह सोचना लुभावना हो सकता है कि सब कुछ ठीक है। लेकिन, वास्तव में, हुड के नीचे परेशानी पैदा हो सकती है धीमी प्रक्रियाओं, अनअप्टिमाइज़्ड डेटाबेस क्वेरीज़, और लंबे समय तक चलने वाले सर्विस कॉल्स के रूप में।
यह एक बहुत महत्वपूर्ण मामला है जब आप मानते हैं कि धीमी गति से लोड होने वाले वेब पेज और कम विजिटर रूपांतरण दर के बीच एक संबंध है। संक्षेप में, यदि अनियंत्रित छोड़ दिया जाए तो वे धीमी चलने वाली प्रक्रियाएं आपको बहुत खर्च करेंगी। लेकिन Ruby on Rails ऐप में इतने सारे चलते हुए हिस्सों के साथ, महत्वपूर्ण प्रश्न हैं: आपको क्या देखना चाहिए, और कहां?
यहीं AppSignal खेल में आता है। आइए देखें कि आप अपने Rails ऐप के प्रदर्शन पर नज़र रखने के लिए AppSignal का उपयोग कैसे कर सकते हैं।
प्रतिक्रिया समय ट्रैक करना
डिफ़ॉल्ट डैशबोर्ड से, AppSignal दो ग्राफ प्रदान करता है जो आपको इस बात का त्वरित अवलोकन दे सकते हैं कि आपका Rails ऐप कितना धीमा (या तेज़) चल रहा है: थ्रूपुट और प्रतिक्रिया समय ग्राफ।

- थ्रूपुट - यह मूल रूप से मापता है कि आपका ऐप वर्तमान में प्रति सेकंड कितने अनुरोध प्रोसेस कर रहा है (इसे इस बात से भ्रमित न करें कि आपका ऐप कुल मिलाकर प्रति सेकंड कितने अनुरोध संभाल सकता है)। अंगूठे का बुनियादी नियम है: प्रति सेकंड जितने अधिक अनुरोध, उतना बेहतर। हालांकि, यदि आपका ऐप सर्वर प्रति सेकंड बहुत अधिक अनुरोधों को संभालता है, तो सर्वर संसाधनों को इसे संभालने के लिए स्केल करने का समय हो सकता है।
- प्रतिक्रिया समय - मिलीसेकंड में एक ब्राउज़र प्रतिक्रिया द्वारा लिया गया औसत समय। प्रतिक्रिया जितना अधिक समय लेती है, आपका ऐप उतना ही खराब चल रहा है। यहां अंगूठे का एक अच्छा नियम यह है कि यदि आपके Rails वेब ऐप में सब-100ms प्रतिक्रिया समय है, तो आप इसे तेज़ मान सकते हैं, जबकि 300ms+ प्रतिक्रिया समय को धीमा माना जा सकता है।
अब, मान लें कि हम सात-दिन की विंडो पर अपने ऐप के प्रतिक्रिया समय और थ्रूपुट को ट्रैक करना चाहते हैं। यह करना बहुत आसान है — बस बाएं साइड मेनू पर स्थित Performance के तहत Graphs सब-मेनू पर जाएं, फिर ग्राफ के शीर्ष पर समय फिल्टर बटन का उपयोग करें, जैसा कि नीचे दिखाया गया है:

इसके साथ, आप आसानी से देख सकते हैं कि क्या आपका ऐप कुछ दिनों दूसरों की तुलना में धीमा चलता है।
इस दृश्य पर रहते हुए, Event groups ग्राफ को देखना भी महत्वपूर्ण है, जो Response time और Throughput ग्राफ के नीचे स्थित है:

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

खर्च कंट्रोलर की इंडेक्स मेथड में एक N+1 क्वेरी को हाइलाइट किया गया है।
यदि हम इश्यू लिंक पर क्लिक करके आगे खोदते हैं, तो हमें इस तरह एक Issue details स्क्रीन मिलती है:

ध्यान दें कि AppSignal मुद्दे की व्याख्या प्रदान करता है, जिसमें इससे निपटने के तरीके को दिखाने वाले अधिक विस्तृत ब्लॉग पोस्ट का लिंक शामिल है।
आइए आगे बढ़ें और जानें कि AppSignal बैकग्राउंड जॉब्स के साथ आपकी कैसे मदद करता है।
AppSignal के साथ Rails बैकग्राउंड जॉब्स पर नज़र रखना
बैकग्राउंड जॉब्स कई प्रोडक्शन Ruby on Rails एप्लिकेशन में एक सामान्य विशेषता है, चुनने के लिए विभिन्न जॉब क्यू प्रोसेसिंग जेम्स और लाइब्रेरीज़ के साथ।
AppSignal Sidekiq, Que, Delayed Job, Resque, और अन्य सहित विभिन्न बैकग्राउंड जॉब प्रोसेसिंग लाइब्रेरीज़ को ट्रैक और मॉनिटर करने का समर्थन करता है।
मान लें कि हम एक सुविधा चाहते हैं जहां उपयोगकर्ताओं को उनके डैशबोर्ड में दैनिक मुद्रा विनिमय दरें मिलें।
इसके लिए काम करने के लिए, हमें ऐसी दरें प्रदान करने वाली सेवा के लिए एक API कॉल की आवश्यकता है (हम एक का उपयोग करेंगे जिसे बहुत अधिक अग्रिम कॉन्फिगरेशन या भुगतान की आवश्यकता नहीं है, जैसे यह, मुद्रा दरें लाने के लिए)। हमें इस सेवा को नियमित अंतराल पर कॉल करने के लिए एक बैकग्राउंड जॉब की भी आवश्यकता है।
खर्च ट्रैकर ऐप में हम जिस बैकग्राउंड प्रोसेसिंग जेम का उपयोग करेंगे वह GoodJob है, लेकिन आप जो चाहें उपयोग करने के लिए स्वतंत्र हैं।
दरें लाने के लिए एक बैकग्राउंड जॉब बनाएं:
और फिर GoodJob को इस जॉब के लिए हर कुछ मिनट में एक क्रॉन चलाने के लिए सेट करें (या आप जैसे फिट देखें)। AppSignal स्वचालित रूप से बैकग्राउंड सेवा की उपस्थिति का पता लगाता है और एक निफ्टी फिल्टर शामिल करता है ताकि आप इसे डिफ़ॉल्ट वेब डैशबोर्ड से अलग कर सकें:

बहुत अधिक टूलिंग के बिना, AppSignal API कॉल्स का भी पता लगाएगा और किसी भी मुद्दे पर नज़र रखेगा:

यदि आप AppSignal के साथ Rails बैकग्राउंड जॉब्स की निगरानी में गहराई से गोता लगाना चाहते हैं, तो मैं आपको डॉक्यूमेंटेशन देखने की सलाह देता हूं। अभी के लिए, आइए अपटाइम निगरानी पर अपना ध्यान दें।
अपटाइम निगरानी
एक और मामला जो कई Rails डेवलपर्स को चिंतित करता है, वह है उनके एप्लिकेशन की अंतिम उपयोगकर्ताओं के लिए निरंतर उपलब्धता। कोई भी डाउनटाइम राजस्व की हानि और अन्य नकारात्मक परिणामों का कारण बन सकता है।
फिर भी, आप मैन्युअल रूप से अपने ऐप की अपटाइम स्थिति को पोल नहीं करना चाहेंगे। आप AppSignal का उपयोग करके अपटाइम निगरानी सेट अप कर सकते हैं।
इसे सेट अप करना बहुत आसान है। बाएं साइड मेनू में Uptime monitoring लिंक पर क्लिक करके शुरू करें।
फिर, जब आप create uptime monitor बटन पर क्लिक करते हैं, तो आपको नीचे दिखाए गए के समान एक डायलॉग मिलना चाहिए:


सबसे महत्वपूर्ण सेटिंग्स जोड़कर अपने अपटाइम मॉनिटर को पूरा करें:
- नाम - अपने अपटाइम मॉनिटर को एक उपयुक्त नाम दें।
- URL - अपटाइम रूट का पूरा URL प्रदान करें। Rails 7.1 से शुरू होकर, डिफ़ॉल्ट अपटाइम रूट https://your-app-domain/up है।
- क्षेत्र - उन क्षेत्रों का चयन करें जहां आप अपटाइम की जांच करना चाहते हैं।
- सूचना - अलर्ट प्राप्त करने के लिए सूचना चैनल/चैनल्स चुनें।
इसे पूरा करने के साथ, आगे बढ़ें और मॉनिटर बनाएं!
AppSignal अपटाइम मॉनिटर के साथ एक बात ध्यान देने योग्य है कि चूंकि पोलिंग लगभग हर मिनट या उसके आसपास की जाती है, इसलिए अपनी योजना की सीमाओं को हिट करना बहुत आसान है। लेकिन इसका एक बहुत अच्छा समाधान है जिसके बारे में आप उनके डॉक्स में अधिक पढ़ सकते हैं।
अपटाइम निगरानी परत को पूरा करने के लिए एक और महत्वपूर्ण सुविधा पर जाने से पहले: फ्री पब्लिक स्टेटस पेज।
creating a public status page लिंक पर क्लिक करें जैसा कि नीचे दिखाया गया है:

फिर New status page बटन पर क्लिक करें, जो आपको यहां लाता है:


आगे बढ़ें और सभी आवश्यक जानकारी भरें। ध्यान दें कि यदि आप एक कस्टम डोमेन का उपयोग करते हैं, तो आपको अपने कस्टम डोमेन की DNS सेटिंग्स में cname.appsignal-status.com पर इंगित करने वाला एक CNAME डायरेक्टिव जोड़ना होगा।
AppSignal के साथ लॉगिंग
लॉगिंग AppSignal में एक अपेक्षाकृत नई सुविधा है, लेकिन एक जो समय पर और स्वागत योग्य है। AppSignal का उपयोग करके, आपको एप्लिकेशन निगरानी और लॉगिंग को अलग सेवाओं के रूप में चलाने की आवश्यकता नहीं है।
लॉगिंग के साथ शुरू करने के लिए, सुनिश्चित करें कि आप AppSignal जेम का नवीनतम संस्करण चला रहे हैं। यदि आपके पास जेम का पुराना संस्करण है, तो इसे इसके साथ अपडेट करें:
फिर एक नया इनिशियलाइज़र बनाएं और इसे इस तरह संपादित करें:
अब आप अपने ऐप के लॉग्स को ऐसे एक्सेस कर सकते हैं:

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

- मेट्रिक - मेरे मामले में, मुझे मेमोरी उपयोग में दिलचस्पी है, लेकिन आप अपने उपयोग के मामले के लिए विशिष्ट किसी अन्य मेट्रिक को चुन सकते हैं।
- ट्रिगर विवरण - यहां, आप अपने ट्रिगर के लिए प्रासंगिक विवरण कॉन्फिगर करेंगे। मेरे मामले में, ट्रिगर तब फायर होगा जब होस्ट मेमोरी 200MB से नीचे चली जाएगी।
कस्टम मेट्रिक्स
AppSignal आपको कस्टम मेट्रिक्स को कैप्चर और विज़ुअलाइज़ करने के उपकरण भी देता है। यह सुविधा अकेले एक पूरे आलेख की हकदार है। आप इसके बारे में How to Monitor Custom Metrics with AppSignal में सब कुछ पढ़ सकते हैं और AppSignal के डॉक्स भी देख सकते हैं।
समापन
इस आलेख श्रृंखला के भाग एक में, हमने DigitalOcean पर होस्ट किए गए एक Rails ऐप को सेट अप किया और AppSignal का उपयोग करके त्रुटियों के लिए इसकी निगरानी की।
इस दूसरे और अंतिम भाग में, हमने आपके Rails ऐप के लिए AppSignal की कुछ शानदार विशेषताओं को देखा, जिसमें प्रदर्शन निगरानी, अपटाइम निगरानी, लॉगिंग, और बहुत कुछ शामिल है।
AppSignal में इससे कहीं अधिक है जिसे इस आलेख श्रृंखला द्वारा प्रभावी ढंग से कवर किया जा सकता है। मैं आपको अपने Rails ऐप के लिए इसे देखने के लिए अत्यधिक प्रोत्साहित करता हूं।
हैप्पी कोडिंग!
P.S. यदि आप Ruby Magic पोस्ट पढ़ना चाहते हैं जैसे ही वे प्रेस से निकलते हैं, तो हमारे Ruby Magic न्यूज़लेटर की सदस्यता लें और कभी भी एक भी पोस्ट मिस न करें!