Spring Boot Actuator স্প্রিং বুট অ্যাপ্লিকেশনে প্রি-বuilt, প্রি-কনফিগারড, এবং কাস্টমাইজেবল endpoints প্রদান করে যা অ্যাপ্লিকেশন মনিটরিং, পারফরম্যান্স ট্র্যাকিং, এবং সিস্টেম স্বাস্থ্য পর্যবেক্ষণের জন্য ব্যবহৃত হয়। Actuator বিভিন্ন প্রকারের তথ্য সরবরাহ করে যেমন, অ্যাপ্লিকেশনের স্বাস্থ্য, কনফিগারেশন, মেট্রিক্স, লোগিং এবং আরও অনেক কিছু। এটি মূলত প্রোডাকশন এনভায়রনমেন্টে অ্যাপ্লিকেশনের পারফরম্যান্স এবং স্বাস্থ্য পর্যবেক্ষণের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Spring Boot Actuator
Spring Boot Actuator এমন একটি টুল যা স্প্রিং বুট অ্যাপ্লিকেশনের বিভিন্ন management এবং monitoring কার্যাবলী সরবরাহ করে। এটি আপনাকে স্প্রিং বুট অ্যাপ্লিকেশনগুলির health, metrics, environment, logging, auditing এবং application configuration মনিটর করার সুবিধা দেয়।
Spring Boot Actuator Endpoints
স্প্রিং বুট অ্যাক্টুয়েটর একটি গ্রুপ pre-defined endpoints সরবরাহ করে যেগুলো অ্যাপ্লিকেশন সার্ভারের অবস্থা এবং পারফরম্যান্স পর্যবেক্ষণের জন্য ব্যবহার করা হয়। এই endpoints অ্যাপ্লিকেশন সম্পর্কে বিভিন্ন তথ্য প্রদান করে, যেমন অ্যাপ্লিকেশনের স্বাস্থ্য, মেট্রিক্স, লগ স্টেটাস ইত্যাদি।
এখানে কিছু গুরুত্বপূর্ণ actuator endpoints তুলে ধরা হলো:
- /actuator/health:
- অ্যাপ্লিকেশনের health সম্পর্কে তথ্য প্রদান করে। এটি বলে অ্যাপ্লিকেশনটি ঠিকমত চলছে কি না, এবং যদি কোনো সমস্যা থাকে তা রিপোর্ট করে।
Example:
GET /actuator/health Response: { "status": "UP" }
- /actuator/metrics:
- অ্যাপ্লিকেশনের বিভিন্ন metrics যেমন জাভা ভিএম স্ট্যাটাস, সিস্টেম লোড, রিকোয়েস্ট কাউন্ট, এবং কাস্টম মেট্রিক্সের তথ্য প্রদান করে।
Example:
GET /actuator/metrics Response: { "mem": { "total": 1024, "used": 512, "free": 512 }, "cpu": { "systemLoad": 1.2, "availableProcessors": 4 } }
- /actuator/env:
- অ্যাপ্লিকেশন কনফিগারেশন এবং প্রপার্টি ফাইলের সেটিংস সম্পর্কে তথ্য সরবরাহ করে। এটি অ্যাপ্লিকেশনের কনফিগারেশন ভ্যালু, প্রপার্টি ফাইল এবং পরিবেশের ডেটা দেখায়।
Example:
GET /actuator/env Response: { "properties": { "app.name": "MySpringApp", "app.version": "1.0.0" } }
- /actuator/info:
- অ্যাপ্লিকেশন সম্পর্কে কাস্টম তথ্য প্রদান করে যেমন অ্যাপ্লিকেশনের ভার্সন, ডেভেলপার ইনফরমেশন, বিল্ড ইনফরমেশন ইত্যাদি। এটি সাধারণত কাস্টম ইনফরমেশন অ্যাপ্লিকেশনে যোগ করতে ব্যবহৃত হয়।
Example:
GET /actuator/info Response: { "app": { "name": "Spring Boot Application", "version": "1.0.0" } }
- /actuator/health/liveness:
- এটি Liveness probe হিসেবে কাজ করে এবং অ্যাপ্লিকেশনের জীবনকাল পরীক্ষা করে। এটি নিশ্চিত করে যে অ্যাপ্লিকেশনটি এখনও চালু এবং সুস্থ কিনা।
Example:
GET /actuator/health/liveness Response: { "status": "UP" }
- /actuator/health/readiness:
- এটি Readiness probe হিসেবে কাজ করে এবং অ্যাপ্লিকেশনের প্রস্তুতির অবস্থা পরীক্ষা করে। এটি নিশ্চিত করে যে অ্যাপ্লিকেশনটি সিস্টেমের জন্য প্রস্তুত এবং নতুন রিকোয়েস্ট গ্রহণের জন্য সক্ষম।
Example:
GET /actuator/health/readiness Response: { "status": "UP" }
Spring Boot Actuator Configuration
স্প্রিং বুট অ্যাক্টুয়েটর সক্রিয় করার জন্য, প্রথমে আপনার প্রকল্পে spring-boot-starter-actuator ডিপেনডেন্সি যুক্ত করতে হবে।
1. Maven Dependency (pom.xml)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. Application Properties Configuration
অ্যাক্টুয়েটরের ডিফল্ট এন্ডপয়েন্টগুলো একটিভ করার জন্য application.properties অথবা application.yml কনফিগারেশন ফাইল ব্যবহার করা হয়।
management.endpoints.web.exposure.include=health,info,metrics,env
management.endpoint.health.show-details=always
management.endpoints.web.enabled=true
এখানে:
- management.endpoints.web.exposure.include: কোন এন্ডপয়েন্টগুলি পাবলিকভাবে এক্সপোজ করা হবে তা কনফিগার করা।
- management.endpoint.health.show-details:
healthএন্ডপয়েন্টে আরো বিস্তারিত তথ্য দেখানোর জন্য।
3. Enable Specific Endpoints
আপনি যদি শুধুমাত্র কিছু নির্দিষ্ট actuator endpoints একটিভ করতে চান, তবে তা application.properties বা application.yml-এ কনফিগার করতে পারেন।
management.endpoints.web.exposure.include=health,metrics
management.endpoints.web.exposure.exclude=shutdown
এখানে, shutdown এন্ডপয়েন্টটি এক্সপোজ করা হবে না।
Spring Boot Actuator Health Monitoring
স্প্রিং অ্যাক্টুয়েটরের health monitoring এর মাধ্যমে আপনি অ্যাপ্লিকেশনের স্বাস্থ্য পর্যবেক্ষণ করতে পারেন। এটি আপনাকে নিশ্চিত করতে সাহায্য করে যে অ্যাপ্লিকেশন সঠিকভাবে চলছে এবং যদি কোনো সমস্যা থাকে তবে তা দ্রুত সনাক্ত করা যায়।
Health Check Example:
management.endpoints.web.exposure.include=health
এই কনফিগারেশনের মাধ্যমে, আপনি /actuator/health এন্ডপয়েন্টের মাধ্যমে অ্যাপ্লিকেশনের স্বাস্থ্য পরীক্ষা করতে পারবেন। যদি সবকিছু ঠিক থাকে, তাহলে আপনি নিম্নলিখিত ধরনের রেসপন্স পাবেন:
{
"status": "UP"
}
এটি নির্দেশ করে যে অ্যাপ্লিকেশন সুস্থ এবং কোন সমস্যা নেই। যদি কোনো সমস্যা থাকে, যেমন ডাটাবেস সংযোগে সমস্যা, তাহলে সেই সম্পর্কিত বিস্তারিত তথ্যও পাবেন।
Health Indicators:
স্প্রিং অ্যাক্টুয়েটরের মধ্যে বিভিন্ন ধরনের Health Indicators রয়েছে, যা আপনার অ্যাপ্লিকেশন, ডাটাবেস, ক্যাশ, মেসেজ কিউ ইত্যাদি পরীক্ষা করে।
Example:
{
"status": "DOWN",
"components": {
"db": {
"status": "DOWN",
"details": {
"error": "Connection refused"
}
}
}
}
এখানে, db অংশে সমস্যা দেখানো হয়েছে, যেখানে Connection refused পাওয়া গেছে।
Conclusion
স্প্রিং বুট অ্যাক্টুয়েটর একটি অত্যন্ত শক্তিশালী টুল যা আপনাকে অ্যাপ্লিকেশন মনিটরিং এবং ম্যানেজমেন্টের জন্য বিভিন্ন endpoints প্রদান করে। এটি আপনার অ্যাপ্লিকেশনের স্বাস্থ্য, মেট্রিক্স, কনফিগারেশন, লগিং এবং আরও অনেক তথ্য সরবরাহ করে, যা বিশেষভাবে প্রোডাকশন এনভায়রনমেন্টে অ্যাপ্লিকেশন পর্যবেক্ষণ করতে খুবই কার্যকরী। Spring Boot Actuator এর মাধ্যমে health monitoring, metrics, এবং অন্যান্য গুরুত্বপূর্ণ তথ্য ট্র্যাক করা সহজ এবং কার্যকরী হয়ে ওঠে।