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

AppSignal के साथ Ruby on Rails मॉनिटरिंग: परफॉरमेंस और एरर ट्रैकिंग को बूस्ट करें

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

क्योंकि हम डेवलपर्स हैं और बनाए रखने योग्य समाधान पसंद करते हैं (है ना?), हम टूल्स, इंटीग्रेशन्स, और निर्भरताओं के उलझन में भी नहीं पड़ना चाहते जो हमारे लिए सब कुछ ट्रैक करना कठिन बना देते हैं।

इस पोस्ट में, हम एक Ruby on Rails एप्लिकेशन में AppSignal जोड़ेंगे ताकि एप्लिकेशन व्यवहार में स्पष्ट इनसाइट्स मिल सकें।

कोड के साथ फॉलो करने के लिए पूर्वापेक्षाएँ:

  • www.appsignal.com पर एक अकाउंट
  • Docker इंस्टॉल और रनिंग (docker-compose उपयोग के लिए)। *केवल इस पोस्ट में सैंपल एप्लिकेशन का उपयोग करने के लिए आवश्यक

AppSignal सेटअप करना

नोट: यदि आप अपने Rails एप्लिकेशन में AppSignal जोड़ रहे हैं तो आप इस सेक्शन को छोड़ सकते हैं। उस स्थिति में, आप इस पोस्ट भर में Docker से संबंधित निर्देशों या अपने Rails सर्वर को कैसे रीस्टार्ट करें, इसे भी अनदेखा कर सकते हैं — आप इसके बजाय अपने एप्लिकेशन को हमेशा की तरह रीस्टार्ट/रीडिप्लॉय करेंगे।

हम एक सैंपल एप्लिकेशन का उपयोग करके शुरू करेंगे और इसे Docker का उपयोग करके अपनी मशीन पर चलाएंगे।

रिपॉजिटरी को क्लोन करने, निर्भरताएं इंस्टॉल करने, और एप्लिकेशन चलाने के लिए निम्नलिखित कमांड चलाएं:

$ git clone --branch appsignal-setup/start-docker --single-branch https://github.com/choncou/sample_rails_app appsignal-setup $ cd appsignal-setup $ yarn start:compose

जब आप इसे पहली बार चलाते हैं, तो डॉकर इमेजेज बनाने और सभी निर्भरताएं डाउनलोड करने में कुछ समय लग सकता है। एक बार पूरा होने पर, यह Rails सर्वर, PostgreSQL डेटाबेस, और Redis शुरू करेगा। आपको लॉग्स में रिक्वेस्ट्स दिखाई देनी चाहिए और https://localhost:3000/ पर चल रहे एप्लिकेशन को देखना चाहिए।

हमारे सैंपल एप्लिकेशन के बारे में

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

हमारे पास एक Post मॉडल, PostsController, और /posts रूट के माध्यम से एक्सपोज़्ड सभी CRUD एक्शन्स हैं।

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

अंत में, हम बैकग्राउंड जॉब प्रोसेसिंग के लिए Sidekiq का उपयोग कर रहे हैं।

हमारा छोटा ब्लॉगिंग प्लेटफॉर्म पहले से ही कुछ सक्रिय उपयोगकर्ता भी हैं। एक स्क्रिप्ट (./bin/traffic) सर्वर के साथ बैकग्राउंड में चल रही है जो नियमित रूप से एप्लिकेशन पर ट्रैफिक की नकल करने के लिए कुछ रिक्वेस्ट्स करती है।

बस इतना ही। हमने अभी एक उत्पाद जारी किया है, और सब कुछ पूरी तरह से काम करता है...

या, कम से कम यही हम सोचते हैं जब तक हम एप्लिकेशन के परफॉरमेंस के बारे में उपयोगकर्ता रिपोर्ट्स देखना शुरू नहीं करते और उपयोगकर्ताओं को एरर्स का सामना करते हुए नहीं देखते।

तो हम कैसे पता लगाएं कि क्या हो रहा है? जब हम डेवलपमेंट वातावरण में काम कर रहे होते हैं, तो एरर्स में देखना आसान होता है। लेकिन जब हमारा एप्लिकेशन प्रोडक्शन में चल रहा होता है, तो यह कठिन हो जाता है। उन सर्वर लॉग्स के माध्यम से खोजने के अलावा एरर्स खोजने का कोई बेहतर तरीका होना चाहिए।

AppSignal बचाव के लिए!

AppSignal के साथ शुरुआत करना

www.appsignal.com पर अपने अकाउंट में लॉग इन करके AppSignal को अपने एप्लिकेशन में जोड़कर अपनी मॉनिटरिंग यात्रा शुरू करें।

यदि आप एक नए AppSignal उपयोगकर्ता हैं, तो आपको नीचे दिया गया पेज दिखाई देगा जहां एक एप्लिकेशन जोड़ना है (जबकि मौजूदा उपयोगकर्ताओं को 'Add app' पर क्लिक करना होगा)।

"Install for Ruby" चुनें, जो तब हमें पालन करने के लिए कुछ सरल चरण देगा:

  1. अपने Gemfile में जेम जोड़ें

    # Gemfile gem 'appsignal'
  2. bundle install चलाकर जेम इंस्टॉल करें डॉकर कंटेनर के अंदर, जिसे आप yarn compose:sh के साथ एक्सेस कर सकते हैं

    $ yarn compose:sh # हम अब एक डॉकर कंटेनर के अंदर एक बैश कंसोल में हैं $ bundle install # अगली कमांड के लिए इस कंसोल में रहें
  3. AppSignal इंस्टॉल करें

    इंस्टॉलेशन के दौरान, आपको दो प्रॉम्प्ट्स का जवाब देना होगा:

    • Do you want to change how this is displayed in AppSignal? (y/n): n
    • How do you want to configure AppSignal? : 1 इनपुट करें क्योंकि हम केवल एनवायरनमेंट वेरिएबल्स के बजाय एक कॉन्फिग फाइल का उपयोग करेंगे

    AppSignal सेटअप पेज पर दिखाए गए API कुंजी का उपयोग करें:

    $ bundle exec appsignal install  ... ... ##################################### ## AppSignal installation complete ## ##################################### Sending example data to AppSignal... Example data sent! It may take about a minute for the data to appear on https://appsignal.com/accounts Please return to your browser and follow the instructions.

इंस्टॉल स्क्रिप्ट चलाने के बाद, आप अपने ब्राउज़र में देखेंगे कि AppSignal सेटअप पूरा हो गया है। फिर आप अपने डेवलपमेंट वातावरण के लिए AppSignal डैशबोर्ड देखने के लिए 'Go to app' पर जा सकते हैं:

इंस्टॉलेशन कमांड एक config/appsignal.yml बनाता है जो आपको विभिन्न वातावरणों के लिए AppSignal सेटिंग्स कॉन्फिगर करने की अनुमति देता है। आप AppSignal Ruby कॉन्फिगरेशन डॉक्स में अधिक जान सकते हैं।

config/appsignal.yml में आपकी पुश API कुंजी है। आप आमतौर पर इसे इस फाइल से हटा देंगे और इसके बजाय एनवायरनमेंट वेरिएबल का उपयोग करेंगे। इस पोस्ट के लिए, यह आवश्यक नहीं होगा।

हमें एप्लिकेशन को रीस्टार्ट करने की आवश्यकता है ताकि यह सुनिश्चित हो सके कि हमारे परिवर्तन प्रभावी हों क्योंकि हमने एक नया जेम इंस्टॉल किया है। सबसे सरल तरीका है सर्वर चला रहे टर्मिनल विंडो के अंदर ctrl-c के साथ डॉकर कंटेनर्स को रोकना और फिर से डॉकर-कंपोज शुरू करना:

$ yarn start:compose

इसमें कुछ समय लग सकता है क्योंकि जब निर्भरताएं बदलती हैं तो यह डॉकर इमेज को रीबिल्ड करता है।

AppSignal मेन डैशबोर्ड

अब जब हमारे पास AppSignal इंस्टॉल के साथ एप्लिकेशन चल रहा है, तो हम डैशबोर्ड देख सकते हैं। AppSignal पर चल रहे सभी एप्लिकेशन और वातावरण देखने के लिए, आप appsignal.com/accounts पर जा सकते हैं:

एप्लिकेशन नाम पर क्लिक करें, और आप पता लगा सकते हैं कि AppSignal बॉक्स से बाहर क्या मॉनिटर करता है।

कुछ मिनटों के भीतर, आपके ट्रैफिक जेनरेशन स्क्रिप्ट के कारण पहले से ही कुछ डेटा एकत्र किया जाएगा।

मेन डैशबोर्ड से, आप कुछ आवश्यक एप्लिकेशन मेट्रिक्स का अच्छा हाई-लेवल ओवरव्यू प्राप्त कर सकते हैं। अब हम AppSignal के भीतर कुछ अधिक विशिष्ट क्षेत्रों में खुदाई करने जा रहे हैं।

AppSignal में एरर्स डैशबोर्ड

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

इस मामले में, हम बैकट्रेस सेक्शन से देख सकते हैं कि एप्लिकेशन के होमपेज (/) पर app/controllers/pages_controller.rb:7 home पर एक वैलिडेशन एरर हो रही है।

अन्य AppSignal डैशबोर्ड्स

साइडबार में 'Dashboard' के तहत, आप देख सकते हैं कि AppSignal ने हमें पहले से ही कुछ अलग डैशबोर्ड प्रदान किए हैं।

'Overview' डैशबोर्ड हर एप्लिकेशन के लिए उपलब्ध है और प्रदान करता है:

  • आपके एप्लिकेशन की एरर दर
  • थ्रूपुट
  • रिस्पॉन्स टाइम्स
  • अन्य हालिया गतिविधि जिसमें आप अधिक डिटेल्स के लिए खुदाई कर सकते हैं

आपके पास दो मैजिक डैशबोर्ड भी हैं — एक Active Job के लिए और दूसरा Sidekiq के लिए। AppSignal में कई लोकप्रिय फ्रेमवर्क और जेम्स के लिए बिल्ट-इन इंटीग्रेशन्स हैं जो आपके Rails एप्लिकेशन के साथ स्वचालित रूप से काम करते हैं।

इन डैशबोर्ड्स को देखते समय, आप उस इंटीग्रेशन की गतिविधि के लिए प्रासंगिक जानकारी देख सकते हैं। Active Job डैशबोर्ड में, आप प्रत्येक कतार में जॉब्स की संख्या, प्रत्येक जॉब की रिकॉर्ड की गई अवधि, और बहुत कुछ के लिए ग्राफ़ देखेंगे। एक नज़र डालें!

आपके ऐप का परफॉरमेंस

Performance → Issue list के अंदर, आप उन एक्शन्स की सूची देख सकते हैं जिन्हें AppSignal मापता है। ये माप आपके एप्लिकेशन के किन हिस्सों में बहुत अधिक परफॉरमेंस खपत होती है, इस बारे में कुछ मूल्यवान इनसाइट्स प्रदान कर सकते हैं।

उदाहरण के लिए, PostsController#index एक्शन के लिए इश्यू पर क्लिक करके, हम कंट्रोलर के परफॉरमेंस में गहराई से गोता लगा सकते हैं। आप जल्दी से देख सकते हैं कि सबसे अधिक समय कहां खर्च होता है, या सबसे अधिक ऑब्जेक्ट एलोकेशन कहां होते हैं।

AppSignal से क्विक विन्स और हिडन जेम्स: Puma का उपयोग करना

AppSignal से कुछ हिडन जेम्स (Ruby प्रकार के नहीं) हैं जिन्हें आप बिना अधिक प्रयास के प्राप्त कर सकते हैं। आइए देखें कि हम एक उदाहरण के साथ इन्हें कितनी आसानी से चालू और चला सकते हैं।

config/puma.rb के अंदर, निम्नलिखित लाइन जोड़ें:

# config/puma.rb plugin :appsignal

एप्लिकेशन को रीस्टार्ट करने से पहले, docker-compose.yml में लाइन 12 के बाद निम्नलिखित एनवायरनमेंट वेरिएबल जोड़ें:

# docker-compose.yml APP_REVISION: "latest_version_tag"

क्योंकि हमने Puma सर्वर कॉन्फिग और अपने डॉकर-कंपोज कॉन्फिग को अपडेट किया है, हमें ctrl-c के साथ डॉकर कंटेनर्स को रीस्टार्ट करने और फिर से yarn start:compose के साथ डॉकर-कंपोज शुरू करने की आवश्यकता होगी।

अपने नए इनसाइट्स को ट्रैक करना

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

पहला है नया स्वचालित रूप से जेनरेटेड Puma मेट्रिक्स मैजिक डैशबोर्ड। AppSignal के Puma के साथ बिल्ट-इन इंटीग्रेशन के कारण, अब हमारे पास एप्लिकेशन सर्वर की गतिविधि के बारे में जानकारी है। कॉन्फिग फाइल में plugin निर्दिष्ट करने से एक मिनटली प्रोब सक्रिय हो गया है जो Puma सर्वर के बारे में मेट्रिक्स रिपोर्ट करता है।

अंत में, पूरे AppSignal डैशबोर्ड में अब डेप्लॉयमेंट मार्कर हैं। आप APP_REVISION एनवायरनमेंट वेरिएबल को किसी भी मान पर सेट कर सकते हैं जो आपके एप्लिकेशन के वर्तमान संस्करण को निर्धारित करने में मदद करता है, जैसे गिट कमिट SHA।

आप AppSignal डैशबोर्ड में 'Deploys' सेक्शन देखकर अपने डेप्लॉयमेंट्स का इतिहास भी देख सकते हैं और इनसाइट्स (जैसे Errors/Performance इश्यू लिस्ट्स) को डेप्लॉय द्वारा फ़िल्टर कर सकते हैं। देखें कि डेप्लॉय्स के बीच परफॉरमेंस या विश्वसनीयता कैसे बदली है, जिससे यह पता लगाना थोड़ा आसान हो जाता है कि किन परिवर्तनों ने एक नया बग पेश किया हो सकता है।

अगला: Ruby ऐप्स के लिए कस्टम इंस्ट्रूमेंटेशन और मॉनिटरिंग

इस पोस्ट ने दिखाया है कि आप अपने एप्लिकेशन में AppSignal को कैसे सेटअप और उपयोग कर सकते हैं ताकि जंगल में आपके कोड की दृश्यता बढ़ाने में मदद मिल सके।

हमने दिखाया है कि AppSignal कैसे स्वचालित रूप से Rails और एप्लिकेशन की कुछ निर्भरताओं में इंटीग्रेट होता है, जैसे Sidekiq और Puma। AppSignal बॉक्स से बाहर कई और Ruby फ्रेमवर्क और जेम्स के साथ काम करता है। आप यहां AppSignal के Ruby इंटीग्रेशन की पूरी सूची पा सकते हैं।

इस श्रृंखला का भाग 2 कवर करेगा कि अपने Ruby on Rails एप्लिकेशन में कस्टम इंस्ट्रूमेंटेशन और मॉनिटरिंग कैसे जोड़ें ताकि गहरी इनसाइट्स मिल सकें।

अगली बार तक!

P.S. यदि आप Ruby Magic पोस्ट्स को प्रेस से निकलते ही पढ़ना चाहते हैं, तो हमारे Ruby Magic न्यूज़लेटर को सब्सक्राइब करें और कभी भी एक भी पोस्ट मिस न करें!


  1. Angular को Rails 5 के साथ इंटीग्रेट करना: एक सहज फुल-स्टैक दृष्टिकोण Angular को Rails 5 के साथ इंटीग्रेट करना: एक सहज फुल-स्टैक दृष्टिकोण

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

  1. शक्तिशाली रूबी CLI टूल्स बनाएं: चरण-दर-चरण गाइड शक्तिशाली रूबी CLI टूल्स बनाएं: चरण-दर-चरण गाइड

    बहुत से लोग भूल जाते हैं कि रूबी वेब एप्लिकेशन के अलावा भी चीजें कर सकता है। इस लेख में, मैं आपको दिखाना चाहता हूं कि इस कमी को दूर करने के लिए कमांड-लाइन एप्लिकेशन कैसे बनाया जाए! यहाँ कुछ कमांड-लाइन एप्लिकेशन हैं जिनसे आप परिचित हो सकते हैं: psql rails bundler gem git कमांड-लाइन एप्लिकेशन बनाने

  1. Ruby on Rails में महारत: इस सिद्ध फ्रेमवर्क के साथ शक्तिशाली वेब ऐप्स तेजी से बनाएं Ruby on Rails में महारत: इस सिद्ध फ्रेमवर्क के साथ शक्तिशाली वेब ऐप्स तेजी से बनाएं

    Ruby on Rails (कभी-कभी RoR) सबसे लोकप्रिय ओपन-सोर्स वेब एप्लिकेशन फ्रेमवर्क है। यह Ruby प्रोग्रामिंग भाषा के साथ बनाया गया है। आप सिंपल से लेकर कॉम्प्लेक्स तक एप्लिकेशन बनाने में मदद के लिए Rails का उपयोग कर सकते हैं, Rails के साथ आप जो हासिल कर सकते हैं उसकी कोई सीमा नहीं है! फ्रेमवर्क क्या है? फ्र