কম্পিউটার

AppSignal এর সাথে Ruby on Rails অ্যাপ্লিকেশন মনিটরিং

একটি উত্পাদন পরিবেশে একটি অ্যাপ্লিকেশন চালানো এবং রক্ষণাবেক্ষণ করার সময়, আমরা অ্যাপ্লিকেশনটির আচরণ সম্পর্কে আত্মবিশ্বাসী বোধ করতে চাই এবং কখন এটি প্রত্যাশা অনুযায়ী কাজ করছে না তা জানতে চাই। অন্তত, আমরা সমস্ত অ্যাপ্লিকেশন জুড়ে ত্রুটিগুলি ট্র্যাক করতে, কর্মক্ষমতা নিরীক্ষণ করতে এবং নির্দিষ্ট মেট্রিক্স সংগ্রহ করতে চাই৷

কারণ আমরা ডেভেলপার এবং রক্ষণাবেক্ষণযোগ্য সমাধান পছন্দ করি (ঠিক?), আমরা টুল, ইন্টিগ্রেশন এবং নির্ভরতার মধ্যেও শেষ হতে চাই না যা আমাদের জন্য সবকিছুর ট্র্যাক রাখা কঠিন করে তোলে।

এই পোস্টে, আমরা অ্যাপসিগন্যালকে একটি রুবি অন Railsapplication-এ যোগ করব যাতে অ্যাপ্লিকেশন আচরণে স্পষ্ট অন্তর্দৃষ্টি দিতে সহায়তা করে।

কোড সহ অনুসরণ করতে চাইলে পূর্বশর্ত:

  • 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 সারিবদ্ধ করে অ্যাসিঙ্ক্রোনাসভাবে এলোমেলো পোস্ট তৈরি করতে।

সবশেষে, আমরা ব্যাকগ্রাউন্ড জব প্রসেসিং এর জন্য Sidekiq ব্যবহার করছি।

আমাদের ছোট ব্লগিং প্ল্যাটফর্মেও ইতিমধ্যে কিছু সক্রিয় ব্যবহারকারী রয়েছে। এস্ক্রিপ্ট আছে (./bin/traffic ) সার্ভারের সাথে একত্রে ব্যাকগ্রাউন্ডে চলছে যা অ্যাপ্লিকেশনগুলিতে ট্র্যাফিক অনুকরণ করার জন্য নিয়মিত কিছু অনুরোধ করে।

এটাই. আমরা সবেমাত্র একটি পণ্য প্রকাশ করেছি, এবং সবকিছু নিখুঁতভাবে কাজ করে...

অথবা, অন্ততপক্ষে আমরা এটাই ভাবি যতক্ষণ না আমরা অ্যাপ্লিকেশনটির কার্যকারিতা এবং ব্যবহারকারীদের ত্রুটির বিষয়ে ব্যবহারকারীর প্রতিবেদন দেখা শুরু করি৷

তাহলে আমরা কিভাবে বুঝতে পারি কি হচ্ছে? যখন আমরা একটি উন্নয়ন পরিবেশে কাজ করি, তখন ত্রুটিগুলি সন্ধান করা সহজ হয়৷ কিন্তু যখন আমাদের অ্যাপ্লিকেশনটি উৎপাদনে চলছে, তখন এটি কঠিন হয়ে যায়। সেই সার্ভার লগগুলি অনুসন্ধান করার চেয়ে ত্রুটিগুলি খুঁজে বের করার একটি ভাল উপায় থাকতে হবে৷

উদ্ধারে অ্যাপসিগন্যাল!

AppSignal দিয়ে শুরু করা

আসুন আমাদের অ্যাপ্লিকেশনে AppSignal যোগ করে আমাদের পর্যবেক্ষণের যাত্রা শুরু করি। আপনাকে www.appsignal.com এ আপনার অ্যাকাউন্টে লগ ইন করতে হবে।

আপনি যদি একজন নতুন AppSignal ব্যবহারকারী হন, তাহলে আপনি একটি অ্যাপ্লিকেশন যোগ করতে নীচের পৃষ্ঠাটি দেখতে পাবেন (যেখানে বিদ্যমান ব্যবহারকারীদের 'অ্যাপ যোগ করুন'-এ ক্লিক করতে হবে)।

"রুবির জন্য ইনস্টল করুন" নির্বাচন করুন, যা আমাদের অনুসরণ করার জন্য কয়েকটি সহজ পদক্ষেপ দেবে:

  1. আপনার Gemfile-এ রত্নটি যোগ করুন

    # Gemfile
    gem 'appsignal'
  2. bundle install চালিয়ে রত্নটি ইনস্টল করুন ডকার কন্টেইনারের ভিতরে, যা আপনি 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
  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 <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.

আপনি ইনস্টল স্ক্রিপ্ট চালানোর পরে, আপনার ব্রাউজারে অ্যাপসিগন্যাল সেটআপ সম্পূর্ণ হলে আপনি লক্ষ্য করবেন। তারপর আপনি আপনার ডেভেলপমেন্ট এনভায়রনমেন্টের জন্য আপনার AppSignaldashboard দেখতে 'অ্যাপে যান' করতে পারেন:

ইনস্টলেশন কমান্ড একটি config/appsignal.yml তৈরি করে যা আপনাকে বিভিন্ন পরিবেশের জন্য AppSignal সেটিংস কনফিগার করতে দেয়। আপনি অ্যাপসিগন্যাল রুবি কনফিগারেশন ডক্সে আরও জানতে পারেন৷

config/appsignal.yml-এ আপনার পুশ API কী। আপনি সাধারণত এই ফাইল থেকে এটি মুছে ফেলবেন এবং পরিবর্তে একটি পরিবেশ পরিবর্তনশীল ব্যবহার করবেন। এই পোস্টের জন্য, এটির প্রয়োজন হবে না।

আমাদের পরিবর্তনগুলি কার্যকর হয় তা নিশ্চিত করতে আমাদের অ্যাপ্লিকেশনটি পুনরায় চালু করতে হবে কারণ আমরা একটি নতুন রত্ন ইনস্টল করেছি৷ সবচেয়ে সহজ উপায় হল ctrl-c দিয়ে ডকার কন্টেইনার বন্ধ করা টার্মিনাল উইন্ডোর ভিতরে সার্ভার চালান এবং ডকার-কম্পোজ আবার শুরু করুন:

$ yarn start:compose

এটি কিছু সময় নিতে পারে কারণ নির্ভরতা পরিবর্তন হলে এটি ডকার ইমেজটি পুনর্নির্মাণ করে৷

AppSignal প্রধান ড্যাশবোর্ড

এখন যেহেতু আমাদের কাছে অ্যাপসিগন্যাল ইনস্টল করা অ্যাপ্লিকেশনটি চলছে, আমরা ড্যাশবোর্ডটি দেখতে পারি। অ্যাপসিগন্যালে আপনার চলমান সমস্ত অ্যাপ্লিকেশন এবং পরিবেশ দেখতে, আপনি যেতে পারেন appsignal.com/accounts:

অ্যাপ্লিকেশানের নামের উপর ক্লিক করুন, এবং আপনি কী অ্যাপসিগন্যাল মনিটর-অফ-দ্য-বক্স অন্বেষণ করতে পারেন৷

কয়েক মিনিটের মধ্যে, আপনার ট্রাফিক জেনারেশন স্ক্রিপ্টের কারণে কিছু ডেটা ইতিমধ্যেই সংগ্রহ করা হবে।

প্রধান ড্যাশবোর্ড থেকে, আপনি কয়েকটি প্রয়োজনীয় অ্যাপ্লিকেশন মেট্রিক্সের একটি ভাল উচ্চ-স্তরের ওভারভিউ পেতে পারেন। আমরা এখন AppSignal-এর মধ্যে আরও কিছু নির্দিষ্ট ক্ষেত্রে খনন করতে যাচ্ছি।

অ্যাপসিগন্যালে ড্যাশবোর্ডের ত্রুটি

ত্রুটি পৃষ্ঠায়, আপনি আপনার অ্যাপ্লিকেশন দ্বারা রিপোর্ট করা সমস্ত ত্রুটির একটি তালিকা পাবেন৷ যখন আমরা ইনস্টল স্ক্রিপ্টটি চালাই, তখন অ্যাপসিগন্যালে একটি পরীক্ষা ত্রুটি পাঠানো হয়েছিল। আপনি দেখতে পাচ্ছেন যে আমাদের একটি ত্রুটি রয়েছে যা নিয়মিতভাবে ঘটছে বলে মনে হচ্ছে। ত্রুটির উপর ক্লিক করলে আরও বিশদ বিবরণ সহ একটি পৃষ্ঠা খুলবে, যা সমস্যাটি ডিবাগ করতে কার্যকর হতে পারে৷

এই ক্ষেত্রে, আমরা ব্যাকট্রেস বিভাগ থেকে দেখতে পাচ্ছি যে অ্যাপ্লিকেশনের হোমপেজে (/ ) app/controllers/pages_controller.rb:7 home-এ একটি বৈধতা ত্রুটি ঘটছে .

অন্যান্য AppSignal ড্যাশবোর্ড

সাইডবারে 'ড্যাশবোর্ড'-এর অধীনে, আপনি দেখতে পাচ্ছেন যে AppSignal ইতিমধ্যেই আমাদেরকে কয়েকটি ভিন্ন ড্যাশবোর্ড সরবরাহ করেছে৷

'ওভারভিউ' ড্যাশবোর্ড প্রতিটি অ্যাপ্লিকেশনের জন্য উপলব্ধ এবং প্রদান করে:

  • আপনার আবেদনের ত্রুটির হার
  • থ্রুপুট
  • প্রতিক্রিয়ার সময়
  • অন্যান্য সাম্প্রতিক কার্যকলাপ যা আপনি আরও বিশদ বিবরণের জন্য খনন করতে পারেন

আপনার কাছে দুটি ম্যাজিক ড্যাশবোর্ডও রয়েছে — একটি সক্রিয় কাজের জন্য এবং অন্যটি Sidekiq-এর জন্য৷ AppSignal-এ অনেক জনপ্রিয় ফ্রেমওয়ার্ক এবং রত্নগুলির জন্য অন্তর্নির্মিত ইন্টিগ্রেশন রয়েছে যা আপনার Rails অ্যাপ্লিকেশনের সাথে স্বয়ংক্রিয়ভাবে কাজ করে৷

এই ড্যাশবোর্ডগুলি দেখার সময়, আপনি সেই ইন্টিগ্রেশনের কার্যকলাপের সাথে প্রাসঙ্গিক তথ্য দেখতে পারেন। অ্যাক্টিভ জবড্যাশবোর্ডে, আপনি প্রতিটি সারিতে কাজের সংখ্যা, প্রতিটি কাজের রেকর্ড করা সময়কাল এবং আরও অনেক কিছুর জন্য গ্রাফ দেখতে পাবেন। এটা একবার দেখুন!

আপনার অ্যাপের কর্মক্ষমতা

পারফরমেন্স → ইস্যু তালিকা এর ভিতরে , আপনি অ্যাপসিগন্যাল পরিমাপ করা ক্রিয়াগুলির একটি তালিকা দেখতে পারেন। এই পরিমাপগুলি কিছু মূল্যবান অন্তর্দৃষ্টি প্রদান করতে পারে যা আপনার অ্যাপ্লিকেশনের কোন অংশগুলিকে অনেক বেশি কর্মক্ষমতা ব্যবহার করে৷

উদাহরণস্বরূপ, কর্মের জন্য সমস্যাটিতে ক্লিক করে PostsController#index , আমরা নিয়ন্ত্রকের কর্মক্ষমতা আরও গভীরে যেতে পারি। আপনি দ্রুত একটি ব্রেকডাউন দেখতে পারেন যেখানে সবচেয়ে বেশি সময় ব্যয় হয়, বা সবচেয়ে বেশি বস্তু বরাদ্দ হয়৷

AppSignal থেকে দ্রুত জয় এবং লুকানো রত্ন:Puma ব্যবহার করে

কিছু লুকানো রত্ন আছে (রুবি ধরনের নয়) যেগুলো আপনি অনেক চেষ্টা ছাড়াই 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 দিয়ে আবার স্টার্ট-আপডকার-কম্পোজ করুন .

আপনার নতুন অন্তর্দৃষ্টি ট্র্যাক করা

সার্ভার পুনরায় চালু হওয়ার পরে, এটিকে প্রায় এক মিনিটের জন্য চালানোর অনুমতি দিন, তারপরে অ্যাপসিগন্যাল ড্যাশবোর্ডে হেডব্যাক করুন এবং পৃষ্ঠাটি রিফ্রেশ করুন। এখন নতুন তথ্য সহ দুটি প্রধান ক্ষেত্র রয়েছে:

প্রথমটি হল নতুন স্বয়ংক্রিয়ভাবে তৈরি Puma মেট্রিক্স ম্যাজিক ড্যাশবোর্ড৷ Puma-এর সাথে AppSignal-এর অন্তর্নির্মিত ইন্টিগ্রেশনের কারণে, আমাদের কাছে এখন অ্যাপ্লিকেশন সার্ভারের কার্যকলাপ সম্পর্কে তথ্য রয়েছে৷ plugin নির্দিষ্ট করা কনফিগার ফাইলে একটি মিনিটে প্রোবেট সক্রিয় করা হয়েছে যা পুমা সার্ভার সম্পর্কে মেট্রিক্স রিপোর্ট করে।

অবশেষে, সমগ্র AppSignal ড্যাশবোর্ড জুড়ে, এখন স্থাপনার চিহ্নিতকারী রয়েছে। আপনি APP_REVISION সেট করতে পারেন এনভায়রনমেন্ট ভেরিয়েবল যে কোনো মান যা আপনাকে আপনার অ্যাপ্লিকেশনের বর্তমান সংস্করণ নির্ধারণ করতে সাহায্য করে, যেমন একটি গিট কমিট SHA।

আপনি AppSignal ড্যাশবোর্ডে 'ডিপ্লয়' বিভাগটি দেখে এবং ডিপ্লোয় করার মাধ্যমে ফিল্টার ইনসাইট (যেমন ত্রুটি/পারফরমেন্স ইস্যু তালিকা) দেখে আপনার স্থাপনার একটি ইতিহাস দেখতে পারেন। দেখুন কিভাবে কর্মক্ষমতা বা নির্ভরযোগ্যতা স্থাপনের মধ্যে পরিবর্তিত হয়েছে, এটিকে খনন করা আরও সহজতর করে তুলেছে যে পরিবর্তনগুলি একটি নতুন বাগ প্রবর্তন করতে পারে৷

পরবর্তী:রুবি অ্যাপের জন্য কাস্টম ইন্সট্রুমেন্টেশন এবং মনিটরিং

এই পোস্টটি দেখিয়েছে যে আপনি কীভাবে আপনার অ্যাপ্লিকেশনগুলিতে অ্যাপসিগন্যাল সেট আপ করতে এবং ব্যবহার করতে পারেন বন্যের মধ্যে আপনার কোডের দৃশ্যমানতা বাড়াতে সহায়তা করতে৷

আমরা দেখিয়েছি কিভাবে AppSignal স্বয়ংক্রিয়ভাবে Rails এবং অ্যাপ্লিকেশনের কিছু নির্ভরতা যেমন Sidekiq এবং Puma এর সাথে একীভূত হয়। AppSignal আরও অনেক রুবি ফ্রেমওয়ার্ক এবং রত্ন-বক্সের বাইরে কাজ করে। আপনি এখানে AppSignal এর রুবি ইন্টিগ্রেশনের একটি সম্পূর্ণ তালিকা পেতে পারেন।

গভীর অন্তর্দৃষ্টির জন্য আপনার রুবি অন রেল অ্যাপ্লিকেশনে কীভাবে কাস্টম ইন্সট্রুমেন্টেশন এবং মনিটরিং যুক্ত করবেন এই সিরিজের পার্ট 2 কভার করবে৷

পরের বার পর্যন্ত!

পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্টও মিস করবেন না!


  1. Vue, Vuex এবং Rails সহ একটি সম্পূর্ণ-স্ট্যাক অ্যাপ্লিকেশন তৈরি করা

  2. রেলের সাথে কৌণিক ব্যবহার 5

  3. রুবি দিয়ে কীভাবে কমান্ড-লাইন অ্যাপ্লিকেশন (সিএলআই) তৈরি করবেন

  4. রেলে রুবি কি এবং কেন এটি দরকারী?