Spring Boot-এ মনিটরিং
একটি প্রোডাকশন অ্যাপ্লিকেশনকে কেবল চলার চেয়েও বেশি কিছু করতে হয়। এটি পর্যবেক্ষণযোগ্য (observable) হতে হবে এবং কোনো ত্রুটি দেখা দিলে তা সহজে সমাধান করা সম্ভব হতে হবে। ইনসিডেন্ট (incident) সামলানোর জন্য আপনার হেলথ চেক (health checks), মেট্রিক্স (metrics), লগ (logs) এবং স্পষ্ট পদ্ধতির প্রয়োজন।
Spring Boot এই ফিচারগুলো প্রদান করতে Actuator ব্যবহার করে। Actuator আপনাকে health, metrics এবং info-এর মতো এন্ডপয়েন্ট (endpoints) প্রদান করে। আপনি এগুলো HTTP বা JMX-এর মাধ্যমে এক্সপোজ (expose) করতে পারেন।
মনিটর করার মূল ক্ষেত্রসমূহ:
• Availability: আপটাইম (uptime), রেডিনেস (readiness) এবং লাইভনেস (liveness) পরীক্ষা করুন। • Performance: রেসপন্স টাইম (response times), ল্যাটেন্সি (latency) এবং থ্রুপুট (throughput) ট্র্যাক করুন। • Errors: HTTP 4xx/5xx এরর এবং ফেইলড মেসেজগুলোর দিকে নজর রাখুন। • JVM: হিপ (heap), মেমরি (memory), CPU এবং থ্রেড (threads) মনিটর করুন। • Database: কানেকশন পুল (connection pools) এবং স্লো কুয়েরি (slow queries) ট্র্যাক করুন। • Kafka: কনজিউমার ল্যাগ (consumer lag) এবং রিট্রাই রেট (retry rates) মনিটর করুন।
মেট্রিক্স সংগ্রহ (Metrics Collection)
Spring Boot মেট্রিক্স সংগ্রহের জন্য Micrometer ব্যবহার করে। আপনি এই মেট্রিক্সগুলো এক্সপোজ করতে Prometheus registry ব্যবহার করতে পারেন। একটি সাধারণ সেটআপ হলো:
Spring Boot App → Prometheus → Grafana
এটি আপনাকে ড্যাশবোর্ডে অ্যাপ্লিকেশনের ডেটা ভিজ্যুয়ালাইজ (visualize) করতে সাহায্য করে।
লগিং-এর সেরা অনুশীলনসমূহ (Logging Best Practices)
লগ আপনাকে বুঝতে সাহায্য করে যে কোনো ফেইলিউরের সময় কী ঘটেছিল। লগগুলোকে মেশিন-রিডেবল (machine-readable) করতে প্রোডাকশনে স্ট্রাকচার্ড JSON লগিং ব্যবহার করুন।
যা করবেন:
- orderId বা customerId-এর মতো বিজনেস আইডিগুলো লগ করুন।
- একটি সিঙ্গেল রিকোয়েস্টের লগগুলোকে লিঙ্ক করতে কোরিলেশন আইডি (correlation IDs) ব্যবহার করুন।
- এক্সেপশনের (exceptions) জন্য স্ট্যাক ট্রেস (stack traces) অন্তর্ভুক্ত করুন।
- স্ট্রাকচার্ড লগ ব্যবহার করুন।
যা করবেন না:
- পাসওয়ার্ড, টোকেন বা ব্যক্তিগত ডেটা লগ করবেন না।
- লুপের (loops) ভেতরে অতিরিক্ত ডেটা লগ করবেন না।
- System.out.println ব্যবহার করবেন না।
- খালি catch ব্লক দিয়ে এরর লুকিয়ে রাখবেন না।
অপারেশনাল স্ট্যাবিলিটি (Operational Stability)
অপারেশনাল সাপোর্ট মানে হলো ডেপ্লয় করার পর সার্ভিসটিকে স্থিতিশীল রাখা। আপনার নিচের বিষয়গুলোর ওপর গুরুত্ব দেওয়া উচিত:
- সমস্যা অনুসন্ধানের জন্য ইনসিডেন্ট সাপোর্ট (Incident support)।
- সমস্যা দ্রুত শনাক্ত করতে ড্যাশবোর্ড এবং অ্যালার্ট (Dashboards and alerts)।
- রিকভারি ধাপগুলো নির্দেশ করতে রানবুক (Runbooks)।
- ফেইলড রিলিজের জন্য রোলব্যাক স্ট্র্যাটেজি (Rollback strategies)।
একটি শক্তিশালী Spring Boot সার্ভিস মনিটর করা, ডিবাগ করা এবং রিকভার করা সহজ।
উৎস: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220