এই আর্টিকেল সিরিজের প্রথম অংশে, আমরা একটি সিম্পল Ruby on Rails অ্যাপ্লিকেশন DigitalOcean-এর অ্যাপ প্ল্যাটফর্মে ডিপ্লয় করেছিলাম। আমরা একটি Rails অ্যাপকে AppSignal-এ হুক আপ করেও देखा ছিল, সিম্পল এরর কীভাবে ট্র্যাক এবং প্রদর্শিত হয় AppSignal-এর Errors ড্যাশবোর্ডে।
সিরিজের এই অংশে, আমরা ডুব मारব কীভাবে নিচেরগুলো সেট আপ করবেন আপনার Ruby on Rails অ্যাপ্লিকেশনের জন্য AppSignal ব্যবহার করে:
- পারফরম্যান্স মনিটরিং
- Rails ব্যাকগ্রাউন্ড জব মনিটরিং, সহজ API কল মনিটরিং সহ
- লগিং
- নোটিফিকেশন অ্যালার্ট
চলুন শুরু করি!
AppSignal ব্যবহার করে Rails অ্যাপ পারফরম্যান্স মনিটরিং
যখন আপনার আপটাইম মনিটর দেখায় আপনার অ্যাপ আপ, তবে সবকিছু ঠিক আছে মনে করা লোভনীয়। কিন্তু, বাস্তবে, হুডের নিচে সমস্যা তৈরি হতে পারে স্লো প্রসেস, আনঅপ্টিমাইজড ডাটাবেস কোয়েরি, এবং লং-রানিং সার্ভিস কলের রূপে।
এটি একটি অত্যন্ত গুরুত্বপূর্ণ বিষয় যখন আপনি বিবেচনা করেন যে স্লো-লোডিং ওয়েব পেজ এবং কম ভিজিটর কনভার্সন রেটের মধ্যে একটি коরিলেশন আছে। সংক্ষেপে, সেই স্লো-রানিং প্রসেসগুলো আপনাকে খুব খরচ পড়বে যদি অনচেকড ছেড়ে দেন। কিন্তু একটি Ruby on Rails অ্যাপের ততগুলো মুভিং পার্টস থাকায়, গুরুত্বপূর্ণ প্রশ্নগুলো হলো: আপনি কী খুঁজবেন, এবং কোথায়?
সেটিই যেখানে AppSignal কাজে আসে। চলুন দেখি কীভাবে আপনি AppSignal ব্যবহার করতে পারেন আপনার Rails অ্যাপের পারফরম্যান্স ট্র্যাক রাখতে।
রেসপন্স টাইম ট্র্যাক করা
ডিফল্ট ড্যাশবোর্ড থেকে, AppSignal দুটি গ্রাফ প্রদান করে যা আপনাকে একটি কুইক ওভারভিউ দিতে পারে আপনার Rails অ্যাপ কত স্লো (বা ফাস্ট) চলে: Throughput এবং Response time গ্রাফ।

- Throughput - এটি মূলত মাপে আপনার অ্যাপ বর্তমানে প্রতি সেকেন্ডে কতগুলো রিকোয়েস্ট প্রসেস করছে (এটিকে আপনার অ্যাপ সামগ্রিক কত রিকোয়েস্ট প্রতি সেকেন্ড হ্যান্ডেল করতে পারে সেটির সাথে গুলাফেলা করবেন না)। বেসিক রুল অফ থাম্ব: প্রতি সেকেন্ড যত বেশি রিকোয়েস্ট, তত ভালো। যাইহোক, যদি আপনার অ্যাপ সার্ভার খুব বেশি রিকোয়েস্ট প্রতি সেকেন্ড হ্যান্ডেল করে, তবে আপনার সার্ভার রিসোর্স স্কেল করার সময় হতে পারে।
- Response time - একটি ব্রাউজার রেসপন্সের গড় সময় মিলিসেকেন্ডে। যত বেশি সময় রেসপন্স নেয়, তত খারাপ আপনার অ্যাপ চলে। এখানে একটি ভালো রুল অফ থাম্ব হলো যদি আপনার Rails ওয়েব অ্যাপের সাব-১০০ms রেসপন্স টাইম থাকে, আপনি এটিকে ফাস্ট কনসিডার করতে পারেন, যখন ৩০০ms+ রেসপন্স টাইমকে স্লো কনসিডার করা যেতে পারে।
এখন, মনে করুন আমরা আমাদের অ্যাপের রেসপন্স টাইম এবং থ্রুপুট একটি সপ্তাহের উইন্ডোতে ট্র্যাক করতে চাই। এটি খুব সহজ — শুধু Performance-এর অধীনে বাম পাশের মেনুতে Graphs সাব-মেনুতে যান, তারপর গ্রাফের টপে টাইম ফিল্টার বাটনগুলো ব্যবহার করুন, নিচে দেখানো অনুযায়ী:

এতে, আপনি সহজে দেখতে পারেন আপনার অ্যাপ কিছু দিন অন্যদিনের চেয়ে স্লো চলে কিনা।
এই ভিউতে থাকাকালীন, Event groups গ্রাফও চেক আউট করা গুরুত্বপূর্ণ, যেটি Response time এবং Throughput গ্রাফের নিচে অবস্থিত:

এই গ্রাফ আপনাকে ডিটেইলস দেয় আপনার অ্যাপ কন্ট্রোলার লেয়ার এবং ভিউ লেয়ারে কত ফাস্ট বা স্লো চলে। এখান থেকে, আপনি বের করতে পারেন কী স্লো রেসপন্স টাইমের কারণ এবং সনুসারে ইস্যু ফিক্স করতে পারেন।
চলুন গেয়ার চেঞ্জ করি AppSignal ব্যবহার করে ডাটাবেস কোয়েরি ট্র্যাক করার দিকে।
ডাটাবেস কোয়েরি ট্র্যাক করা
সাধারণত সত্য যে আপনি আপনার অ্যাপ থেকে অনেক বেশি স্পিড নিচোড়ে বের করতে পারেন রেসপন্স টাইম এবং থ্রুপুট অপ্টিমাইজ করে। তবে, অধিকাংশ ক্ষেত্রে, স্লো, আনঅপ্টিমাইজড ডাটাবেস কোয়েরিই স্লোগ অ্যাপ বিহেভিয়রের জন্য সবচেয়ে বড় অপরাধী।
নিখোঁজ N+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 ব্যাকগ্রাউন্ড জব মনিটরিং-এ গভীরে ডুব मारতে চান, আমি আপনাকে ডকুমেন্টেশন চেক আউট করার পরামর্শ দিচ্ছি। এখন, চলুন আমাদের Aufmerksamkeit আপটাইম মনিটরিং-এ ফেরত আনি।
আপটাইম মনিটরিং
অনেক Rails ডেভেলপারকে চিন্তিত করে একটি বিষয় হলো তাদের অ্যাপ্লিকেশন এন্ড ইউজারদের জন্য কন্টিনিউয়াসলি উপলব্ধ থাকা। যেকোনো ডাউনটাইম রেভেনিউ লস এবং অন্যান্য নেতিবাচক ফলাফল তাড়াতে পারে।
তবুও, আপনি ম্যানুয়ালি আপনার অ্যাপের আপটাইম স্ট্যাটাস پول করতে চাবেন না। আপনি AppSignal ব্যবহার করে আপটাইম মনিটরিং সেট আপ করতে পারেন।
এটি সেট আপ করা একটি হাওয়ার जैसा সহজ। শুরু করুন বাম পাশের মেনুতে Uptime monitoring লিংকে ক্লিক করে।
তারপর, যখন আপনি create uptime monitor বাটনে ক্লিক করবেন, আপনাকে নিচের মতো একটি ডায়লগ मिलবে:


আপনার আপটাইম মনিটর কমপ্লিট করুন সবচেয়ে গুরুত্বপূর্ণ সেটিংস যোগ করে:
- Name - আপনার আপটাইম মনিটরকে একটি উপযুক্ত নাম দিন।
- URL - আপটাইম রুটের পূর্ণ URL দিন। Rails 7.1 থেকে, ডিফল্ট আপটাইম রুট হলো https://your-app-domain/up।
- Region - সেই রিজিয়ন সিলেক্ট করুন যেখানে আপনি আপটাইম চেক করতে চান।
- Notification - অ্যালার্ট পাওয়ার জন্য নোটিফিকেশন চ্যানেল সিলেক্ট করুন।
এটি হলে, এগিয়ে যান এবং মনিটর তৈরি করুন!
AppSignal আপটাইম মনিটরের সাথে একটি জিনিস নোট করুন যে যেহেতু پولিং প্রায় প্রতি মিনিটে হয়, আপনার প্ল্যানের লিমিট হিট করা খুব সহজ। কিন্তু এর একটি খুব ভালো ওয়ার্কঅরাউন্ড আছে যা আপনি তাদের ডকুমেন্টেশনে আরো পড়তে পারেন।
আপটাইম মনিটরিং লেয়ার কমপ্লিট করার জন্য আরেকটি গুরুত্বপূর্ণ ফিচার আছে: ফ্রি পাবলিক স্ট্যাটাস পেজ।
নিচে দেখানো creating a public status পেজ লিংকে ক্লিক করুন:

তারপর New status page বাটনে ক্লিক করুন, যেটি আপনাকে এখানে আনে:


এগিয়ে যান এবং সমস্ত প্রয়োজনীয় তথ্য পূরণ করুন। নোট করুন যদি আপনি একটি কাস্টম ডোমেন ব্যবহার করেন, আপনাকে আপনার কাস্টম ডোমেনের DNS সেটিংসে cname.appsignal-status.com-এ পয়েন্ট করে একটি CNAME ডিরেক্টিভ যোগ করতে হবে।
AppSignal-র সাথে লগিং
লগিং AppSignal-এ একটি আপেক্ষিক নতুন ফিচার, কিন্তু একটি যেটি টাইমলি এবং স্বাগতযোগ্য। AppSignal ব্যবহার করে, আপনাকে অ্যাপ্লিকেশন মনিটরিং এবং লগিং আলাদা সার্ভিস হিসেবে রান করতে হবে না।
লগিং শুরু করতে, নিশ্চিত করুন আপনি AppSignal জেমের লেটেস্ট ভার্সন রান করছেন। আপনার যদি জেমের পুরানো ভার্সন থাকে, এটিকে আপডেট করুন:
তারপর একটি নতুন ইনিশিয়ালাইজার তৈরি করুন এবং এডিট করুন এরকম:
এখন আপনি আপনার অ্যাপের লগগুলো এভাবে অ্যাক্সেস করতে পারেন:

লক্ষ্য করুন আপনি সেভারিটি দিয়ে লগ রেকর্ড ফিল্টার করার একটি চমৎকার ফিল্টারও পাবেন, সেই পাশাপাশি লাইভ লগ্স অ্যাক্সেস।
AppSignal-এর Ruby-এর জন্য লগিং ডকুমেন্টেশন এখানে পড়তে পারেন।
অন্য Notable ফিচার
AppSignal-এ এক-दুটি অন্য notable ফিচার আছে যা আপনি ব্যবহার করতে পারেন: অ্যানোমালি ডিটেকশন এবং কাস্টম মেট্রিক্স।
অ্যানোমালি ডিটেকশন
মনে করুন আপনি আপনার অ্যাপ মেমরি আউট হওয়া নিয়ে চিন্তিত। আপনি সহজে একটি ট্রিগার সেট আপ করতে পারেন যা একটি ইমেইল নোটিফিকেশন পাঠাবে যদি আপনার অ্যাপে উপলব্ধ মেমরিতে একটি উল্লেখযোগ্য ড্রপ হয়।
Anomaly detection লিংকে যান এবং একটি নতুন ট্রিগার তৈরি করুন, তারপর কনফিগার করুন:

- Metric - আমার কেসে, আমি মেমরি ইউজেজে আগ্রহী, কিন্তু আপনি আপনার ইউজ কেসের জন্য স্পেসিফিক যেকোনো অন্য মেট্রিক বেছে নিতে পারেন।
- Trigger details - এখানে, আপনি আপনার ট্রিগারের জন্য প্রাসঙ্গিক ডিটেইলস কনফিগার করবেন। আমার কেসে, ট্রিগার ফায়ার করবে যদি হোস্ট মেমরি ২০০MB-এর নিচে চলে যায়।
কাস্টম মেট্রিক্স
AppSignal আপনাকে কাস্টম মেট্রিক্স ক্যাপচার এবং ভিজ্যুয়ালাইজ করার টুলও দেয়। এই ফিচার একা একটি পুরো আর্টিকেলের যোগ্য। আপনি সেটি সম্পর্কে সব কিছু পড়তে পারেন How to Monitor Custom Metrics with AppSignal-এ এবং AppSignal-এর ডক্সও চেক আউট করতে পারেন।
উপসংহার
এই আর্টিকেল সিরিজের পার্ট 원-এ, আমরা DigitalOcean-এ হোস্ট করা একটি Rails অ্যাপ সেট আপ করেছি এবং AppSignal ব্যবহার করে এরর মনিটর করেছি।
এই দ্বিতীয় এবং চূড়ান্ত পার্টে, আমরা AppSignal-এর আপনার Rails অ্যাপের জন্য কিছু চমৎকার ফিচারের দিকে তাকালাম, যার মধ্যে রয়েছে পারফরম্যান্স মনিটরিং, আপটাইম মনিটরিং, লগিং, এবং আরও।
AppSignal-এ এতটুকু বেশি আছে যা এই আর্টিকেল সিরিজ দ্বারা কার্যকরভাবে কভার করা সম্ভব নয়। আমি আপনাকে আপনার Rails অ্যাপের জন্য এটি চেক আউট করার দৃঢ়ভাবে পরামর্শ দিচ্ছি।
হ্যাপি কোডিং!
P.S. আপনি যদি Ruby Magic পোস্টগুলো প্রেস থেকে বের होते হই পড়তে চান, আমাদের Ruby Magic নিউজলেটার সাবস্ক্রাইব করুন এবং কখনো একটি পোস্ট মিস করবেন না!