Logging events & monitoring metrics
একটি প্রোডাকশন সিস্টেমে কী ঘটছে তা জানার জন্য Logging এবং Monitoring অপরিহার্য। এটি ছাড়া সিস্টেমের সমস্যা সমাধান (Debugging) করা প্রায় অসম্ভব।
1. Logging (কি ঘটেছিল?)
লগিং হলো সিস্টেমের বিভিন্ন ইভেন্ট বা কাজের রেকর্ড রাখা। যখন কোনো এরর হয় বা কোনো গুরুত্বপূর্ণ কাজ সম্পন্ন হয়, তখন আমরা তা লগে লিখে রাখি।
লগের ধরন (Log Levels):
- DEBUG: ডেভেলপমেন্টের সময় বিস্তারিত তথ্য দেখার জন্য।
- INFO: সাধারণ সাকসেসফুল কাজগুলো রেকর্ড করার জন্য (যেমন: User logged in)।
- WARNING: এমন কিছু যা এরর নয় তবে ভবিষ্যতে সমস্যা করতে পারে।
- ERROR: কোনো একটি ফাংশনালিটি ফেইল করলে (যেমন: Database connection failed)।
- CRITICAL: পুরো সিস্টেম ডাউন হয়ে যাওয়ার মতো পরিস্থিতি।
Centralized Logging:
মাইক্রোসার্ভিসে অনেকগুলো সার্ভিস থাকায় আলাদা আলাদা লগ দেখা কঠিন। তাই ELK Stack (Elasticsearch, Logstash, Kibana) বা Splunk ব্যবহার করে সব লগ এক জায়গায় আনা হয়।
2. Monitoring Metrics (এখন কি ঘটছে?)
মনিটরিং হলো সিস্টেমের বর্তমান অবস্থা বা স্বাস্থ্যের ওপর নজর রাখা। এটি মূলত সংখ্যা বা ডেটার (Metrics) ওপর ভিত্তি করে কাজ করে।
গুরুত্বপূর্ণ মেট্রিক্সসমূহ (The Golden Signals):
- Latency: একটি রিকোয়েস্ট প্রসেস করতে কত সময় লাগছে।
- Traffic: প্রতি সেকেন্ডে কতগুলো রিকোয়েস্ট আসছে (Requests Per Second - RPS)।
- Errors: কতগুলো রিকোয়েস্ট ফেইল করছে (Error Rate)।
- Saturation: সার্ভারের মেমোরি, CPU বা ডিস্ক কতটুকু ভর্তি হয়ে আছে।
3. জনপ্রিয় টুলস
- Prometheus: মেট্রিক্স কালেক্ট করার জন্য সবচেয়ে জনপ্রিয় টুল।
- Grafana: মেট্রিক্সগুলোকে সুন্দর ড্যাশবোর্ড বা গ্রাফে দেখার জন্য।
- Datadog: কমপ্লিট মনিটরিং এবং ট্র্যাকিং সলিউশন।
IMPORTANT
লগ এবং মেট্রিক্সের ওপর ভিত্তি করে Alerting সেট করা উচিত। যেমন: যদি এরর রেট ৫% এর বেশি হয়ে যায়, তবে যেন অটোমেটিক ডেভেলপারদের কাছে নোটিফিকেশন চলে যায়। এটি সিস্টেমের ডাউনটাইম কমাতে সাহায্য করে।