কল্পনা করুন: আপনি আপনার নতুন Rails অ্যাপে কাজ শেষ করলেন এবং DigitalOcean-এ ডিপ্লয় করলেন। যেকোনো ডেভেলপারের মতো আপনি গর্বিত হলেও অনেক প্রশ্ন আছে — ট্রাফিক কতটুকু হ্যান্ডেল করবে, অপ্টিমাইজেশন কাজ করছে কিনা, ইত্যাদি।
আপনার লক্ষ্য সেরা ইউজার এক্সপেরিয়েন্স দেয়া। এরর বা গুরুত্বপূর্ণ ইভেন্ট ঘটলে তাৎক্ষণিক নোটিফিকেশন পাওয়া যাতে দ্রুত সমাধান করা যায়। অ্যাপ্লিকেশন অটোমেটিক্যালি মনিটর করার একটি সেটআপ কতটুকু সুন্দর হতো! এখানে এসে পড়ে AppSignal। এই টু-পার্ট সিরিজের প্রথম পার্টে, DigitalOcean-এ হোস্ট করা Rails অ্যাপকে AppSignal দিয়ে কার্যকরভাবে মনিটর করার সেটআপ দেখাব।
পূর্বশর্ত
- Ruby লোকাল ইনস্টলেশন (টিউটোরিয়ালে 3.3.0 ভার্সন)
- PostgreSQL লোকাল ইনস্টলেশন (Docker বা লোকাল)
- DigitalOcean অ্যাকাউন্ট
- AppSignal অ্যাকাউন্ট (৩০ দিন ফ্রি ট্রায়াল উপলব্ধ)
আমাদের Ruby on Rails অ্যাপ পরিচিতি
এই টিউটোরিয়ালে একটি সিম্পল Rails 7 expense tracker অ্যাপ ব্যবহার করব। ইউজার সাইন আপ করে ব্যক্তিগত খরচের এন্ট্রি তৈরি করতে পারবে এবং সময়ের সাথে সাথে খরচ ট্র্যাক করবে।
এই অ্যাপ DigitalOcean-এ ডিপ্লয় করব, তারপর AppSignal-এর মনিটরিং সলিউশন কনফিগার করব যাতে অ্যাপের আন্ডার দ্য হুড কী হচ্ছে তা ট্র্যাক করা যায়।
সোর্স কোড বা ফোর্ক করার লিংক থেকে ফলো করুন।
DigitalOcean-এ Rails অ্যাপ ডিপ্লয় করা
DigitalOcean-এর App Platform ব্যবহার করব। ধাপগুলো অনুমান করা হয়েছে যে আপনি ইতিমধ্যে expense tracker অ্যাপ ফোর্ক করেছেন এবং DigitalOcean অ্যাকাউন্ট রেডি।
অ্যাপ ডেটাবেস তৈরি
- বাম মেনু থেকে Databases লিংক ক্লিক করুন, তারপর Create Database ক্লিক করে নতুন PostgreSQL ডেটাবেস তৈরি করুন।
- ডেটাবেস সেটিংস পূরণ করার পর কানেকশন স্ট্রিং নোট করুন। এটি পরবর্তী ধাপে এনভায়রনমেন্ট ভেরিয়েবল হিসেবে ব্যবহার হবে।
- সিকিউরিটি ওয়ার্নিং (ডেটাবেস সব ইনকামিং কানেকশনের জন্য ওপেন) সমাধান করুন।
অ্যাপ তৈরি ও ডিপ্লয়
- বাম মেনু থেকে Apps লিংক ক্লিক করুন।
- কোড রিপোজিটরি রিসোর্স কানেক্ট করুন।
- এনভায়রনমেন্ট ভেরিয়েবল স্ক্রিনে কপি করা ডেটাবেস URL এবং
RAILS_MASTER_KEYযোগ করুন। - Next বাটনে ক্লিক করে অ্যাপ ডিপ্লয় করুন।
AppSignal দিয়ে Rails অ্যাপ মনিটরিং সেটআপ
- AppSignal অ্যাকাউন্টে লগ ইন করে 'Ruby & Rails' বেছে নিন।
- Rails অ্যাপে AppSignal gem যোগ করুন (
Gemfile-এ যোগ করেbundle installচালান)। - অ্যাকাউন্ট-স্পেসিফিক API কী সহ ইনস্টলেশন স্ক্রিপ্ট চালান।
স্ক্রিপ্ট চালালে নিচের অপশনগুলো আসবে:
- অ্যাপের নাম পরিবর্তন বা ডিফল্ট রাখা
- AppSignal কনফিগারেশন পদ্ধতি বেছে নেওয়া (config file বা environment variable)
Config file অপশন বেছে নিলে config/appsignal.yml ফাইল তৈরি হবে:
# config/appsignal.yml
default: &defaults
push_api_key: "your-api-key"
name: "Expense Tracker"
development:
<<: *defaults
active: true
production:
<<: *defaults
active: true
এখানে ডিফাইন করা হয়েছে:
push_api_key— অ্যাপকে AppSignal-এ কানেক্ট করে- অ্যাপের নাম
- মনিটরিং হবে এমন এনভায়রনমেন্ট (development এবং production)
ডেভেলপমেন্ট এনভায়রনমেন্টে মনিটরিং বন্ধ করতে active: false সেট করুন।
সব ঠিক থাকলে AppSignal আপনার অ্যাপ থেকে ডেটা রিসিভ করছে এমন স্ক্রিন দেখাবে।
AppSignal ড্যাশবোর্ড পরিচিতি
সেটআপ সম্পন্ন হলে ডিফল্ট মনিটরিং ড্যাশবোর্ড দেখতে পাবেন:
ডিফল্ট চার্টগুলো:
- Error rate — প্রতি ইউনিট টাইমে অ্যাপে ঘটা এরর রেট
- Throughput — রিকোয়েস্ট পর মিনিটে থ্রুপুট
- Response time — অ্যাপের রেসপন্স টাইম
- Latest open errors — অ্যাপে ঘটা লেটেস্ট এররগুলো
- Latest open performance measurements — মেথড কল, API রিকোয়েস্ট সহ লেটেস্ট পারফরম্যান্স মেজারমেন্ট
AppSignal দিয়ে এরর মনিটরিং
Rails অ্যাপে ১০টির বেশি এরর টাইপ হতে পারে। কিছু সাধারণ। এই সেকশনে কিছু এরর সিমুলেট করে দেখব AppSignal কীভাবে হ্যান্ডেল করে।
Expense tracker অ্যাপ Devise ব্যবহার করে অথেনটিকেশন। user_signed_in? মেথডের বদলে ভুল user_logged_in? ব্যবহার করলে ActionView::Template::Error হবে। এই পরিবর্তন ডিপ্লয় করে প্রোডাকশন অ্যাপ রিলোড করুন, তারপর AppSignal-এ প্রোডাকশন এনভায়রনমেন্ট ড্যাশবোর্ড দেখুন।
AppSignal এরর ডিটেইলস দেখতে সুবিধা দেয়। 'Latest Open Errors' প্যানেল থেকে এররে ক্লিক করলে:
স্পষ্ট দেখতে পাচ্ছেন এররটি অনডিফাইনড মেথডের কারণে হয়েছে।
Errors ড্যাশবোর্ডে Logbook এবং Settings প্যানেলও আছে:
- Logbook — টিম মেম্বাররা এরর সম্পর্কে কমেন্ট যোগ করতে পারে, ক্রোনোলজিক্যাল ব্রেকডাউন দেখতে পাবে।
- Settings — এরর অন্য মেম্বারের কাছে অ্যাসাইন করা, অ্যালার্ট সেটিংস পরিবর্তন, এরর সেভেরিটি সেট করা যায়।
উপসংহার
এই টিউটোরিয়ালে আমরা DigitalOcean-এ একটি সিম্পল Rails অ্যাপ ডিপ্লয় করেছি এবং AppSignal-এ হুক আপ করেছি। এরর কীভাবে মনিটর এবং ডিসপ্লে হয় তা দেখেছি। এটি কেবল শুরু — দ্বিতীয় পার্টে পারফরম্যান্স মেজারমেন্ট, অ্যানোমালি ডিটেকশন, আপটাইম মনিটরিং এবং লগিং-এ গভীরে যাব।
তब পর্যন্ত Happy coding!
P.S. Ruby Magic পোস্টগুলি প্রকাশ होते সাথে সাথে পেতে আমাদের Ruby Magic নিউজলেটার সাবস্ক্রাইব করুন!