TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 549 subscribers
Post #251 92
OpenTelemetry
یک راه یکپارچه برای جمع‌آوری این داده‌ها فراهم می‌کند، که درک رفتار و سلامت اپلیکیشن‌های توزیع‌شده پیچیده را آسان‌تر می‌کند.
ما می‌توانیم داده‌های تله‌متری که جمع‌آوری می‌کنیم را به سرویسی که قادر به پردازش آن است و یک اینترفیس برای تحلیل آن به ما ارائه می‌دهد، صادر (export) کنیم.
ما قصد داریم OpenTelemetry را طوری پیکربندی کنیم که traceها را مستقیماً به Jaeger صادر کند.

افزودن OpenTelemetry به اپلیکیشن‌های NET.🔧

OpenTelemetry
کتابخانه‌ها و SDKهایی برای افزودن کد (instrumentation) به اپلیکیشن‌های NET. شما فراهم می‌کند. این instrumentationها به طور خودکار traces، metrics و logs مورد علاقه ما را ضبط می‌کنند.

ما قصد داریم پکیج‌های NuGet زیر را نصب کنیم: 📦
# Automatic tracing, metrics
Install-Package OpenTelemetry.Extensions.Hosting
# Telemetry data exporter
Install-Package OpenTelemetry.Exporter.OpenTelemetryProtocol
# Instrumentation packages
Install-Package OpenTelemetry.Instrumentation.Http
Install-Package OpenTelemetry.Instrumentation.AspNetCore

هنگامی که این پکیج‌های NuGet را نصب کردیم، زمان پیکربندی برخی سرویس‌ها فرا می‌رسد.
services
.AddOpenTelemetry()
.ConfigureResource(resource => resource.AddService(serviceName))
.WithTracing(tracing =>
{
tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddEntityFrameworkCoreInstrumentation()
.AddRedisInstrumentation()
.AddNpgsql();

tracing.AddOtlpExporter();
});


🌐 AddAspNetCoreInstrumentation -
این ابزار دقیق (instrumentation) ASP.NET Core را فعال می‌کند.

📤 AddHttpClientInstrumentation -
این ابزار دقیق HttpClient را برای درخواست‌های خروجی فعال می‌کند.

💾 AddEntityFrameworkCoreInstrumentation -
این ابزار دقیق EF Core را فعال می‌کند.

🔥 AddRedisInstrumentation -
این ابزار دقیق Redis را فعال می‌کند.

🐘 AddNpgsql -
این ابزار دقیق PostgreSQL را فعال می‌کند.

با پیکربندی تمام این ابزارهای دقیق، اپلیکیشن ما شروع به جمع‌آوری بسیاری از ردیابی‌های (traces) ارزشمند در زمان اجرا خواهد کرد.

ما همچنین باید یک متغیر محیطی را برای exporter اضافه شده با AddOtlpExporter پیکربندی کنیم تا به درستی کار کند. ما می‌توانیم OTEL_EXPORTER_OTLP_ENDPOINT را از طریق تنظیمات اپلیکیشن تنظیم کنیم. آدرس مشخص شده در اینجا به یک نمونه محلی Jaeger اشاره خواهد کرد.

OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317


اجرای Jaeger به صورت محلی 🐳

Jaeger
یک پلتفرم متن‌باز و توزیع‌شده برای ردیابی است. Jaeger جریان درخواست‌ها و داده‌ها را حین عبور از یک سیستم توزیع‌شده، ترسیم می‌کند.

در اینجا نحوه اجرای Jaeger داخل یک کانتینر Docker آمده است:
docker run -d -p 4317:4317 -p 16686:16686 jaegertracing/all-in-one:latest

ما از ایمیج jaegertracing/all-in-one:latest استفاده می‌کنیم و پورت 4317 را برای پذیرش داده‌های تله‌متری باز می‌کنیم. رابط کاربری Jaeger روی پورت 16686 در دسترس خواهد بود.

Distributed Tracing (ردیابی توزیع‌شده)

پس از نصب کتابخانه‌های OpenTelemetry و پیکربندی tracing در اپلیکیشن‌هایمان، می‌توانیم چند درخواست برای تولید داده‌های تله‌متری ارسال کنیم. سپس می‌توانیم به Jaeger دسترسی پیدا کرده و شروع به تحلیل distributed traceهای خود کنیم.

ثبت نام یک کاربر جدید 👤

انتشار یک پیام با MassTransit 📨

بررسی اطلاعات اضافی trace 💾

traceهای توزیع‌شده پیچیده 🕸
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →