Spring Boot Actuator হল Spring Boot-এর একটি শক্তিশালী উপাদান যা অ্যাপ্লিকেশন পর্যবেক্ষণ (monitoring) এবং পরিচালনা (management) সহজ করে তোলে। এটি অ্যাপ্লিকেশন চলাকালে বিভিন্ন স্বাস্থ্যগত তথ্য (health metrics), কার্যক্ষমতা (performance metrics), এবং কনফিগারেশন সম্পর্কিত তথ্য সংগ্রহ এবং প্রদর্শন করতে সহায়তা করে।
Spring Boot Actuator ব্যবহার করে আপনি সহজেই আপনার অ্যাপ্লিকেশনের health checks, metrics, environment details, audits, এবং log files সম্পর্কে জানার জন্য বিভিন্ন এন্ডপয়েন্ট এক্সপোজ করতে পারেন। এতে সাহায্য পেয়ে আপনি সিস্টেমের পারফরম্যান্স এবং স্থিতিশীলতা যাচাই করতে পারবেন।
Spring Boot Actuator এর প্রধান বৈশিষ্ট্য
- Health Checks:
- অ্যাপ্লিকেশনের স্বাস্থ্য (health) পর্যবেক্ষণ করার জন্য বিভিন্ন বিল্ট-ইন এন্ডপয়েন্ট সরবরাহ করে। এটি ডাটাবেস, ক্যাশ, এবং অন্যান্য সিস্টেমের স্বাস্থ্য যাচাই করে।
- Metrics:
- অ্যাপ্লিকেশনের পারফরম্যান্স এবং বিভিন্ন মেট্রিক্স যেমন টিপিক্যাল কনকারেন্ট থ্রেড, ডেটাবেস কনেক্সন পুল সাইজ ইত্যাদি দেখতে সাহায্য করে।
- Audit Events:
- অ্যাপ্লিকেশনের সমস্ত গুরুত্বপূর্ণ ইভেন্ট (যেমন লগইন, লগআউট) ট্র্যাক করে এবং audit তথ্য সরবরাহ করে।
- Environment Information:
- অ্যাপ্লিকেশনের কনফিগারেশন এবং property values সম্পর্কিত তথ্য প্রদর্শন করে, যেমন active profiles, system properties, এবং configuration values।
- Logging:
- অ্যাপ্লিকেশনের লগগুলো অ্যাক্সেস এবং ম্যানেজ করতে সহায়তা করে।
- Thread Dumps:
- Thread dumps সংগ্রহ করে যা আপনাকে জাভা অ্যাপ্লিকেশনটি কীভাবে রান করছে এবং কোথায় এটি আটকে গেছে, তা দেখতে সাহায্য করে।
Spring Boot Actuator সেটআপ
Spring Boot Actuator ব্যবহার করতে, প্রথমে আপনার pom.xml বা build.gradle ফাইলে Spring Boot Actuator ডিপেনডেন্সি যোগ করতে হবে।
pom.xml (Maven)
<dependencies>
<!-- Spring Boot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
build.gradle (Gradle)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
Spring Boot Actuator Configuration
Spring Boot Actuator দ্বারা প্রদত্ত এন্ডপয়েন্টগুলিকে application.properties বা application.yml ফাইলে কনফিগার করা যায়। এখানে কিছু সাধারণ কনফিগারেশন দেওয়া হল:
application.properties Example
# Enable all actuator endpoints
management.endpoints.web.exposure.include=*
# Enable specific endpoints (e.g., health, metrics, and info)
management.endpoints.web.exposure.include=health,metrics,info
# Enable security for actuator endpoints
management.endpoints.web.exposure.exclude=shutdown
management.endpoint.health.show-details=always
ব্যাখ্যা:
management.endpoints.web.exposure.include=*: সব actuator এন্ডপয়েন্ট (যেমন health, metrics, info, etc.) প্রদর্শন করতে বলে।management.endpoint.health.show-details=always: health এন্ডপয়েন্টে সম্পূর্ণ ডিটেইল দেখায়।management.endpoints.web.exposure.exclude=shutdown:shutdownএন্ডপয়েন্ট বন্ধ করে।
Spring Boot Actuator Endpoints
Spring Boot Actuator বিভিন্ন ধরনের endpoints সরবরাহ করে যা অ্যাপ্লিকেশন সম্পর্কে বিস্তারিত তথ্য প্রদান করে। কয়েকটি গুরুত্বপূর্ণ এন্ডপয়েন্টের উদাহরণ:
/actuator/health:
- অ্যাপ্লিকেশনের স্বাস্থ্য সম্পর্কিত তথ্য দেখায়। এটি ডাটাবেস, ক্যাশ, এবং অন্যান্য সিস্টেমের স্বাস্থ্য সম্পর্কিত ডেটা প্রদান করে।
উদাহরণ:
curl http://localhost:8080/actuator/healthResponse:
{ "status": "UP" }/actuator/metrics:
- অ্যাপ্লিকেশনের পারফরম্যান্স মেট্রিক্স সরবরাহ করে, যেমন টিপিক্যাল কনকারেন্ট থ্রেড, ডেটাবেস কননেকশন পুল সাইজ ইত্যাদি।
উদাহরণ:
curl http://localhost:8080/actuator/metrics/actuator/info:
- অ্যাপ্লিকেশন সম্পর্কিত সাধারণ তথ্য প্রদান করে (যেমন version, build info, environment variables)।
উদাহরণ:
curl http://localhost:8080/actuator/infoResponse:
{ "app": { "name": "Spring Boot Actuator Example", "version": "1.0" } }/actuator/env:
- অ্যাপ্লিকেশনের পরিবেশ সম্পর্কিত তথ্য প্রদর্শন করে, যেমন active profiles, system properties ইত্যাদি।
উদাহরণ:
curl http://localhost:8080/actuator/env/actuator/loggers:
- অ্যাপ্লিকেশনের লগ লেভেল কনফিগারেশন দেখায় এবং পরিবর্তন করতে সহায়তা করে।
উদাহরণ:
curl http://localhost:8080/actuator/loggers
Spring Boot Actuator এর মাধ্যমে নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল
Spring Boot Actuator এন্ডপয়েন্টগুলি সাধারণত পাবলিক হতে পারে, তবে আপনি চাইলে নিরাপত্তা কনফিগার করে তাদের অ্যাক্সেস কন্ট্রোল করতে পারেন।
Security Configuration Example
package com.example.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/actuator/health", "/actuator/metrics", "/actuator/info").permitAll() // Expose these endpoints publicly
.anyRequest().authenticated() // Secure other endpoints
.and()
.httpBasic(); // Enable HTTP Basic Authentication
}
}
ব্যাখ্যা:
/actuator/health,/actuator/metrics, এবং/actuator/infoএন্ডপয়েন্টগুলো পাবলিক অ্যাক্সেসযোগ্য করা হয়েছে।- অন্য সমস্ত রিকোয়েস্টের জন্য authentication প্রয়োজন।
Spring Boot Actuator Monitoring Tools Integration
Spring Boot Actuator সহজে বিভিন্ন monitoring tools এর সাথে ইন্টিগ্রেট করা যায়, যেমন:
- Prometheus & Grafana:
- Spring Boot Actuator এর metrics endpoint Prometheus এর সাথে ইন্টিগ্রেট করা যেতে পারে এবং Grafana ব্যবহার করে একটি সুন্দর dashboard তৈরি করা যেতে পারে।
- Micrometer:
- Micrometer একটি পারফরম্যান্স মেট্রিক্স লাইব্রেরি যা Spring Boot এর সাথে ইন্টিগ্রেট করতে ব্যবহৃত হয় এবং Prometheus, Datadog, InfluxDB ইত্যাদির মতো সিস্টেমে মেট্রিক্স পাঠাতে সক্ষম।
সারাংশ
Spring Boot Actuator আপনার অ্যাপ্লিকেশনের বিভিন্ন গুরুত্বপূর্ণ তথ্য পর্যবেক্ষণ এবং পরিচালনা করতে সহায়তা করে। এটি ডেটাবেসের স্বাস্থ্য, মেট্রিক্স, ইনফরমেশন এবং লগিং সম্পর্কিত ডেটা অ্যাক্সেস করার জন্য বিভিন্ন এন্ডপয়েন্ট সরবরাহ করে। Spring Boot Actuator নিরাপত্তা এবং কনফিগারেশন কাস্টমাইজেশন এর মাধ্যমে ব্যবহারের জন্য সহজ এবং অনেক কার্যকরী টুল সরবরাহ করে। Prometheus, Grafana, এবং Micrometer এর মতো টুলের মাধ্যমে পারফরম্যান্স মনিটরিংও আরও সহজ করা যায়।
Spring Boot Actuator হলো Spring Boot অ্যাপ্লিকেশনের জন্য একটি গুরুত্বপূর্ণ মডিউল, যা অ্যাপ্লিকেশনের পর্যবেক্ষণ (monitoring) এবং পরিচালনার (management) সুবিধা প্রদান করে। এটি বিভিন্ন এন্ডপয়েন্ট (Endpoints) এর মাধ্যমে অ্যাপ্লিকেশনের মেট্রিক্স (metrics), স্বাস্থ্য পরীক্ষা (health check), কনফিগারেশন ডিটেইলস, এবং অন্যান্য ডায়াগনস্টিক তথ্য অ্যাক্সেসের সুযোগ দেয়।
Spring Boot Actuator এর বৈশিষ্ট্য
পর্যবেক্ষণ এবং ডায়াগনস্টিক তথ্য
Actuator বিভিন্ন গুরুত্বপূর্ণ তথ্য সরবরাহ করে, যেমন:
- অ্যাপ্লিকেশনের স্ট্যাটাস
- রানটাইম মেট্রিক্স
- ডেটাবেস কানেকশন স্ট্যাটাস
- HTTP ট্রাফিকের তথ্য
ম্যানেজমেন্ট এন্ডপয়েন্টস
Spring Boot Actuator ডিফল্টভাবে অনেকগুলো ম্যানেজমেন্ট এন্ডপয়েন্ট প্রদান করে, যা অ্যাপ্লিকেশন পরিচালনা করতে সহায়ক।
এক্সটেনসিবিলিটি
Spring Boot Actuator ব্যবহার করে কাস্টম মেট্রিক্স এবং এন্ডপয়েন্ট তৈরি করা যায়।
Spring Boot Actuator ডিপেনডেন্সি যোগ করা
Spring Boot Actuator ব্যবহার করার জন্য Maven বা Gradle ডিপেনডেন্সি যুক্ত করতে হয়।
Maven ডিপেনডেন্সি
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Gradle ডিপেনডেন্সি
implementation 'org.springframework.boot:spring-boot-starter-actuator'
Actuator Endpoints
Spring Boot Actuator বিভিন্ন প্রয়োজনীয় এন্ডপয়েন্ট প্রদান করে। এগুলো ডিফল্টভাবে /actuator URI-তে এক্সেস করা যায়।
গুরুত্বপূর্ণ এন্ডপয়েন্ট
| এন্ডপয়েন্ট | কাজ |
|---|---|
/actuator/health | অ্যাপ্লিকেশনের স্বাস্থ্য পরীক্ষা (উপলভ্য নাকি তা দেখায়)। |
/actuator/metrics | অ্যাপ্লিকেশনের বিভিন্ন মেট্রিক্স সরবরাহ করে। |
/actuator/info | অ্যাপ্লিকেশনের তথ্য (যেমন ভার্সন, বিবরণ) প্রদান করে। |
/actuator/env | পরিবেশ ভ্যারিয়েবলের তথ্য দেখায়। |
/actuator/loggers | লগিং লেভেল পরিচালনার জন্য ব্যবহৃত হয়। |
/actuator/beans | অ্যাপ্লিকেশনের সকল বীন লিস্ট করে। |
Spring Boot Actuator এর কাজ
১. অ্যাপ্লিকেশনের স্বাস্থ্য পরীক্ষা
Spring Boot Actuator এর /health এন্ডপয়েন্ট ব্যবহার করে অ্যাপ্লিকেশনের স্বাস্থ্য পরীক্ষা করা যায়।
উদাহরণ:
GET http://localhost:8080/actuator/health
রেসপন্স:
{
"status": "UP"
}
২. মেট্রিক্স সংগ্রহ
Actuator এর /metrics এন্ডপয়েন্ট ব্যবহার করে অ্যাপ্লিকেশনের বিভিন্ন মেট্রিক্স, যেমন মেমোরি ব্যবহার, HTTP রিকোয়েস্ট সংখ্যা ইত্যাদি দেখা যায়।
উদাহরণ:
GET http://localhost:8080/actuator/metrics
রেসপন্স:
{
"names": [
"jvm.memory.used",
"http.server.requests",
"jvm.gc.pause"
]
}
৩. অ্যাপ্লিকেশন তথ্য যোগ করা
Actuator এর /info এন্ডপয়েন্টে অ্যাপ্লিকেশনের কাস্টম তথ্য যোগ করা যায়।
application.properties:
management.endpoint.info.enabled=true
info.app.name=My Spring Boot App
info.app.version=1.0.0
রেসপন্স:
{
"app": {
"name": "My Spring Boot App",
"version": "1.0.0"
}
}
৪. লগিং লেভেল পরিবর্তন
Actuator এর /loggers এন্ডপয়েন্ট ব্যবহার করে রানটাইমে লগিং লেভেল পরিবর্তন করা যায়।
উদাহরণ:
POST http://localhost:8080/actuator/loggers/com.example
{
"configuredLevel": "DEBUG"
}
Spring Boot Actuator এর কাস্টমাইজেশন
Endpoints সক্রিয়/নিষ্ক্রিয় করা
ডিফল্টভাবে সক্রিয় বা নিষ্ক্রিয় এন্ডপয়েন্ট নির্ধারণ করা যায়।
application.properties:
management.endpoints.web.exposure.include=health,info
management.endpoint.env.enabled=false
কাস্টম এন্ডপয়েন্ট তৈরি করা
Spring Boot Actuator কাস্টম এন্ডপয়েন্ট তৈরি করার সুযোগ দেয়।
উদাহরণ:
@Component
@Endpoint(id = "customEndpoint")
public class CustomEndpoint {
@ReadOperation
public String customEndpoint() {
return "This is a custom endpoint";
}
}
অ্যাক্সেস:
GET http://localhost:8080/actuator/customEndpoint
Spring Boot Actuator এর ব্যবহার
Spring Boot Actuator ডেভেলপার এবং অপারেশন টিমকে অ্যাপ্লিকেশনের কার্যক্ষমতা এবং স্বাস্থ্যের উপর নজরদারি করার সহজ উপায় প্রদান করে। এটি মনিটরিং টুল যেমন Prometheus, Grafana, এবং ELK Stack-এর সঙ্গে ইন্টিগ্রেশন করতে ব্যবহার করা হয়।
Spring Boot Actuator ব্যবহার করে ডায়াগনস্টিক এবং পরিচালনার কাজ দ্রুত এবং সহজে সম্পন্ন করা যায়।
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, এবং অন্যান্য গুরুত্বপূর্ণ তথ্য ট্র্যাক করা সহজ এবং কার্যকরী হয়ে ওঠে।
Spring Boot Actuator কি?
Spring Boot Actuator একটি স্প্রিং বুট প্রকল্পের অতিরিক্ত মডিউল যা অ্যাপ্লিকেশনের মেট্রিক্স, মনিটরিং, এবং অপারেশনাল ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি অ্যাপ্লিকেশন চলাকালীন বিভিন্ন ধরনের ডায়াগনস্টিক এবং সিস্টেম ইনফরমেশন প্রদান করে, যেমন লগিং, স্ট্যাটাস চেক, সিস্টেম হেলথ, এবং কাস্টম এন্ডপয়েন্টস।
Spring Boot Actuator দিয়ে অ্যাপ্লিকেশনটির স্বাস্থ্য (health), কার্যক্ষমতা (metrics), এবং অন্যান্য গুরুত্বপূর্ণ ইনফরমেশন চেক করা যায় যা উৎপাদন পরিবেশে ট্র্যাক করা অত্যন্ত গুরুত্বপূর্ণ।
Spring Boot Actuator এর সুবিধা
- হেলথ চেক: অ্যাপ্লিকেশনের বর্তমান অবস্থার স্বাস্থ্য সম্পর্কিত তথ্য প্রদান করে।
- মেট্রিক্স: অ্যাপ্লিকেশন এর পারফরম্যান্স এবং অন্যান্য তথ্য প্রদান করে।
- অথেনটিকেশন এবং অথরাইজেশন: কাস্টম এন্ডপয়েন্ট সিকিউর করা।
- ডায়াগনস্টিক তথ্য: সিস্টেমের ইন্টার্নাল স্টেট বিশ্লেষণ করা।
Spring Boot Actuator ব্যবহারের উদাহরণ
১. Spring Boot Actuator ডিপেনডেন্সি যোগ করা
Spring Boot Actuator ব্যবহার করতে প্রথমে আপনার pom.xml ফাইলে Actuator ডিপেনডেন্সি যোগ করতে হবে।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
এই ডিপেনডেন্সি ইনস্টল করার পর আপনি অ্যাপ্লিকেশনটির বিভিন্ন মেট্রিক্স, হেলথ চেক, এবং অন্যান্য গুরুত্বপূর্ণ তথ্য অ্যাক্সেস করতে পারবেন।
২. application.properties কনফিগারেশন
Spring Boot Actuator এন্ডপয়েন্টস অ্যাক্সেস কনফিগার করতে application.properties ফাইলটি ব্যবহার করা হয়। সাধারণত, অ্যাক্টুয়েটর কিছু ডিফল্ট এন্ডপয়েন্ট (যেমন /actuator/health, /actuator/metrics) সক্রিয় রাখে, কিন্তু আপনি আপনার প্রয়োজন অনুযায়ী কনফিগার করতে পারেন।
management.endpoints.web.exposure.include=health,info,metrics
এটি নিশ্চিত করে যে আপনি /actuator/health, /actuator/info, এবং /actuator/metrics এন্ডপয়েন্টগুলোর মাধ্যমে অ্যাপ্লিকেশনের অবস্থা দেখতে পারবেন।
৩. Health Check Endpoint
Spring Boot Actuator-এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো হেলথ চেক, যা অ্যাপ্লিকেশনের স্বাস্থ্য সম্পর্কিত তথ্য প্রদান করে। আপনি /actuator/health এন্ডপয়েন্টে অ্যাক্সেস করে অ্যাপ্লিকেশনের স্বাস্থ্য স্টেটাস দেখতে পারবেন।
curl http://localhost:8080/actuator/health
এটি আপনাকে এমন একটি JSON রেসপন্স দিবে যা অ্যাপ্লিকেশনের স্বাস্থ্য চেকের তথ্য দেখাবে:
{
"status": "UP"
}
এখানে "UP" মানে অ্যাপ্লিকেশনটি সুস্থভাবে চলছে, এবং যদি কোনো সমস্যা থাকে তবে তা "DOWN" হিসাবে প্রদর্শিত হবে।
৪. Metrics Endpoint
Spring Boot Actuator আপনাকে অ্যাপ্লিকেশন সম্পর্কিত মেট্রিক্স (যেমন লোড টাইম, ইউজার একটিভিটি, মেমরি ব্যবহার ইত্যাদি) প্রদর্শন করতে সাহায্য করে। আপনি /actuator/metrics এন্ডপয়েন্টের মাধ্যমে এই তথ্য অ্যাক্সেস করতে পারবেন।
curl http://localhost:8080/actuator/metrics
এর ফলে আপনি এমন একটি JSON রেসপন্স পাবেন যা বিভিন্ন ধরনের মেট্রিক্স সম্পর্কিত তথ্য দেখাবে:
{
"names": [
"jvm.memory.used",
"jvm.memory.committed",
"jvm.gc.pause",
"system.cpu.usage"
]
}
এখানে বিভিন্ন মেট্রিক্স যেমন JVM মেমরি, CPU ব্যবহার, এবং গার্বেজ কালেকশন সময় সম্পর্কিত তথ্য পাবেন।
৫. Info Endpoint
Spring Boot Actuator দ্বারা info এন্ডপয়েন্টটি কাস্টম তথ্য দেখানোর জন্য ব্যবহৃত হয়। আপনি এই এন্ডপয়েন্টে অ্যাপ্লিকেশনের সংস্করণ, বিল্ড তথ্য, বা অন্যান্য কাস্টম তথ্য প্রদর্শন করতে পারেন।
প্রথমে, application.properties এ কাস্টম ইনফো যুক্ত করুন:
info.app.name=MySpringBootApp
info.app.version=1.0.0
এবার /actuator/info এন্ডপয়েন্টে এই কাস্টম ইনফো দেখতে পারবেন:
curl http://localhost:8080/actuator/info
রেসপন্স হবে:
{
"app": {
"name": "MySpringBootApp",
"version": "1.0.0"
}
}
৬. Custom Actuator Endpoint
Spring Boot Actuator কাস্টম এন্ডপয়েন্ট তৈরি করাও সম্ভব। আপনি যদি নিজস্ব কিছু ডায়াগনস্টিক বা কাস্টম তথ্য প্রদর্শন করতে চান, তাহলে আপনি একটি কাস্টম এন্ডপয়েন্ট তৈরি করতে পারেন।
@Component
public class CustomEndpoint extends AbstractEndpoint<String> {
public CustomEndpoint() {
super("custom");
}
@Override
public String invoke() {
return "This is a custom actuator endpoint!";
}
}
এটি /actuator/custom এন্ডপয়েন্টে কাস্টম তথ্য প্রদান করবে।
৭. Security Configuration
Spring Boot Actuator এন্ডপয়েন্টগুলো সাধারণত ডিফল্টভাবে পাবলিক থাকে, তবে আপনি নিরাপত্তা কনফিগারেশন দিয়ে এগুলো সুরক্ষিত করতে পারেন। উদাহরণস্বরূপ, যদি আপনি health এন্ডপয়েন্টটিকে শুধুমাত্র অ্যাডমিনদের জন্য অ্যাক্সেসযোগ্য করতে চান, তাহলে আপনার application.properties ফাইলে এটি কনফিগার করুন:
management.endpoints.web.exposure.include=health,info
management.endpoint.health.show-details=when-authorized
এবং Spring Security কনফিগারেশন অনুযায়ী প্রমাণীকরণ যুক্ত করুন।
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/actuator/health").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
সারাংশ
Spring Boot Actuator একটি অত্যন্ত শক্তিশালী টুল যা অ্যাপ্লিকেশনের স্বাস্থ্য, মেট্রিক্স, এবং অন্যান্য গুরুত্বপূর্ণ সিস্টেম তথ্য দেখানোর সুবিধা দেয়। এটি একটি প্রোডাকশন-রেডি অ্যাপ্লিকেশনকে ট্র্যাক, মনিটর, এবং ডিবাগ করতে সাহায্য করে। Spring Boot Actuator এর মাধ্যমে আপনি সহজেই হেলথ চেক, মেট্রিক্স সংগ্রহ, কাস্টম এন্ডপয়েন্ট তৈরি, এবং নিরাপত্তা কনফিগারেশন পরিচালনা করতে পারেন, যা অ্যাপ্লিকেশনটির কার্যক্ষমতা এবং নিরাপত্তা নিশ্চিত করে।
Read more