التتبع الموزّع
تتبّعوا الطلبات عبر الخدمات باستخدام Activity
التتبع الموزّع درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
ما هو التتبع الموزّع؟
يتتبّع التتبع الموزّع طلبًا واحدًا أثناء انتقاله عبر الخدمات والمكوّنات. وتتحول كل وحدة عمل إلى نطاق، بينما تشكّل النطاقات المرتبطة أثر تتبع يُعرض كمخطط زمني للعمليات المتداخلة.
النطاقات وآثار التتبع
يحتوي النطاق على اسم ووقت بدء ووقت انتهاء وسمات وحالة. وتتداخل النطاقات؛ إذ يحتوي نطاق رئيسي، مثل طلب HTTP، على نطاقات فرعية، مثل استعلام قاعدة بيانات أو استدعاء صادر. وتشترك شجرة كاملة في معرّف تتبع واحد.
Activity هو نطاق .NET
في .NET، تُعد الفئة System.Diagnostics.Activity تطبيقًا لنطاق OpenTelemetry. وتنشئون الأنشطة من ActivitySource.
using System.Diagnostics;
private static readonly ActivitySource Source =
new("Checkout.Orders");بدء Activity
تبدأ StartActivity نطاقًا. غلّفوها داخل using لكي ينتهي النطاق، وتُسجّل مدته، عند الخروج من الكتلة.
using Activity activity = Source.StartActivity("PlaceOrder");
// work happens here; span ends when disposedإضافة الوسوم إلى نطاق
تربط الوسوم (السمات) سياقًا من أزواج المفتاح والقيمة بنطاق، مثل معرّف الطلب أو المبلغ، مما يجعل آثار التتبع قابلة للبحث وذات معنى.
activity?.SetTag("order.id", orderId);
activity?.SetTag("order.amount", amount);تسجيل الأحداث والحالة
استخدموا AddEvent للتعليقات التوضيحية المرتبطة بلحظة معينة، وSetStatus لتحديد النجاح أو الفشل، مما يُظهر الأخطاء في نظام التتبع الخلفي.
activity?.AddEvent(new ActivityEvent("inventory.reserved"));
activity?.SetStatus(ActivityStatusCode.Error, "Payment declined");تسجيل ActivitySource
لا يجمع OTel الأنشطة إلا من المصادر التي تسجلونها باستخدام AddSource، لذا أخبروا أداة التتبع باسم ActivitySource الخاص بكم.
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("Checkout.Orders"));القياس التلقائي
ينشئ القياس المضمّن نطاقات تلقائيًا للطلبات الواردة إلى ASP.NET Core واستدعاءات HttpClient الصادرة، مما يمنحكم أثر تتبع أساسيًا من دون كتابة أي شيفرة.
tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();نشر السياق
لكي يمتد أثر التتبع عبر الخدمات، يجب أن ينتقل معرّف التتبع بينها. يحقن OTel هذا المعرّف في ترويسات HTTP الصادرة (W3C traceparent) ويقرأه عند الطرف المستقبِل، فيربط النطاقات تلقائيًا ضمن أثر تتبع واحد.
علاقات الأصل والفرع
عند بدء نشاط أثناء وجود نشاط آخر حالي، يصبح النشاط الجديد فرعًا له عبر Activity.Current. وينشئ هذا التداخل شجرة أثر التتبع من دون ربط يدوي.
using var parent = Source.StartActivity("PlaceOrder");
using var child = Source.StartActivity("ChargeCard");
// child is nested under parent automaticallyأخذ العينات
قد يكون تتبع كل طلب مكلفًا. يسجّل أخذ العينات جزءًا فقط من الطلبات، مثل 10%، للتحكم في التكلفة مع الاحتفاظ ببيانات ممثلة.
اختبار سريع
اختبروا التتبع الموزّع.
مراجعة
يتابع التتبع الموزّع الطلب عبر نطاقات مترابطة تشترك في معرّف تتبع. في .NET، يمثل Activity النطاق، ويُنشأ من ActivitySource مسجّل عبر StartActivity، مع استخدام using لإنهائه. أضيفوا السياق باستخدام SetTag وAddEvent وSetStatus. ويربط القياس التلقائي ونشر السياق وفق W3C آثار التتبع عبر الخدمات، بينما يتحكم أخذ العينات في التكلفة.
الأسئلة الشائعة
هل درس «التتبع الموزّع» مجاني؟
نعم — نص درس «التتبع الموزّع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «التتبع الموزّع»؟
تتبّعوا الطلبات عبر الخدمات باستخدام Activity تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «التتبع الموزّع»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.