Spring Cloud Sleuth (Distributed Tracing)

Java Technologies - স্প্রিং ক্লাউড (Spring Cloud)
97
97

Spring Cloud Sleuth একটি ডিস্ট্রিবিউটেড ট্রেসিং টুল যা Spring Framework-এর অংশ হিসেবে কাজ করে এবং মাইক্রোসার্ভিস আর্কিটেকচারে ডিস্ট্রিবিউটেড ট্রানজেকশন বা মাইক্রোসার্ভিসের মধ্যে ট্রেসিং পরিচালনা করতে ব্যবহৃত হয়। Sleuth মূলত একটি রিকোয়েস্টের সাথে সম্পর্কিত ডেটা (যেমন HTTP রিকোয়েস্ট, ডেটাবেস কল, বা অন্য কোন ইন্টারঅ্যাকশন) ট্র্যাক করে এবং এটি বিভিন্ন সার্ভিসে ঘটিত হওয়া কার্যকলাপের চিত্র তুলে ধরে। এটি log correlation এবং end-to-end tracing এর মাধ্যমে সিস্টেমের পারফরম্যান্স ও ডিবাগিংয়ে সাহায্য করে।

ডিস্ট্রিবিউটেড ট্রেসিং কী?

ডিস্ট্রিবিউটেড ট্রেসিং হল এমন একটি প্রযুক্তি যা সিস্টেমের বিভিন্ন অংশের মধ্যে কার্যকলাপের একটি সমন্বিত চিত্র তৈরি করে, বিশেষ করে যখন সেই কার্যকলাপ একাধিক সার্ভিসের মধ্যে ছড়িয়ে পড়ে। এতে, সার্ভিসগুলির মধ্যে ট্রানজেকশনগুলি ট্র্যাক করা যায়, এবং কোনো সমস্যা বা পারফরম্যান্স স্লোডাউন খুঁজে পাওয়া সহজ হয়।

Spring Cloud Sleuth সার্ভিসগুলির মধ্যে যেকোনো ট্রানজেকশনের জন্য একটি ট্রেস আইডি তৈরি করে, যা সেই ট্রানজেকশনের সমস্ত কার্যকলাপের সাথে সম্পর্কিত। এটি সেই ট্রেস আইডি ব্যবহার করে লগ ফাইল বা অন্যান্য মনিটরিং টুলসের মধ্যে সম্পর্কিত ডেটা সংযুক্ত করে।


Spring Cloud Sleuth এর প্রধান বৈশিষ্ট্য

  1. ডিস্ট্রিবিউটেড ট্রেসিং:
    Sleuth বিভিন্ন সার্ভিসের মধ্যে ঘটিত কার্যকলাপ ট্র্যাক করতে সহায়ক। সার্ভিসে সার্ভিসে যাতায়াতকারী রিকোয়েস্টগুলির মধ্যে সম্পর্ক স্থাপন করা হয় এবং এর মাধ্যমে প্রতিটি সার্ভিসের মধ্যে কী ঘটছে তা দেখা যায়।
  2. লগ সম্পর্কিততা (Log Correlation):
    Sleuth সার্ভিস কলগুলির মধ্যে ট্রেস আইডি যুক্ত করে, যা লগগুলিকে সম্পর্কিত করতে সাহায্য করে। ফলে একটি রিকোয়েস্টের সমস্ত লোগ তথ্য একত্রে দেখতে পাওয়া যায়।
  3. ফলব্যাক সাপোর্ট:
    Sleuth ব্যাকআপ সিস্টেম এবং অন্যান্য টুল যেমন Zipkin, Prometheus, Jaeger এর সাথে ইন্টিগ্রেট হয়।
  4. পারফরম্যান্স ট্র্যাকিং:
    Sleuth ট্রানজেকশনগুলির সময় ট্র্যাক করতে সাহায্য করে, যাতে আপনি বুঝতে পারেন কোথায় বিলম্ব হচ্ছে এবং কোথায় অপটিমাইজেশন প্রয়োজন।

Spring Cloud Sleuth এর কাজের প্রক্রিয়া

  1. Trace ID তৈরি করা:
    যখন কোনো রিকোয়েস্ট সার্ভারে আসে, Sleuth একটি Trace ID তৈরি করে এবং সেই Trace ID সার্ভিসের মধ্যে সমস্ত কলের সাথে যুক্ত থাকে। এই Trace ID সমস্ত লগের মধ্যে প্রচুর পরিমাণে সম্পর্ক তৈরি করে এবং রিকোয়েস্টটি কোথা থেকে এসেছে, কোথায় যাচ্ছে তা ট্র্যাক করা সহজ হয়।
  2. Span ID:
    Trace ID-এর সাথে আরও একটি গুরুত্বপূর্ণ কম্পোনেন্ট হলো Span ID। Span একটি নির্দিষ্ট কার্যকলাপ বা রিকোয়েস্টের একটি অংশ যা ট্র্যাক করা হয়। যেমন: একটি HTTP রিকোয়েস্ট, ডেটাবেস কল ইত্যাদি। স্প্যানের মাধ্যমে একটি টাস্কের সাথে সম্পর্কিত কার্যকলাপের সময়কাল এবং প্রক্রিয়া সহজেই মাপা যায়।
  3. লগ ইনফরমেশন সন্নিবেশিত করা:
    Sleuth যখন কোন সার্ভিস কল করে তখন সমস্ত কার্যকলাপের লগে Trace ID এবং Span ID অন্তর্ভুক্ত করে। ফলে, যখন লগগুলো একটি সেন্ট্রাল সার্ভারে পাঠানো হয়, তখন তা সহজেই সম্পর্কিত হয় এবং সিস্টেমের কার্যকলাপ সহজেই বুঝতে পারে।

Spring Cloud Sleuth কনফিগারেশন

Spring Cloud Sleuth কনফিগার করার জন্য আপনাকে কিছু সাধারণ ডিপেন্ডেন্সি এবং কনফিগারেশন সেটআপ করতে হবে।

1. Spring Cloud Sleuth Dependency

Spring Cloud Sleuth ব্যবহার করতে, আপনার pom.xml ফাইলে এই ডিপেন্ডেন্সিটি যোগ করতে হবে:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

2. Spring Cloud Sleuth Logs Configuration

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

3. Sleuth + Zipkin (Distributed Tracing)

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)

4. Example Usage

আপনার 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 এর সুবিধা

  1. ডিস্ট্রিবিউটেড ট্রেসিং:
    Sleuth সমস্ত সার্ভিসে ডিস্ট্রিবিউটেড ট্রেসিং ব্যবহার করে, যা সার্ভিসগুলোর মধ্যে কার্যকলাপ সঠিকভাবে ট্র্যাক করতে সহায়ক।
  2. পারফরম্যান্স মনিটরিং:
    Sleuth ট্রেসিংয়ের মাধ্যমে আপনি সার্ভিসের পারফরম্যান্স বুঝতে পারবেন, কোন সার্ভিসে বিলম্ব ঘটছে এবং কোথায় অপটিমাইজেশন প্রয়োজন।
  3. লগিং সম্পর্কিততা:
    Sleuth ট্রেস আইডি এবং স্প্যান আইডি লগ ফাইলের মাধ্যমে সার্ভিস কলগুলোর মধ্যে সম্পর্ক তৈরি করে এবং ডিবাগিং সহজ করে।
  4. ইন্টিগ্রেশন:
    Sleuth সহজেই Zipkin, Jaeger এবং অন্যান্য ডিস্ট্রিবিউটেড ট্রেসিং টুলসের সাথে ইন্টিগ্রেট করা যায়, যা সার্ভিসের কার্যকলাপ ভিজুয়ালাইজ করতে সাহায্য করে।

উপসংহার

Spring Cloud Sleuth একটি শক্তিশালী ডিস্ট্রিবিউটেড ট্রেসিং টুল যা মাইক্রোসার্ভিস আর্কিটেকচারের কার্যকলাপ ট্র্যাক করতে ব্যবহৃত হয়। এটি লোগিং সম্পর্কিততা, পারফরম্যান্স ট্র্যাকিং, এবং সার্ভিসের মধ্যে কার্যকলাপের উপর নজর রাখতে সহায়ক। Zipkin বা Jaeger এর সাথে ইন্টিগ্রেশন করার মাধ্যমে এটি আরও কার্যকরী হতে পারে। Spring Cloud Sleuth ব্যবহারের মাধ্যমে মাইক্রোসার্ভিস সিস্টেমের ডিবাগিং এবং পারফরম্যান্স ট্র্যাকিং অনেক সহজ হয়ে ওঠে।

Content added By

Distributed Tracing কি এবং কেন এটি গুরুত্বপূর্ণ?

110
110

Distributed Tracing হলো একটি প্রযুক্তি যা ডিস্ট্রিবিউটেড সিস্টেমে একাধিক সার্ভিসের মধ্যে একটি রিকোয়েস্টের চলাচল ট্র্যাক করে। এটি সাহায্য করে ডেটা বা রিকোয়েস্ট কোথা থেকে এসেছে, কোন সার্ভিসে গেছে, এবং সার্ভিসটি কীভাবে সাড়া দিয়েছে তা দেখতে। Distributed Tracing এর মাধ্যমে আপনি জানতে পারেন একটি রিকোয়েস্ট বা প্রক্রিয়া সার্ভিসের মধ্য দিয়ে কিভাবে প্রবাহিত হয়েছে, কখন এটি শুরু হয়েছে এবং কখন শেষ হয়েছে।

এটি মাইক্রোসার্ভিস আর্কিটেকচারের জন্য বিশেষভাবে গুরুত্বপূর্ণ, কারণ সেখানে একাধিক সার্ভিসের মধ্যে কমিউনিকেশন এবং ডেটা ট্রান্সফার হয়ে থাকে। এর মাধ্যমে কোনো নির্দিষ্ট রিকোয়েস্টের প্রতিটি স্টেপ মনিটর করা যায়।


Distributed Tracing এর মূল উপাদান

  1. Trace:
    • একটি ট্রেস হলো একটি পূর্ণ রিকোয়েস্টের জীবনচক্র, যা সার্ভিসগুলোর মাধ্যমে চলে। এটি একাধিক স্প্যানের (span) সমষ্টি হতে পারে।
  2. Span:
    • একটি স্প্যান হলো একটি নির্দিষ্ট সুনির্দিষ্ট কাজ বা সার্ভিস কলের ট্র্যাক। এটি একটি নির্দিষ্ট কাজের স্টেপের মধ্যে সময় নেয় এবং সেটি কোথা থেকে কোথায় যাচ্ছে তা নির্দেশ করে।
  3. Context Propagation:
    • ট্রেসিং ডেটা একটি সার্ভিস থেকে অন্য সার্ভিসে পাস করতে হয়। এটি সাধারণত হেডারের মাধ্যমে করা হয়, যাতে সমস্ত সার্ভিস একে অপরের সঙ্গে ট্রেস সম্পর্কিত তথ্য শেয়ার করতে পারে।

Distributed Tracing কেন গুরুত্বপূর্ণ?

  1. পারফরম্যান্স মনিটরিং এবং সমস্যা সমাধান:
    • মাইক্রোসার্ভিস আর্কিটেকচারে একাধিক সার্ভিসের মধ্যে যোগাযোগ করা হয়। যখন একটি সার্ভিসে সমস্যা (যেমন লেটেন্সি, টাইমআউট, বা ব্যর্থতা) ঘটে, তখন পুরো সিস্টেমে তার প্রভাব পড়তে পারে। Distributed Tracing এর মাধ্যমে আপনি কোনো সার্ভিসে কোথায় সমস্যা ঘটছে তা সহজেই ট্র্যাক করতে পারেন, যার ফলে দ্রুত সমস্যা সমাধান সম্ভব হয়।
  2. রিলায়েবিলিটি এবং স্থিতিশীলতা:
    • সিস্টেমের মধ্যে প্রতিটি সার্ভিস কিভাবে এবং কোথায় কাজ করছে তা ট্র্যাক করা গেলে, সার্ভিসের অবস্থা এবং রিলায়েবিলিটি আরও সহজে বুঝে ফেলা যায়। এর মাধ্যমে আপনি সিস্টেমের যে কোনো ব্যর্থতাকে চিহ্নিত করে তার ওপর কাজ করতে পারেন।
  3. কথোপকথন বিশ্লেষণ (Conversation Analysis):
    • Distributed Tracing সার্ভিসগুলোর মধ্যে কথা বলার (communication) প্রক্রিয়া বিশ্লেষণ করতে সাহায্য করে। আপনি দেখতে পারেন কোন সার্ভিসটি অন্য সার্ভিসের সাথে কিভাবে সম্পর্কিত, কীভাবে একে অপরের সাথে ডেটা শেয়ার করছে, এবং সিস্টেমের মধ্যে কোন নির্দিষ্ট কাজগুলো সময় নিচ্ছে।
  4. স্কেলেবিলিটি এবং অপটিমাইজেশন:
    • সিস্টেমের বিভিন্ন অংশের কার্যকারিতা পর্যালোচনা করে আপনি সেগুলিকে অপটিমাইজ করতে পারবেন। মাইক্রোসার্ভিস আর্কিটেকচারে কোন সার্ভিসটি বেশি লোড নিচ্ছে বা কোথায় বিলম্ব হচ্ছে তা বুঝে কাজ করা যায়।
  5. রেট লিমিটিং এবং এডি-হক মনিটরিং:
    • Distributed Tracing এর মাধ্যমে আপনি সহজেই সার্ভিসগুলোর মাধ্যমে ট্রাফিকের প্রবাহ মনিটর করতে পারবেন। এটি উন্নত রেট লিমিটিং এবং এডি-হক মনিটরিং সম্ভব করে।
  6. ডেটা নির্ভরযোগ্যতা নিশ্চিত করা:
    • যখন একাধিক সার্ভিসের মধ্যে ডেটা আদান-প্রদান হয়, তখন একাধিক স্টেপের মধ্যে ডেটার স্থিতিশীলতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে Distributed Tracing প্রয়োজনীয় অবজারভেশন সরবরাহ করে।

Spring Cloud এবং Distributed Tracing

Spring Cloud, Spring Cloud Sleuth এবং Zipkin বা OpenTelemetry সহ বিভিন্ন টুলের মাধ্যমে Distributed Tracing সমর্থন করে। Spring Cloud Sleuth সার্ভিস কলের জন্য ট্রেসিং এবং লগিং তথ্য সংগ্রহ করে এবং সেই তথ্যটি Zipkin বা OpenTelemetry সিস্টেমে পাঠিয়ে ট্রেস রেকর্ড করে।

Spring Cloud Sleuth এবং Zipkin Integration:

  1. Spring Cloud Sleuth Dependency:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
  1. Spring Cloud Zipkin Dependency:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
  1. application.properties কনফিগারেশন:
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
  1. Zipkin সার্ভিস সেটআপ:
    • Zipkin একটি সার্ভিস যা ট্রেসিং ডেটা সংগ্রহ করে এবং তা ভিজ্যুয়ালি প্রদর্শন করে। Zipkin-এ আপনি সার্ভিস কলের পথ, সময়, এবং লেটেন্সি দেখতে পাবেন।

কীভাবে Distributed Tracing কাজ করে?

  1. Trace Start:
    • একটি রিকোয়েস্ট শুরু হলে একটি Trace তৈরি হয়। প্রতিটি সার্ভিসের জন্য একটি ইউনিক ট্রেস আইডি তৈরি করা হয় যা পুরো ট্রেসের মধ্যে ব্যবহৃত হয়।
  2. Span Creation:
    • সার্ভিস যখন অন্য সার্ভিসকে কল করে, তখন Span তৈরি হয়। এটি একটি নির্দিষ্ট সার্ভিসের কাজ বা একটানা চলা প্রক্রিয়া ট্র্যাক করে।
  3. Context Propagation:
    • সার্ভিসের মধ্যে trace context হেডার দ্বারা পাস করা হয় যাতে পুরো ট্রেসের তথ্য এক সার্ভিস থেকে অন্য সার্ভিসে ট্র্যাক করা যায়।
  4. Trace Completion:
    • একটি রিকোয়েস্ট যখন সমস্ত সার্ভিসের মাধ্যমে চলে যায়, তখন পুরো ট্রেস পূর্ণ হয় এবং সমস্ত স্প্যানের তথ্য একত্রিত হয়ে ট্রেস হিসেবে তৈরি হয়।
  5. Monitoring & Visualization:
    • Zipkin বা OpenTelemetry ব্যবহার করে এই ট্রেসগুলির তথ্য সংগ্রহ করা হয় এবং গ্রাফিক্যাল ইন্টারফেসে দেখানো হয়, যেখানে আপনি রিকোয়েস্টের সম্পূর্ণ পথ এবং প্রতিটি স্টেপের সময় বিশ্লেষণ করতে পারবেন।

উপসংহার

Distributed Tracing মাইক্রোসার্ভিস আর্কিটেকচারের জন্য অত্যন্ত গুরুত্বপূর্ণ একটি প্রযুক্তি, যা সার্ভিস কলের কার্যকারিতা এবং কর্মক্ষমতা বিশ্লেষণ করতে সাহায্য করে। এটি সিস্টেমে সমস্যা বা বিলম্ব শনাক্ত করার মাধ্যমে পারফরম্যান্স অপ্টিমাইজেশন, ফল্ট টলারেন্স, এবং রিলায়েবিলিটি নিশ্চিত করতে সাহায্য করে। Spring Cloud Sleuth, Zipkin, এবং OpenTelemetry এর মাধ্যমে Distributed Tracing খুব সহজেই ইন্টিগ্রেট করা যায় এবং ডিস্ট্রিবিউটেড সিস্টেমের স্ট্যাটাস ট্র্যাক করা যায়।

Content added By

Spring Cloud Sleuth দিয়ে Application এর Trace Management

83
83

Spring Cloud Sleuth একটি ডিসট্রিবিউটেড ট্রেসিং সিস্টেম যা মাইক্রোসার্ভিস আর্কিটেকচারে যোগাযোগের ট্রেসিং পরিচালনা করতে সাহায্য করে। এটি Spring Boot অ্যাপ্লিকেশনে বিভিন্ন সার্ভিস কলের ট্রেসিং এবং লগিং তথ্য সংগ্রহ করে, যা ডেভেলপারদের এবং সিস্টেম অ্যাডমিনিস্ট্রেটরদের সার্ভিসের পারফরম্যান্স এবং সমস্যাগুলির দ্রুত সমাধান করতে সহায়ক হয়। Spring Cloud Sleuth একটি Trace (অথবা সার্ভিস কলের চেইন) এবং Span (একটি নির্দিষ্ট সার্ভিস কলের একটি ইউনিট) ধারণা ব্যবহার করে।

Distributed Tracing ব্যবহারের মাধ্যমে, যখন বিভিন্ন সার্ভিস একে অপরকে কল করে, তখন প্রতিটি সার্ভিসের মধ্যে ট্রেস আইডি এবং স্প্যান আইডি পাস করা হয়। এটি সার্ভিসের প্রতিটি রিকোয়েস্ট এবং প্রতিক্রিয়া ট্র্যাক করতে সাহায্য করে এবং মাইক্রোসার্ভিস আর্কিটেকচারের কার্যকলাপের সম্পূর্ণ ছবি তৈরি করে।


Spring Cloud Sleuth এর মাধ্যমে Trace Management এর ধারণা

  1. Trace: একটি Trace একটি সিস্টেমের মধ্যে একাধিক সার্ভিস কলের একটি ধারাবাহিকতা (যেমন, এক সার্ভিসের কল আরেক সার্ভিসের কল দ্বারা অনুসৃত হচ্ছে)।
  2. Span: প্রতিটি Span একটি নির্দিষ্ট সার্ভিস কল বা একটি নির্দিষ্ট কাজের প্রতিনিধিত্ব করে যা একটি Trace এর মধ্যে থাকতে পারে।
  3. Trace ID & Span ID: Sleuth প্রতিটি সার্ভিস কলের জন্য একটি Trace ID এবং Span ID জেনারেট করে। Trace ID পুরো রিকোয়েস্টের জন্য ইউনিক এবং Span ID নির্দিষ্ট সার্ভিসের জন্য ইউনিক।

এটি ডেভেলপারদের সাহায্য করে রিকোয়েস্টের পুরো পথ (যার মধ্যে একাধিক সার্ভিস কলের মাধ্যমে ডেটা চলে) ট্র্যাক করতে, পারফরম্যান্স সমস্যাগুলি চিহ্নিত করতে এবং সার্ভিসের মধ্যে অপ্রত্যাশিত বিলম্ব বা ব্যর্থতার কারণ অনুসন্ধান করতে।


Spring Cloud Sleuth সেটআপ করা

Step 1: Maven ডিপেনডেন্সি যোগ করা

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>

Step 2: 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 তৈরি করবে।

Step 3: 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 স্বয়ংক্রিয়ভাবে ট্রেস আইডি এবং স্প্যান আইডি যুক্ত করবে এবং এই তথ্য লোগে দেখতে পাবেন।


Spring Cloud Sleuth Logs Example

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!"

এখানে:

  • Trace ID: 6f4a578bc823fcb1 — পুরো রিকোয়েস্টের জন্য ইউনিক ট্রেস আইডি।
  • Span ID: 2a749f39cc869e3f — নির্দিষ্ট সার্ভিস কলের জন্য ইউনিক স্প্যান আইডি।

Step 4: Distributed Tracing Visualization

Spring Cloud Sleuth সাধারণত Zipkin বা Jaeger এর সাথে ইন্টিগ্রেট করা হয়, যাতে ডিস্ট্রিবিউটেড ট্রেসিং এর দৃশ্যমানতা পাওয়া যায়।

Zipkin Integration:

Spring Cloud Sleuth Zipkin-এর সাথে সংযুক্ত করতে:

  1. Add Zipkin Dependency:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
  1. Configure Zipkin in application.properties:
# Zipkin server URL
spring.zipkin.baseUrl=http://localhost:9411
spring.sleuth.sampler.probability=1.0  # Trace all requests
  1. Start Zipkin Server:

Zipkin চালু করতে আপনি Docker ব্যবহার করতে পারেন:

docker run -d -p 9411:9411 openzipkin/zipkin

এখন আপনি http://localhost:9411 এ গিয়ে Zipkin UI-তে ট্রেস তথ্য দেখতে পাবেন।

Jaeger Integration:

Jaeger সিস্টেম ব্যবহার করতে হলে Jaeger ট্রেসিং সার্ভার এবং ডিপেনডেন্সি কনফিগারেশন করতে হবে। Jaeger অধিকভাবে কার্যকরী এবং অনেক মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়।


Step 5: Monitoring with Spring Boot Actuator

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 এর মাধ্যমে, সার্ভিসের প্রতিটি রিকোয়েস্টের ট্রেসিং, লগিং এবং ডিবাগিং করা সহজ এবং সিস্টেমের পারফরম্যান্স উন্নত করা সম্ভব।

Content added By

Sleuth এর সাথে Zipkin Integration

77
77

Spring Cloud Sleuth এবং Zipkin

Spring Cloud Sleuth একটি লাইটওয়েট ট্রেসিং সলিউশন যা মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়। এটি একটি সার্ভিস কলের ট্রেস তৈরি করে, যার মাধ্যমে ডিস্ট্রিবিউটেড সিস্টেমের বিভিন্ন সার্ভিসের মধ্যে ডেটার প্রবাহ ট্র্যাক করা যায়। এটি সার্ভিসের পারফরম্যান্স এবং ডিবাগিং সমস্যা সমাধানে সাহায্য করে।

Zipkin একটি ডিসট্রিবিউটেড ট্রেসিং সিস্টেম যা Spring Cloud Sleuth এর সাথে ইন্টিগ্রেট করা যেতে পারে। Zipkin মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস কল ট্র্যাকিং, ডেটা সংগ্রহ এবং বিশ্লেষণ করার জন্য ব্যবহৃত হয়। Zipkin সার্ভিস কলগুলোর সময়, সার্ভিসের মধ্যে ডেটা স্থানান্তর এবং ল্যাটেন্সি বিশ্লেষণ করতে সাহায্য করে।

Spring Cloud Sleuth এবং Zipkin একত্রে কাজ করলে আপনি আপনার মাইক্রোসার্ভিস অ্যাপ্লিকেশনে ট্রেসিং এবং লগিং সক্ষম করতে পারবেন, যা সার্ভিসের কার্যকারিতা মনিটর এবং ত্রুটি সনাক্ত করতে সাহায্য করে।


Sleuth এর সাথে Zipkin Integration কনফিগারেশন

Spring Cloud Sleuth এবং Zipkin এর মধ্যে ইন্টিগ্রেশন কনফিগার করার জন্য কয়েকটি সহজ পদক্ষেপ রয়েছে। নিম্নলিখিত নির্দেশিকাগুলি অনুসরণ করে আপনি আপনার Spring Boot অ্যাপ্লিকেশনে Sleuth এবং Zipkin ইন্টিগ্রেট করতে পারবেন।

১. Maven Dependency যুক্ত করা

প্রথমে আপনার 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 কনফিগার করা

এখন application.properties বা application.yml ফাইলে Zipkin সার্ভারের URL এবং অন্যান্য প্রয়োজনীয় কনফিগারেশন সেট করতে হবে।

application.properties:

# 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

application.yml:

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 সার্ভার চলমান থাকতে হবে যাতে এটি ট্রেস ডেটা গ্রহণ করতে পারে। আপনি Zipkin সার্ভার Docker ব্যবহার করে চালু করতে পারেন:

docker run -d -p 9411:9411 openzipkin/zipkin

এটি Zipkin সার্ভারকে http://localhost:9411 এ চালু করবে। এখন আপনার অ্যাপ্লিকেশন Zipkin সার্ভারে ট্রেস ডেটা পাঠাতে সক্ষম হবে।

৪. Spring Boot অ্যাপ্লিকেশন তৈরি করা

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 ব্যবহার করে আমরা কাস্টম ট্যাগ যোগ করছি এবং ট্রেস আইডি রিটার্ন করছি।

৫. Logback কনফিগারেশন (Optional)

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 Dashboard এ ট্রেস দেখা

Zipkin সার্ভার চালু থাকার পর আপনি Zipkin ড্যাশবোর্ডে গিয়ে ট্রেসিং ডেটা দেখতে পারবেন। Zipkin ড্যাশবোর্ডে http://localhost:9411 এ গিয়ে, আপনি ট্রেস, স্প্যান এবং বিভিন্ন সার্ভিসের পারফরম্যান্স বিশ্লেষণ করতে পারবেন।


সারাংশ

Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন ডিস্ট্রিবিউটেড ট্রেসিং এবং মাইক্রোসার্ভিস আর্কিটেকচারে কার্যক্ষমতা মনিটরিং করার জন্য একটি শক্তিশালী সলিউশন প্রদান করে। Spring Cloud Sleuth সার্ভিসের মধ্যে ট্রেস তৈরি করে এবং Zipkin ট্রেসিং তথ্য সংগ্রহ করে এবং পারফরম্যান্স বিশ্লেষণ করতে সাহায্য করে। এটি ডেভেলপারদের অ্যাপ্লিকেশনের কার্যকারিতা বিশ্লেষণ এবং ডিবাগিং করতে সহায়ক হয়। Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন সেটআপ করা সহজ এবং কার্যকর, এবং এটি মাইক্রোসার্ভিস ডিজাইনের একটি অপরিহার্য অংশ হয়ে উঠেছে।

Content added By

উদাহরণ সহ Sleuth এবং Zipkin এর মাধ্যমে Tracing

67
67

Spring Cloud Sleuth এবং Zipkin হল মাইক্রোসার্ভিস আর্কিটেকচারের মধ্যে ডিস্ট্রিবিউটেড ট্রেসিং করতে ব্যবহৃত টুলস। Sleuth হল একটি Spring Cloud লাইব্রেরি যা অ্যাপ্লিকেশনগুলির মধ্যে ট্রেসিং এবং লগিং পরিচালনা করতে সহায়ক এবং Zipkin হল একটি ডিসেন্ট্রালাইজড ট্রেসিং সিস্টেম যা সব সার্ভিসে ট্রেসিং ডেটা সংগ্রহ এবং বিশ্লেষণ করতে ব্যবহৃত হয়। এই টুলগুলি মাইক্রোসার্ভিসের মধ্যে সিস্টেম ট্রেসিং ও ডিবাগিং সহজ করে তোলে এবং পুরো প্রক্রিয়াটির দৃশ্যমানতা বৃদ্ধি করে।


Spring Cloud Sleuth এবং 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 ইন্টিগ্রেশন নিশ্চিত করবে, যা আপনার মাইক্রোসার্ভিসের মধ্যে ট্রেসিং সক্ষম করবে।


Step 1: Zipkin Server Setup

Zipkin সার্ভারটি একটি সার্ভিস হিসেবে চলবে এবং এটি আপনার সমস্ত মাইক্রোসার্ভিসের ট্রেসিং ডেটা সংগ্রহ করবে। Zipkin সার্ভার চালু করার জন্য, আপনি Docker ব্যবহার করতে পারেন, অথবা আপনি ম্যানুয়ালি Zipkin Server ডিপ্লয় করতে পারেন।

Docker Command (Zipkin Server চালানো)

Zipkin সার্ভার চালানোর জন্য Docker ব্যবহার করতে পারেন:

docker run -d -p 9411:9411 openzipkin/zipkin

এটি Zipkin সার্ভারকে localhost:9411 পোর্টে চালু করবে।


Step 2: Spring Boot অ্যাপ্লিকেশন কনফিগারেশন

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% ট্রেসিং নিশ্চিত করবে।

Step 3: Spring Boot অ্যাপ্লিকেশন ট্রেসিং যুক্ত করা

Spring Boot অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে Sleuth এবং Zipkin ইন্টিগ্রেশন দ্বারা ট্রেসিং ডেটা সরবরাহ করবে। আপনি সাধারণ REST API কল ব্যবহার করলে এটি ট্রেসিং তথ্য প্রদান করবে।

Controller Example:

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 সার্ভারে পাঠাবে।


Step 4: ট্রেসিং ডেটা দেখতে Zipkin UI

Zipkin UI তে ট্রেসিং তথ্য দেখতে, আপনার ব্রাউজারে http://localhost:9411 URL-এ যান। এখানে আপনি সমস্ত সার্ভিসের ট্রেসিং ডেটা দেখতে পারবেন।

  • Search: সার্ভিসের নাম অনুসারে সার্চ করুন (যেমন my-service).
  • Trace Details: নির্দিষ্ট ট্রেসের ডিটেইলস দেখুন, যেমন ট্রেস আইডি, সার্ভিস কলের সময়, রেসপন্স টাইম, এবং অন্যান্য তথ্য।

Step 5: ট্রেসিং তথ্য বিশ্লেষণ করা

Zipkin UI তে আপনি দেখতে পারবেন যে কিভাবে ট্রেসিং ডেটা একটি সার্ভিস থেকে অন্য সার্ভিসে প্রবাহিত হচ্ছে। এখানে কয়েকটি গুরুত্বপূর্ণ বিষয় থাকবে:

  • Trace ID: এটি সমস্ত ট্রেসিং তথ্যের জন্য একটি ইউনিক আইডি যা সার্ভিস কলগুলোকে সম্পর্কিত রাখে।
  • Span ID: এটি প্রতিটি ইনডিভিজুয়াল সার্ভিস কলের জন্য একটি ইউনিক আইডি।
  • Duration: সার্ভিস কলের দৈর্ঘ্য।
  • Dependencies: সার্ভিসগুলির মধ্যে সম্পর্ক এবং কল স্ট্রাকচার।

Sleuth এবং Zipkin এর মাধ্যমে Tracing এর সুবিধা

  1. Distributed Tracing:
    • মাইক্রোসার্ভিসের মধ্যে ট্রেসিং নিশ্চিত করে, যাতে সার্ভিসগুলো একে অপরকে কীভাবে কল করছে এবং ট্রান্স্যাকশন চলাকালে কোথায় সময় ব্যয় হচ্ছে তা বিশ্লেষণ করা যায়।
  2. Performance Monitoring:
    • সার্ভিসগুলির মধ্যে ট্রেসিং তথ্যের মাধ্যমে পারফরম্যান্স ইস্যু সনাক্ত করা যায়।
  3. Debugging and Troubleshooting:
    • যদি কোনও সার্ভিস কল ব্যর্থ হয়, ট্রেসিং তথ্য ব্যবহার করে সমস্যা দ্রুত সনাক্ত করা যায় এবং নির্ধারণ করা যায় কোথায় সমস্যা ঘটেছে।
  4. Observability:
    • পুরো সিস্টেমের উপর দৃশ্যমানতা এবং নিরীক্ষণ নিশ্চিত করে।

Conclusion

Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন আপনার মাইক্রোসার্ভিস আর্কিটেকচারের মধ্যে distributed tracing করার জন্য অত্যন্ত কার্যকর। এটি সার্ভিসগুলোকে একে অপরকে ট্রেস করতে এবং তাদের মধ্যে যোগাযোগ এবং কার্যকারিতা বিশ্লেষণ করতে সাহায্য করে। এই সমাধানটি সমস্যাগুলিকে দ্রুত সনাক্ত করতে এবং পারফরম্যান্স অপটিমাইজ করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion