TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #612 257
6️⃣ راه‌اندازی OpenTelemetry 🔍

درک این‌که داخل اپلیکیشن شما دقیقاً چه اتفاقی می‌افتد، حیاتی است. OpenTelemetry یک روش استاندارد برای جمع‌آوری و تحلیل داده‌های telemetry از اپلیکیشن‌ها فراهم می‌کند و به شما دید (visibility) دقیقی نسبت به رفتار سیستم می‌دهد. 👁

هر اپلیکیشن وابستگی‌های خارجی دارد؛ مثل دیتابیس‌ها، cacheها، APIها و سایر سرویس‌ها. مانیتور کردن این وابستگی‌ها برای درک عملکرد اپلیکیشن و نحوه‌ی تعامل آن با بقیه‌ی سیستم ضروری است. ⚙️

ءOpenTelemetry سه نوع داده از اپلیکیشن جمع‌آوری می‌کند:

• ءLogs توضیح می‌دهند چه اتفاقی افتاده است. 📝
• ءTraces نشان می‌دهند عملیات کجا انجام شده و چقدر زمان برده است. ⏱️
• ءMetrics نشان می‌دهند رویدادها با چه فرکانسی رخ می‌دهند. 📊

وقتی از Aspire استفاده می‌کنید، OpenTelemetry از قبل برای شما پیکربندی شده است. پروژه‌ی ServiceDefaults شامل تنظیمات observability است:
public static TBuilder ConfigureOpenTelemetry<TBuilder>(this TBuilder builder)
where TBuilder : IHostApplicationBuilder
{
builder.Logging.AddOpenTelemetry(logging =>
{
logging.IncludeFormattedMessage = true;
logging.IncludeScopes = true;
});

builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddRuntimeInstrumentation();
})
.WithTracing(tracing =>
{
tracing.AddSource(builder.Environment.ApplicationName)
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();
});

builder.AddOpenTelemetryExporters();
return builder;
}

ءAspire به‌صورت خودکار OpenTelemetry را طوری تنظیم می‌کند که logs، metrics و traces را به داشبورد Aspire ارسال کند.
اما Aspire داده‌های OpenTelemetry و داشبورد را ذخیره (persist) نمی‌کند. در محیط production، به یک راه‌حل قوی‌تر برای ذخیره و تحلیل داده‌های telemetry نیاز دارید. 🏗

می‌توانید exporterهای اضافی تنظیم کنید تا داده‌ها به ابزارهایی مثل Jaeger، Seq، Grafana یا سایر ابزارهای observability ارسال شوند. 📡

به‌صورت پیش‌فرض، OpenTelemetry فقط برای ASP.NET Core و HttpClient فعال است. برای وابستگی‌های اضافی مثل PostgreSQL یا Redis، باید پکیج‌های instrumentation را نصب کنید:
dotnet add package Npgsql.OpenTelemetry
dotnet add package OpenTelemetry.Instrumentation.StackExchangeRedis

سپس آن‌ها را در ServiceDefaults رجیستر کنید:
tracing.AddSource(builder.Environment.ApplicationName)
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddNpgsql()
.AddRedisInstrumentation();

داشبورد Aspire، distributed traceها را در تمام سرویس‌ها نمایش می‌دهد. می‌توانید دقیقاً ببینید چه کوئری‌هایی روی دیتابیس اجرا شده‌اند، چقدر طول کشیده‌اند و bottleneckها کجا هستند. 🧠

شروع observability از همان روز اول به شما کمک می‌کند ویژگی‌های عملکردی سیستم را زودتر درک کنید. می‌توانید کوئری‌های کند را شناسایی کنید، API callها را بهینه کنید و مشکلات را قبل از رسیدن به production رفع کنید. 🚀
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 →