उत्पादन वातावरण में किसी एप्लिकेशन को चलाते और बनाए रखते समय, हम एप्लिकेशन के व्यवहार के बारे में आश्वस्त महसूस करना चाहते हैं और जानना चाहते हैं कि यह कब अपेक्षित रूप से काम नहीं कर रहा है। कम से कम, हम पूरे एप्लिकेशन में त्रुटियों को ट्रैक करना, प्रदर्शन की निगरानी करना और विशिष्ट मीट्रिक एकत्र करना चाहते हैं।
क्योंकि हम डेवलपर हैं और बनाए रखने योग्य समाधान पसंद करते हैं (ठीक है?), हम टूल, एकीकरण और निर्भरता की गड़बड़ी में भी समाप्त नहीं होना चाहते हैं जो हमारे लिए हर चीज का ट्रैक रखना कठिन बना देता है।
इस पोस्ट में, हम अनुप्रयोग व्यवहार में स्पष्ट अंतर्दृष्टि देने में मदद करने के लिए रेल अनुप्रयोग पर रूबी में AppSignal जोड़ेंगे।
यदि आप कोड के साथ पालन करना चाहते हैं तो आवश्यक शर्तें:
- www.appsignal.com पर एक खाता
- डॉकर स्थापित और चल रहा है(
docker-compose
. का उपयोग करने के लिए) ).*इस पोस्ट में नमूना आवेदन का उपयोग करने पर ही आवश्यक है
AppSignal सेट करना
नोट :यदि आप अपने स्वयं के रेल एप्लिकेशन में AppSignal जोड़ रहे हैं तो आप इस अनुभाग को छोड़ सकते हैं। उस स्थिति में, आप डॉकर से संबंधित निर्देशों या पोस्ट के दौरान अपने रेल सर्वर को पुनरारंभ करने के तरीके को भी अनदेखा कर सकते हैं - इसके बजाय आप आमतौर पर अपने एप्लिकेशन को पुनरारंभ/पुनः नियोजित करते हैं।
हम शुरू करने के लिए एक नमूना एप्लिकेशन का उपयोग करेंगे और इसे डॉकर का उपयोग करके अपनी मशीन पर चलाएंगे।
रिपॉजिटरी को क्लोन करने, निर्भरता स्थापित करने और एप्लिकेशन चलाने के लिए निम्नलिखित कमांड चलाएँ:
$ git clone --branch appsignal-setup/start-docker --single-branch https://github.com/choncou/sample_rails_app appsignal-setup
$ cd appsignal-setup
$ yarn start:compose
जब आप इसे पहली बार चलाते हैं, तो डॉकर छवियों को बनाने और सभी निर्भरताओं को डाउनलोड करने में कुछ समय लग सकता है। एक बार यह पूरा हो जाने के बाद, यह Railsserver, PostgreSQL डेटाबेस और Redis को शुरू करेगा। आपको लॉग में अनुरोध देखना चाहिए और चल रहे एप्लिकेशन को https://localhost:3000/ पर देखना चाहिए।
हमारे नमूना आवेदन के बारे में
जिस एप्लिकेशन के साथ हम काम कर रहे हैं वह बहुत ही कम है, इसलिए ध्यान देने योग्य कुछ ही चीजें हैं।
हमारे पास एक Post
है मॉडल, PostsController
, और सभी CRUD कार्रवाइयां /posts
. के माध्यम से उजागर होती हैं मार्ग।
हमारे पास PagesController
. द्वारा प्रदान किया गया एक होम पेज भी है , जो पृष्ठभूमि कार्य को कतारबद्ध करता है CreateRandomPostsJob
अतुल्यकालिक रूप से यादृच्छिक पोस्ट उत्पन्न करने के लिए।
अंत में, हम बैकग्राउंड जॉब प्रोसेसिंग के लिए साइडकीक का उपयोग कर रहे हैं।
हमारे छोटे ब्लॉगिंग प्लेटफॉर्म में पहले से ही कुछ सक्रिय उपयोगकर्ता हैं। एक स्क्रिप्ट है (./bin/traffic
) सर्वर के साथ पृष्ठभूमि में चल रहा है जो नियमित रूप से एप्लिकेशन पर ट्रैफ़िक की नकल करने के लिए कुछ अनुरोध करता है।
यही बात है। हमने अभी-अभी एक उत्पाद जारी किया है, और सब कुछ पूरी तरह से काम करता है...
या, कम से कम हम यही सोचते हैं जब तक कि हम एप्लिकेशन के प्रदर्शन के बारे में उपयोगकर्ता रिपोर्ट और त्रुटियों में चल रहे उपयोगकर्ताओं को देखना शुरू नहीं करते।
तो हम कैसे समझें कि क्या हो रहा है? जब हम विकास के माहौल में काम कर रहे होते हैं, तो त्रुटियों को देखना आसान होता है। लेकिन जब हमारा आवेदन उत्पादन में चल रहा होता है, तो यह कठिन हो जाता है। उन सर्वर लॉग के माध्यम से खोजने की तुलना में त्रुटियों को खोजने का एक बेहतर तरीका होना चाहिए।
बचाने के लिए AppSignal!
AppSignal के साथ शुरुआत करना
आइए हमारे एप्लिकेशन में ऐपसिग्नल जोड़कर हमारी निगरानी यात्रा शुरू करें। आपको www.appsignal.com पर अपने खाते में लॉग इन करना होगा।
यदि आप एक नए ऐपसिग्नल उपयोगकर्ता हैं, तो आपको एप्लिकेशन जोड़ने के लिए नीचे दिया गया पृष्ठ दिखाई देगा (जबकि मौजूदा उपयोगकर्ताओं को 'ऐप्लिकेशन जोड़ें' पर क्लिक करना होगा)।
"रूबी के लिए स्थापित करें" चुनें, जो हमें अनुसरण करने के लिए कुछ सरल कदम देगा:
-
रत्न को अपने
Gemfile
. में जोड़ें# Gemfile gem 'appsignal'
-
bundle install
running चलाकर मणि इंस्टॉल करें डॉकटर कंटेनर के अंदर, जिसे आपyarn compose:sh
के साथ एक्सेस कर सकते हैं$ yarn compose:sh # We are now in a bash console within a docker container $ bundle install # Stay in this console for the next command
-
ऐपसिग्नल इंस्टॉल करें
स्थापना के दौरान, आपको दो संकेतों का जवाब देना होगा:
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 <your-api-key> ... ... ##################################### ## 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.
इंस्टॉल स्क्रिप्ट चलाने के बाद, आप देखेंगे कि आपके ब्राउज़र में ऐपसिग्नल सेटअप कब पूरा हो गया है। फिर आप अपने विकास परिवेश के लिए अपना ऐप सिग्नल डैशबोर्ड देखने के लिए 'ऐप पर जाएं':
इंस्टालेशन कमांड एक config/appsignal.yml
बनाता है जो आपको विभिन्न परिवेशों के लिए AppSignal सेटिंग्स को कॉन्फ़िगर करने की अनुमति देता है। आप AppSignal Ruby कॉन्फ़िगरेशन डॉक्स में और जान सकते हैं।
config/appsignal.yml
. में आपकी पुश एपीआई कुंजी है। आप आमतौर पर इसे इस फ़ाइल से हटा देंगे और इसके बजाय एक पर्यावरण चर का उपयोग करेंगे। इस पोस्ट के लिए, यह आवश्यक नहीं होगा।
हमें यह सुनिश्चित करने के लिए एप्लिकेशन को पुनरारंभ करने की आवश्यकता है कि हमारे परिवर्तन प्रभावी हों क्योंकि हमने एक नया रत्न स्थापित किया है। डॉकर कंटेनरों को ctrl-c
. के साथ रोकने का सबसे आसान तरीका है सर्वर चलाने वाली टर्मिनल विंडो के अंदर और इसके साथ फिर से docker-compose शुरू करें:
$ yarn start:compose
इसमें कुछ समय लग सकता है क्योंकि यह निर्भरता बदलने पर डॉकर छवि का पुनर्निर्माण करता है।
AppSignal मुख्य डैशबोर्ड
अब जबकि हमारे पास ऐपसिग्नल इंस्टॉल के साथ चलने वाला एप्लिकेशन है, हम डैशबोर्ड देख सकते हैं। AppSignal पर आपके द्वारा चलाए जा रहे सभी एप्लिकेशन और परिवेश देखने के लिए, आपappsignal.com/accounts पर जा सकते हैं:
एप्लिकेशन के नाम पर क्लिक करें, और आप यह पता लगा सकते हैं कि AppSignal आउट-ऑफ़-द-बॉक्स क्या मॉनिटर करता है।
कुछ ही मिनटों में, आपकी ट्रैफ़िक जनरेशन स्क्रिप्ट के कारण कुछ डेटा पहले ही एकत्र कर लिया जाएगा।
मुख्य डैशबोर्ड से, आप कुछ आवश्यक एप्लिकेशन मेट्रिक्स का एक अच्छा उच्च-स्तरीय अवलोकन प्राप्त कर सकते हैं। अब हम AppSignal के कुछ अधिक विशिष्ट क्षेत्रों में खुदाई करने जा रहे हैं।
AppSignal में त्रुटि डैशबोर्ड
त्रुटि पृष्ठ पर, आपको अपने आवेदन द्वारा रिपोर्ट की गई सभी त्रुटियों की एक सूची मिलती है। जब हमने इंस्टॉल स्क्रिप्ट चलाई, तो ऐपसिग्नल को एक परीक्षण त्रुटि भेजी गई थी। आप देख सकते हैं कि हमारे पास एक त्रुटि भी है जो काफी नियमित रूप से हो रही है। त्रुटि पर क्लिक करने से अधिक विवरण वाला एक पृष्ठ खुल जाएगा, जो समस्या को दूर करने के लिए उपयोगी हो सकता है।
इस मामले में, हम बैकट्रेस अनुभाग से देख सकते हैं कि एप्लिकेशन के होमपेज पर (/
) app/controllers/pages_controller.rb:7 home
पर सत्यापन त्रुटि हो रही है ।
अन्य ऐपसिग्नल डैशबोर्ड
साइडबार में 'डैशबोर्ड' के तहत, आप देख सकते हैं कि ऐपसिग्नल ने हमें पहले से ही कुछ अलग डैशबोर्ड प्रदान किए हैं।
'अवलोकन' डैशबोर्ड प्रत्येक एप्लिकेशन के लिए उपलब्ध है और प्रदान करता है:
- आपकी आवेदन त्रुटि दर
- थ्रूपुट
- प्रतिक्रिया समय
- अन्य हाल की गतिविधि जिसे आप अधिक विवरण के लिए देख सकते हैं
आपके पास दो मैजिक डैशबोर्ड भी हैं - एक एक्टिव जॉब के लिए और दूसरा साइडकीक के लिए। ऐपसिग्नल में कई लोकप्रिय ढांचे और रत्नों के लिए अंतर्निहित एकीकरण हैं जो आपके रेल एप्लिकेशन के साथ स्वचालित रूप से काम करते हैं।
इन डैशबोर्ड को देखते समय, आप उस एकीकरण की गतिविधि से प्रासंगिक जानकारी देख सकते हैं। सक्रिय जॉबडैशबोर्ड में, आप प्रत्येक कतार में नौकरियों की संख्या, प्रत्येक कार्य की रिकॉर्ड की गई अवधि, और बहुत कुछ के लिए ग्राफ़ देखेंगे। इसे एक नज़र डालें!
आपके ऐप का प्रदर्शन
प्रदर्शन → समस्या सूची . के अंदर , आप उन कार्रवाइयों की सूची देख सकते हैं जिन्हें AppSignal मापता है। ये माप कुछ मूल्यवान अंतर्दृष्टि प्रदान कर सकते हैं कि आपके आवेदन के किन हिस्सों में बहुत अधिक प्रदर्शन होता है।
उदाहरण के लिए, कार्रवाई के लिए समस्या पर क्लिक करके PostsController#index
, हम नियंत्रक के प्रदर्शन में गहराई से उतर सकते हैं। आप सबसे अधिक समय व्यतीत करने, या सबसे अधिक वस्तु आवंटन होने का विश्लेषण जल्दी से देख सकते हैं।
AppSignal से त्वरित जीत और छिपे हुए रत्न:प्यूमा का उपयोग करना
कुछ छिपे हुए रत्न हैं (रूबी प्रकार नहीं) जिन्हें आप बिना किसी प्रयास के AppSignal से प्राप्त कर सकते हैं। आइए देखें कि हम इन्हें कितनी आसानी से एक उदाहरण के साथ उठा सकते हैं और चला सकते हैं।
config/puma.rb
. के अंदर , निम्न पंक्ति जोड़ें:
# config/puma.rb
plugin :appsignal
इससे पहले कि हम एप्लिकेशन को पुनरारंभ करें, docker-compose.yml
में निम्नलिखित पर्यावरण चर आफ्टरलाइन 12 जोड़ें :
# docker-compose.yml
APP_REVISION: "latest_version_tag"
चूंकि हमने प्यूमा सर्वर कॉन्फिगरेशन और हमारे डॉकटर-कंपोज़ कॉन्फिगरेशन को अपडेट किया है, इसलिए हमें डॉकर कंटेनरों को ctrl-c
के साथ रीस्टार्ट करना होगा। और स्टार्ट-अपडॉकर-कंपोज़ फिर से yarn start:compose
. के साथ ।
अपनी नई जानकारी को ट्रैक करना
सर्वर के पुनरारंभ होने के बाद, इसे लगभग एक मिनट तक चलने दें, फिर ऐपसिग्नल डैशबोर्ड पर हेडबैक करें और पेज को रीफ्रेश करें। अब नई जानकारी के साथ दो मुख्य क्षेत्र हैं:
पहला नया स्वचालित रूप से उत्पन्न प्यूमा मेट्रिक्स मैजिक डैशबोर्ड है। ऐपसिग्नल के प्यूमा के साथ अंतर्निहित एकीकरण के कारण, अब हमारे पास एप्लिकेशन सर्वर की गतिविधि के बारे में जानकारी है। plugin
निर्दिष्ट करना कॉन्फ़िगरेशन फ़ाइल में एक सूक्ष्म जांच सक्रिय की गई है जो प्यूमा सर्वर के बारे में मेट्रिक्स की रिपोर्ट करती है।
अंत में, पूरे ऐपसिग्नल डैशबोर्ड में, अब परिनियोजन मार्कर हैं। आप APP_REVISION
सेट कर सकते हैं पर्यावरण चर किसी भी मूल्य के लिए जो आपको अपने आवेदन के वर्तमान संस्करण को निर्धारित करने में मदद करता है, जैसे कि git कमिट SHA।
आप AppSignal डैशबोर्ड में 'तैनाती' अनुभाग और परिनियोजन द्वारा फ़िल्टर अंतर्दृष्टि (जैसे त्रुटियाँ/प्रदर्शन समस्या सूचियाँ) देखकर अपने परिनियोजन का इतिहास भी देख सकते हैं। देखें कि प्रदर्शन या विश्वसनीयता तैनाती के बीच कैसे बदल गई है, जिससे यह पता लगाना आसान हो गया है कि कौन से परिवर्तन एक नया बग पेश कर सकते हैं।
अगला:रूबी ऐप्स के लिए कस्टम इंस्ट्रुमेंटेशन और मॉनिटरिंग
इस पोस्ट में दिखाया गया है कि जंगली में अपने कोड की दृश्यता बढ़ाने में मदद के लिए आप अपने एप्लिकेशन में ऐपसिग्नल को कैसे सेट और उपयोग कर सकते हैं।
हमने दिखाया है कि कैसे ऐपसिग्नल स्वचालित रूप से रेल और कुछ एप्लिकेशन की निर्भरता, जैसे साइडकीक और प्यूमा में एकीकृत होता है। AppSignal कई और रूबी फ्रेमवर्क और आउट-ऑफ-द-बॉक्स रत्नों के साथ काम करता है। आप यहां ऐपसिग्नल के रूबी एकीकरण की पूरी सूची पा सकते हैं।
इस श्रृंखला के भाग 2 में गहन अंतर्दृष्टि के लिए अपने रूबी ऑन रेल्स एप्लिकेशन में कस्टम इंस्ट्रूमेंटेशन और मॉनिटरिंग जोड़ने का तरीका शामिल होगा।
अगली बार तक!
पी.एस. यदि आप रूबी मैजिक की पोस्ट प्रेस से बाहर होते ही पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूजलेटर की सदस्यता लें और एक भी पोस्ट मिस न करें!