Spring Cloud Sleuth একটি ডিস্ট্রিবিউটেড ট্রেসিং টুল যা Spring Framework-এর অংশ হিসেবে কাজ করে এবং মাইক্রোসার্ভিস আর্কিটেকচারে ডিস্ট্রিবিউটেড ট্রানজেকশন বা মাইক্রোসার্ভিসের মধ্যে ট্রেসিং পরিচালনা করতে ব্যবহৃত হয়। Sleuth মূলত একটি রিকোয়েস্টের সাথে সম্পর্কিত ডেটা (যেমন HTTP রিকোয়েস্ট, ডেটাবেস কল, বা অন্য কোন ইন্টারঅ্যাকশন) ট্র্যাক করে এবং এটি বিভিন্ন সার্ভিসে ঘটিত হওয়া কার্যকলাপের চিত্র তুলে ধরে। এটি log correlation এবং end-to-end tracing এর মাধ্যমে সিস্টেমের পারফরম্যান্স ও ডিবাগিংয়ে সাহায্য করে।
ডিস্ট্রিবিউটেড ট্রেসিং হল এমন একটি প্রযুক্তি যা সিস্টেমের বিভিন্ন অংশের মধ্যে কার্যকলাপের একটি সমন্বিত চিত্র তৈরি করে, বিশেষ করে যখন সেই কার্যকলাপ একাধিক সার্ভিসের মধ্যে ছড়িয়ে পড়ে। এতে, সার্ভিসগুলির মধ্যে ট্রানজেকশনগুলি ট্র্যাক করা যায়, এবং কোনো সমস্যা বা পারফরম্যান্স স্লোডাউন খুঁজে পাওয়া সহজ হয়।
Spring Cloud Sleuth সার্ভিসগুলির মধ্যে যেকোনো ট্রানজেকশনের জন্য একটি ট্রেস আইডি তৈরি করে, যা সেই ট্রানজেকশনের সমস্ত কার্যকলাপের সাথে সম্পর্কিত। এটি সেই ট্রেস আইডি ব্যবহার করে লগ ফাইল বা অন্যান্য মনিটরিং টুলসের মধ্যে সম্পর্কিত ডেটা সংযুক্ত করে।
Spring Cloud Sleuth কনফিগার করার জন্য আপনাকে কিছু সাধারণ ডিপেন্ডেন্সি এবং কনফিগারেশন সেটআপ করতে হবে।
Spring Cloud Sleuth ব্যবহার করতে, আপনার pom.xml
ফাইলে এই ডিপেন্ডেন্সিটি যোগ করতে হবে:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
Spring Cloud Sleuth স্বয়ংক্রিয়ভাবে Trace ID এবং Span ID সহ লগ তৈরি করবে। তবে, যদি আপনি কিছু কাস্টম লগ কনফিগারেশন চান, আপনি application.properties
এ সেট করতে পারেন:
# Sleuth Logging Configuration
spring.sleuth.enabled=true
spring.sleuth.log.level=DEBUG # Set the logging level as required
Spring Cloud Sleuth সাধারণত Zipkin বা Jaeger এর মতো ডিস্ট্রিবিউটেড ট্রেসিং সিস্টেমের সাথে ইন্টিগ্রেট করা হয়। Zipkin ডিস্ট্রিবিউটেড ট্রেসিংয়ের জন্য একটি জনপ্রিয় টুল যা সার্ভিসের মধ্যে ট্রেসিং তথ্য সংগ্রহ এবং ভিজুয়ালাইজেশন করতে সাহায্য করে।
Zipkin সেটআপ:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
application.properties (Zipkin Configuration):
spring.zipkin.base-url=http://localhost:9411/ # Zipkin server URL
spring.sleuth.sampler.probability=1.0 # Sample rate (1.0 means 100% of requests will be traced)
আপনার Spring Boot অ্যাপ্লিকেশনে ব্যবহৃত সার্ভিস কলগুলোকে ট্র্যাক করতে, আপনি Spring Cloud Sleuth কে কনফিগার করার পর নিচের মতো কোড যুক্ত করতে পারেন:
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class MyService {
private final RestTemplate restTemplate;
public MyService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public String callOtherService() {
// Call another service and it will automatically be traced by Sleuth
String response = restTemplate.getForObject("http://other-service/api", String.class);
return response;
}
}
এই ক্ষেত্রে, callOtherService
মেথডটি অন্য সার্ভিসকে কল করবে এবং Sleuth Trace ID এবং Span ID এর মাধ্যমে ট্র্যাক করবে।
Spring Cloud Sleuth একটি শক্তিশালী ডিস্ট্রিবিউটেড ট্রেসিং টুল যা মাইক্রোসার্ভিস আর্কিটেকচারের কার্যকলাপ ট্র্যাক করতে ব্যবহৃত হয়। এটি লোগিং সম্পর্কিততা, পারফরম্যান্স ট্র্যাকিং, এবং সার্ভিসের মধ্যে কার্যকলাপের উপর নজর রাখতে সহায়ক। Zipkin বা Jaeger এর সাথে ইন্টিগ্রেশন করার মাধ্যমে এটি আরও কার্যকরী হতে পারে। Spring Cloud Sleuth ব্যবহারের মাধ্যমে মাইক্রোসার্ভিস সিস্টেমের ডিবাগিং এবং পারফরম্যান্স ট্র্যাকিং অনেক সহজ হয়ে ওঠে।
Distributed Tracing হলো একটি প্রযুক্তি যা ডিস্ট্রিবিউটেড সিস্টেমে একাধিক সার্ভিসের মধ্যে একটি রিকোয়েস্টের চলাচল ট্র্যাক করে। এটি সাহায্য করে ডেটা বা রিকোয়েস্ট কোথা থেকে এসেছে, কোন সার্ভিসে গেছে, এবং সার্ভিসটি কীভাবে সাড়া দিয়েছে তা দেখতে। Distributed Tracing এর মাধ্যমে আপনি জানতে পারেন একটি রিকোয়েস্ট বা প্রক্রিয়া সার্ভিসের মধ্য দিয়ে কিভাবে প্রবাহিত হয়েছে, কখন এটি শুরু হয়েছে এবং কখন শেষ হয়েছে।
এটি মাইক্রোসার্ভিস আর্কিটেকচারের জন্য বিশেষভাবে গুরুত্বপূর্ণ, কারণ সেখানে একাধিক সার্ভিসের মধ্যে কমিউনিকেশন এবং ডেটা ট্রান্সফার হয়ে থাকে। এর মাধ্যমে কোনো নির্দিষ্ট রিকোয়েস্টের প্রতিটি স্টেপ মনিটর করা যায়।
Spring Cloud, Spring Cloud Sleuth এবং Zipkin বা OpenTelemetry সহ বিভিন্ন টুলের মাধ্যমে Distributed Tracing সমর্থন করে। Spring Cloud Sleuth সার্ভিস কলের জন্য ট্রেসিং এবং লগিং তথ্য সংগ্রহ করে এবং সেই তথ্যটি Zipkin বা OpenTelemetry সিস্টেমে পাঠিয়ে ট্রেস রেকর্ড করে।
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
spring.application.name=my-microservice
spring.sleuth.sampler.probability=1.0 # 100% ট্রেসিং হবে
spring.zipkin.baseUrl=http://localhost:9411/ # Zipkin সার্ভারের URL
spring.zipkin.enabled=true
spring.sleuth.enabled=true
Distributed Tracing মাইক্রোসার্ভিস আর্কিটেকচারের জন্য অত্যন্ত গুরুত্বপূর্ণ একটি প্রযুক্তি, যা সার্ভিস কলের কার্যকারিতা এবং কর্মক্ষমতা বিশ্লেষণ করতে সাহায্য করে। এটি সিস্টেমে সমস্যা বা বিলম্ব শনাক্ত করার মাধ্যমে পারফরম্যান্স অপ্টিমাইজেশন, ফল্ট টলারেন্স, এবং রিলায়েবিলিটি নিশ্চিত করতে সাহায্য করে। Spring Cloud Sleuth, Zipkin, এবং OpenTelemetry এর মাধ্যমে Distributed Tracing খুব সহজেই ইন্টিগ্রেট করা যায় এবং ডিস্ট্রিবিউটেড সিস্টেমের স্ট্যাটাস ট্র্যাক করা যায়।
Spring Cloud Sleuth একটি ডিসট্রিবিউটেড ট্রেসিং সিস্টেম যা মাইক্রোসার্ভিস আর্কিটেকচারে যোগাযোগের ট্রেসিং পরিচালনা করতে সাহায্য করে। এটি Spring Boot অ্যাপ্লিকেশনে বিভিন্ন সার্ভিস কলের ট্রেসিং এবং লগিং তথ্য সংগ্রহ করে, যা ডেভেলপারদের এবং সিস্টেম অ্যাডমিনিস্ট্রেটরদের সার্ভিসের পারফরম্যান্স এবং সমস্যাগুলির দ্রুত সমাধান করতে সহায়ক হয়। Spring Cloud Sleuth একটি Trace (অথবা সার্ভিস কলের চেইন) এবং Span (একটি নির্দিষ্ট সার্ভিস কলের একটি ইউনিট) ধারণা ব্যবহার করে।
Distributed Tracing ব্যবহারের মাধ্যমে, যখন বিভিন্ন সার্ভিস একে অপরকে কল করে, তখন প্রতিটি সার্ভিসের মধ্যে ট্রেস আইডি এবং স্প্যান আইডি পাস করা হয়। এটি সার্ভিসের প্রতিটি রিকোয়েস্ট এবং প্রতিক্রিয়া ট্র্যাক করতে সাহায্য করে এবং মাইক্রোসার্ভিস আর্কিটেকচারের কার্যকলাপের সম্পূর্ণ ছবি তৈরি করে।
এটি ডেভেলপারদের সাহায্য করে রিকোয়েস্টের পুরো পথ (যার মধ্যে একাধিক সার্ভিস কলের মাধ্যমে ডেটা চলে) ট্র্যাক করতে, পারফরম্যান্স সমস্যাগুলি চিহ্নিত করতে এবং সার্ভিসের মধ্যে অপ্রত্যাশিত বিলম্ব বা ব্যর্থতার কারণ অনুসন্ধান করতে।
Spring Boot অ্যাপ্লিকেশনটি Spring Cloud Sleuth দিয়ে ট্রেসিং পরিচালনা করতে হলে আপনাকে spring-cloud-starter-sleuth
ডিপেনডেন্সি যোগ করতে হবে।
<dependencies>
<!-- Spring Boot Starter Web Dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Cloud Sleuth Dependency -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Spring Boot Starter Actuator (for monitoring and management) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
application.properties
কনফিগারেশনSpring Cloud Sleuth সাধারণত application.properties
বা application.yml
কনফিগারেশন ফাইলে কিছু প্রাথমিক সেটিংস নির্ধারণ করে।
# Enable Sleuth for distributed tracing
spring.sleuth.enabled=true
# Set the service name for tracing identification
spring.application.name=my-application
# Customizing trace ID length (optional)
spring.sleuth.trace-id-length=32
Spring Cloud Sleuth ডিফল্টভাবে HTTP রিকোয়েস্ট এবং রেসপন্সের জন্য ট্রেসিং যুক্ত করে, এবং এটি আপনার মাইক্রোসার্ভিসে স্বয়ংক্রিয়ভাবে Trace এবং Span তৈরি করবে।
Spring Cloud Sleuth স্বয়ংক্রিয়ভাবে HTTP রিকোয়েস্ট, অ্যাক্টুয়েটর ইন্ডপয়েন্টস, এবং ইন্টারনাল সার্ভিস কলের জন্য Trace এবং Span ট্র্যাকিং শুরু করবে। এটি ট্রেস এবং স্প্যান আইডি আপনার লোগের মধ্যে অন্তর্ভুক্ত করে, যা পরবর্তী ডিবাগিং এবং অ্যানালাইসিসের জন্য কাজে আসে।
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello from Spring Cloud Sleuth!";
}
}
যখন /hello
রিকোয়েস্ট করা হবে, তখন Sleuth স্বয়ংক্রিয়ভাবে ট্রেস আইডি এবং স্প্যান আইডি যুক্ত করবে এবং এই তথ্য লোগে দেখতে পাবেন।
Sleuth এর মাধ্যমে লগগুলি স্বয়ংক্রিয়ভাবে ট্রেস আইডি এবং স্প্যান আইডি সহ যুক্ত করা হয়, যেমন:
2024-12-19 10:00:00.123 INFO [my-application, 6f4a578bc823fcb1, 2a749f39cc869e3f] 12345 --- [nio-8080-exec-1] com.example.demo.MyController : Handling request for /hello
2024-12-19 10:00:01.456 INFO [my-application, 6f4a578bc823fcb1, 2a749f39cc869e3f] 12345 --- [nio-8080-exec-1] com.example.demo.MyController : Responding with "Hello from Spring Cloud Sleuth!"
এখানে:
6f4a578bc823fcb1
— পুরো রিকোয়েস্টের জন্য ইউনিক ট্রেস আইডি।2a749f39cc869e3f
— নির্দিষ্ট সার্ভিস কলের জন্য ইউনিক স্প্যান আইডি।Spring Cloud Sleuth সাধারণত Zipkin বা Jaeger এর সাথে ইন্টিগ্রেট করা হয়, যাতে ডিস্ট্রিবিউটেড ট্রেসিং এর দৃশ্যমানতা পাওয়া যায়।
Spring Cloud Sleuth Zipkin-এর সাথে সংযুক্ত করতে:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
application.properties
:# Zipkin server URL
spring.zipkin.baseUrl=http://localhost:9411
spring.sleuth.sampler.probability=1.0 # Trace all requests
Zipkin চালু করতে আপনি Docker ব্যবহার করতে পারেন:
docker run -d -p 9411:9411 openzipkin/zipkin
এখন আপনি http://localhost:9411 এ গিয়ে Zipkin UI-তে ট্রেস তথ্য দেখতে পাবেন।
Jaeger সিস্টেম ব্যবহার করতে হলে Jaeger ট্রেসিং সার্ভার এবং ডিপেনডেন্সি কনফিগারেশন করতে হবে। Jaeger অধিকভাবে কার্যকরী এবং অনেক মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়।
Spring Boot Actuator দ্বারা Sleuth এর ট্রেসিং ডেটা মনিটর করতে পারেন। Actuator এর মাধ্যমে আপনি HTTP ট্রেস দেখতে পারেন:
management.endpoints.web.exposure.include=health,info,metrics,trace
এখন আপনি /actuator/trace
এ গিয়ে HTTP ট্রেস দেখতে পাবেন।
Spring Cloud Sleuth দ্বারা distributed tracing পরিচালনা করা একটি অত্যন্ত কার্যকরী পদ্ধতি যা মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিসের মধ্যে ট্রেসিং এবং লগিং প্রক্রিয়া সহজ করে তোলে। Sleuth সার্ভিস কলের সমস্ত ট্রেস এবং স্প্যান তথ্য সংগ্রহ করে, যা ডেভেলপারদের সিস্টেমের কার্যকলাপ মনিটর এবং সমস্যা সমাধানে সহায়ক হয়। Sleuth এর মাধ্যমে, সার্ভিসের প্রতিটি রিকোয়েস্টের ট্রেসিং, লগিং এবং ডিবাগিং করা সহজ এবং সিস্টেমের পারফরম্যান্স উন্নত করা সম্ভব।
Spring Cloud Sleuth একটি লাইটওয়েট ট্রেসিং সলিউশন যা মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়। এটি একটি সার্ভিস কলের ট্রেস তৈরি করে, যার মাধ্যমে ডিস্ট্রিবিউটেড সিস্টেমের বিভিন্ন সার্ভিসের মধ্যে ডেটার প্রবাহ ট্র্যাক করা যায়। এটি সার্ভিসের পারফরম্যান্স এবং ডিবাগিং সমস্যা সমাধানে সাহায্য করে।
Zipkin একটি ডিসট্রিবিউটেড ট্রেসিং সিস্টেম যা Spring Cloud Sleuth এর সাথে ইন্টিগ্রেট করা যেতে পারে। Zipkin মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস কল ট্র্যাকিং, ডেটা সংগ্রহ এবং বিশ্লেষণ করার জন্য ব্যবহৃত হয়। Zipkin সার্ভিস কলগুলোর সময়, সার্ভিসের মধ্যে ডেটা স্থানান্তর এবং ল্যাটেন্সি বিশ্লেষণ করতে সাহায্য করে।
Spring Cloud Sleuth এবং Zipkin একত্রে কাজ করলে আপনি আপনার মাইক্রোসার্ভিস অ্যাপ্লিকেশনে ট্রেসিং এবং লগিং সক্ষম করতে পারবেন, যা সার্ভিসের কার্যকারিতা মনিটর এবং ত্রুটি সনাক্ত করতে সাহায্য করে।
Spring Cloud Sleuth এবং Zipkin এর মধ্যে ইন্টিগ্রেশন কনফিগার করার জন্য কয়েকটি সহজ পদক্ষেপ রয়েছে। নিম্নলিখিত নির্দেশিকাগুলি অনুসরণ করে আপনি আপনার Spring Boot অ্যাপ্লিকেশনে Sleuth এবং Zipkin ইন্টিগ্রেট করতে পারবেন।
প্রথমে আপনার pom.xml
ফাইলে নিচের ডিপেনডেন্সিগুলি যুক্ত করতে হবে:
<dependencies>
<!-- Spring Cloud Sleuth -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Zipkin Dependency -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!-- Spring Boot Starter Web (if not already included) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
এখানে spring-cloud-starter-sleuth
এবং spring-cloud-starter-zipkin
ডিপেনডেন্সি আপনার অ্যাপ্লিকেশনে Sleuth এবং Zipkin-এর কার্যকারিতা সক্ষম করবে।
এখন application.properties
বা application.yml
ফাইলে Zipkin সার্ভারের URL এবং অন্যান্য প্রয়োজনীয় কনফিগারেশন সেট করতে হবে।
# Zipkin Server URL (Replace with your Zipkin server address)
spring.zipkin.base-url=http://localhost:9411
# Enable Spring Cloud Sleuth
spring.sleuth.enabled=true
# Sampling Rate (0.1 means 10% of requests will be traced)
spring.sleuth.sampler.probability=1.0
spring:
zipkin:
base-url: http://localhost:9411
sleuth:
enabled: true
sampler:
probability: 1.0
এখানে, spring.zipkin.base-url
Zipkin সার্ভারের URL নির্দেশ করে। spring.sleuth.sampler.probability
এই কনফিগারেশনটি নির্ধারণ করে যে, সার্ভিস কত শতাংশ ট্রেসিং করবে। 1.0
মানে ১০০% ট্রেসিং।
Zipkin সার্ভার চলমান থাকতে হবে যাতে এটি ট্রেস ডেটা গ্রহণ করতে পারে। আপনি Zipkin সার্ভার Docker ব্যবহার করে চালু করতে পারেন:
docker run -d -p 9411:9411 openzipkin/zipkin
এটি Zipkin সার্ভারকে http://localhost:9411
এ চালু করবে। এখন আপনার অ্যাপ্লিকেশন Zipkin সার্ভারে ট্রেস ডেটা পাঠাতে সক্ষম হবে।
Spring Boot অ্যাপ্লিকেশনে Sleuth ট্রেসিং সক্ষম করতে সাধারণত কোনো অতিরিক্ত কনফিগারেশন প্রয়োজন হয় না, কারণ spring-cloud-starter-sleuth
অটোমেটিক্যালি Sleuth ট্রেসিং সক্ষম করে দেয়। তবে, আপনি যদি কাস্টম ট্রেস বা লগিং যুক্ত করতে চান, তবে Tracer
Bean ব্যবহার করতে পারেন।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.cloud.sleuth.Tracer;
@RestController
public class MyController {
@Autowired
private Tracer tracer;
@GetMapping("/trace")
public String trace() {
tracer.currentSpan().tag("custom-tag", "value");
return "Trace ID: " + tracer.currentSpan().context().traceId();
}
}
এখানে, Tracer
Bean ব্যবহার করে আমরা কাস্টম ট্যাগ যোগ করছি এবং ট্রেস আইডি রিটার্ন করছি।
Spring Cloud Sleuth ট্রেসিং তথ্য লগিংয়ের জন্য Logback ব্যবহার করতে পারে। আপনার logback-spring.xml
ফাইলে নিচের কনফিগারেশন যুক্ত করতে পারেন যাতে ট্রেসিং তথ্য লোগ ফাইলে আসে।
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %5level - %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
এটি লগ ফাইলে লগিংয়ের সাথে ট্রেস আইডি, স্প্যান আইডি এবং অন্যান্য ট্রেসিং সম্পর্কিত তথ্য অন্তর্ভুক্ত করবে।
Zipkin সার্ভার চালু থাকার পর আপনি Zipkin ড্যাশবোর্ডে গিয়ে ট্রেসিং ডেটা দেখতে পারবেন। Zipkin ড্যাশবোর্ডে http://localhost:9411
এ গিয়ে, আপনি ট্রেস, স্প্যান এবং বিভিন্ন সার্ভিসের পারফরম্যান্স বিশ্লেষণ করতে পারবেন।
Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন ডিস্ট্রিবিউটেড ট্রেসিং এবং মাইক্রোসার্ভিস আর্কিটেকচারে কার্যক্ষমতা মনিটরিং করার জন্য একটি শক্তিশালী সলিউশন প্রদান করে। Spring Cloud Sleuth সার্ভিসের মধ্যে ট্রেস তৈরি করে এবং Zipkin ট্রেসিং তথ্য সংগ্রহ করে এবং পারফরম্যান্স বিশ্লেষণ করতে সাহায্য করে। এটি ডেভেলপারদের অ্যাপ্লিকেশনের কার্যকারিতা বিশ্লেষণ এবং ডিবাগিং করতে সহায়ক হয়। Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন সেটআপ করা সহজ এবং কার্যকর, এবং এটি মাইক্রোসার্ভিস ডিজাইনের একটি অপরিহার্য অংশ হয়ে উঠেছে।
Spring Cloud Sleuth এবং Zipkin হল মাইক্রোসার্ভিস আর্কিটেকচারের মধ্যে ডিস্ট্রিবিউটেড ট্রেসিং করতে ব্যবহৃত টুলস। Sleuth হল একটি Spring Cloud লাইব্রেরি যা অ্যাপ্লিকেশনগুলির মধ্যে ট্রেসিং এবং লগিং পরিচালনা করতে সহায়ক এবং Zipkin হল একটি ডিসেন্ট্রালাইজড ট্রেসিং সিস্টেম যা সব সার্ভিসে ট্রেসিং ডেটা সংগ্রহ এবং বিশ্লেষণ করতে ব্যবহৃত হয়। এই টুলগুলি মাইক্রোসার্ভিসের মধ্যে সিস্টেম ট্রেসিং ও ডিবাগিং সহজ করে তোলে এবং পুরো প্রক্রিয়াটির দৃশ্যমানতা বৃদ্ধি করে।
Spring Cloud Sleuth এবং Zipkin সেটআপ করতে আপনাকে আপনার pom.xml
ফাইলে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে।
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Cloud Sleuth for Distributed Tracing -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Zipkin Dependency for Distributed Tracing -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
</dependencies>
এটি Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন নিশ্চিত করবে, যা আপনার মাইক্রোসার্ভিসের মধ্যে ট্রেসিং সক্ষম করবে।
Zipkin সার্ভারটি একটি সার্ভিস হিসেবে চলবে এবং এটি আপনার সমস্ত মাইক্রোসার্ভিসের ট্রেসিং ডেটা সংগ্রহ করবে। Zipkin সার্ভার চালু করার জন্য, আপনি Docker ব্যবহার করতে পারেন, অথবা আপনি ম্যানুয়ালি Zipkin Server ডিপ্লয় করতে পারেন।
Zipkin সার্ভার চালানোর জন্য Docker ব্যবহার করতে পারেন:
docker run -d -p 9411:9411 openzipkin/zipkin
এটি Zipkin সার্ভারকে localhost:9411
পোর্টে চালু করবে।
Spring Boot অ্যাপ্লিকেশন কনফিগার করার জন্য আপনাকে application.properties
বা application.yml
ফাইলে Zipkin সার্ভারের URL এবং অন্যান্য কনফিগারেশন যোগ করতে হবে।
application.properties
কনফিগারেশন:# Enable Sleuth for distributed tracing
spring.application.name=my-service
spring.sleuth.enabled=true
# Zipkin server URL
spring.zipkin.baseUrl=http://localhost:9411
spring.sleuth.sampler.probability=1.0 # 100% traces (can be set to 0.1 for 10% traces)
spring.application.name=my-service
: অ্যাপ্লিকেশনের নাম সেট করুন, যাতে Zipkin সার্ভারে এই নামটি ট্রেসের সাথে সংযুক্ত থাকবে।spring.zipkin.baseUrl=http://localhost:9411
: Zipkin সার্ভারের URL.spring.sleuth.sampler.probability=1.0
: এটি প্রতি অনুরোধে 100% ট্রেসিং নিশ্চিত করবে।Spring Boot অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে Sleuth এবং Zipkin ইন্টিগ্রেশন দ্বারা ট্রেসিং ডেটা সরবরাহ করবে। আপনি সাধারণ REST API কল ব্যবহার করলে এটি ট্রেসিং তথ্য প্রদান করবে।
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/call-service")
public String callService() {
return "Service response with tracing enabled!";
}
}
এখানে, /call-service
রাউটটি সার্ভিস কল করবে, এবং Spring Cloud Sleuth এই কলের ট্রেসিং তথ্য লগ করবে এবং Zipkin সার্ভারে পাঠাবে।
Zipkin UI তে ট্রেসিং তথ্য দেখতে, আপনার ব্রাউজারে http://localhost:9411
URL-এ যান। এখানে আপনি সমস্ত সার্ভিসের ট্রেসিং ডেটা দেখতে পারবেন।
my-service
).Zipkin UI তে আপনি দেখতে পারবেন যে কিভাবে ট্রেসিং ডেটা একটি সার্ভিস থেকে অন্য সার্ভিসে প্রবাহিত হচ্ছে। এখানে কয়েকটি গুরুত্বপূর্ণ বিষয় থাকবে:
Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন আপনার মাইক্রোসার্ভিস আর্কিটেকচারের মধ্যে distributed tracing করার জন্য অত্যন্ত কার্যকর। এটি সার্ভিসগুলোকে একে অপরকে ট্রেস করতে এবং তাদের মধ্যে যোগাযোগ এবং কার্যকারিতা বিশ্লেষণ করতে সাহায্য করে। এই সমাধানটি সমস্যাগুলিকে দ্রুত সনাক্ত করতে এবং পারফরম্যান্স অপটিমাইজ করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more