ربط آثار الواجهة الأمامية والخلفية
مرّر سياق الأثر عبر طلبات fetch كي تظهر المقاطع الخلفية ضمن الأثر نفسه الذي بدأه إجراء واجهة المستخدم
ربط آثار الواجهة الأمامية والخلفية درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
الهدف من التتبّع الموزّع
الهدف النهائي من مراقبة الواجهة الأمامية هو إنشاء تتبّع واحد يربط نقرة المستخدم في React عبر الشبكة، ثم مع معالجات API، ثم مع استدعاءات الخدمات، وصولًا إلى استعلام قاعدة البيانات الذي تسبب في بطء الاستجابة. يجعل هذا التتبّع الشامل تحليل السبب الجذري فوريًا.
معيار W3C TraceContext
تحدد مواصفة W3C TraceContext تنسيق ترويسة traceparent: version-traceId-parentSpanId-flags. تبدو قيمة نموذجية كما يلي: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. يُشترك في معرّف التتبّع trace ID عبر عملية التتبّع الموزّعة بأكملها، بينما يتغيّر معرّف span الأب عند كل انتقال.
الحقن التلقائي للترويسات
تحقن أداة OTel fetch instrumentation تلقائيًا ترويسة traceparent في كل طلب fetch صادر. تحمل الترويسة معرّف التتبّع الحالي ومعرّف span لطلب fetch في الواجهة الأمامية باعتباره الأب، مما يتيح للواجهة الخلفية إنشاء span فرعي مرتبط بـ span الواجهة الأمامية.
متابعة التتبّع في الواجهة الخلفية
على الخادم، تقرأ أداة OTel HTTP instrumentation الخاصة بـ Node.js/Express ترويسة traceparent الواردة، وتنشئ spans تابعة لـ span طلب fetch في الواجهة الأمامية. يظل معرّف التتبّع محفوظًا، ولذلك يعرض Jaeger أو Grafana Tempo السلسلة كاملة — span المتصفح ← span Express ← span قاعدة البيانات — في عرض زمني واحد.
عرض عمليات التتبّع في Jaeger أو Grafana Tempo
بعد إجراء instrumentation لكل من الواجهة الأمامية والخلفية، افتحوا Jaeger أو Grafana Tempo وابحثوا عن معرّف تتبّع. سترون العرض الزمني الكامل: span مكوّن React في الأعلى، يليه span طلب fetch، ثم span معالج المسار في Express، ثم span استعلام قاعدة البيانات — وجميعها مع مددها وسماتها.
الربط حسب المستخدم
اضبطوا user.id باعتباره سمة على جميع spans في تطبيق React باستخدام span.setAttribute('user.id', userId). نفّذوا الأمر نفسه في الواجهة الخلفية. يمكنكم الآن تصفية واجهة المراقبة الخلفية لعرض جميع عمليات التتبّع لمعرّف مستخدم محدد، مما يتيح لكم تشخيص المشكلات التي أبلغ عنها عميل محدد.
الربط حسب الجلسة
أنشئوا معرّف جلسة فريدًا عند تحميل الصفحة، واضبطوه باعتباره session.id على جميع spans في الواجهة الأمامية. أدرجوه في ترويسات الطلب حتى تضيفه الواجهة الخلفية أيضًا إلى spans الخاصة بها. يتيح الربط حسب الجلسة إعادة بناء التسلسل الكامل للإجراءات التي نفّذها المستخدم خلال جلسة واحدة.
ربط جلسات RUM بعمليات التتبّع
تدمج الأدوات التجارية مثل Datadog جلسات RUM مع عمليات تتبّع APM تلقائيًا. تحقن Datadog RUM SDK ترويسة محددة (X-Datadog-Trace-Id) في طلبات fetch، وتقرأها Datadog APM SDK في الواجهة الخلفية لربط إعادة تشغيل جلسة RUM بالتتبّع الموزّع — ويمكنكم مشاهدة إعادة تشغيل الجلسة والتتبّع في الوقت نفسه.
فائدة الربط
لنفترض أن مستخدمًا يشتكي من بطء إتمام الشراء. باستخدام عمليات التتبّع المترابطة، تبحثون عن user.id في واجهة المراقبة الخلفية، وتعثرون على تتبّع إتمام الشراء، وتلاحظون فورًا أن سبب البطء كان استعلامًا لقاعدة البيانات استغرق 900 مللي ثانية لضم جدولين كبيرين — وهو أمر لا تظهره مقاييس الواجهة الأمامية وحدها.
OpenTelemetry Collector باعتباره وكيلًا
لا يمكن للمتصفحات إرسال عمليات التتبّع مباشرةً إلى Jaeger أو الواجهات الخلفية الأخرى، بسبب قيود CORS واحتمال كشف بيانات الاعتماد. بدلًا من ذلك، شغّلوا OTel Collector باعتباره وكيلًا: اضبطوا OTLPTraceExporter للإرسال إلى نقطة نهاية Collector الخاصة بكم، والتي توزّع البيانات بعد ذلك على Jaeger أو Grafana Tempo أو أي واجهة خلفية أخرى.
اعتبارات الخصوصية
قد تلتقط عمليات تتبّع الواجهة الأمامية بيانات حساسة دون قصد، مثل قيم حقول النماذج في عناوين URL، أو معلومات التعريف الشخصية PII في سمات span، أو رموز الجلسات في الترويسات. راجعوا instrumentation الخاصة بكم للتأكد من عدم تضمين أي بيانات حساسة في سمات span. استخدموا span.setAttribute باعتدال، ونقّوا معلمات استعلام URL قبل تسجيلها.
تنسيق ترويسة traceparent
ما تنسيق ترويسة traceparent الخاصة بـ W3C TraceContext؟
مراجعة الدرس
يؤدي ربط عمليات تتبّع الواجهة الأمامية والخلفية إلى توفير رؤية شاملة لمسار طلب المستخدم بالكامل. تربط ترويسات W3C TraceContext traceparent بين spans طلبات fetch في المتصفح وspans الواجهة الخلفية تلقائيًا عبر OTel instrumentation. أَثروا جميع spans بالسمتين user.id وsession.id لتسهيل تصحيح الأخطاء المستهدف. استخدموا OTel Collector وكيلًا بين المتصفح والواجهة الخلفية لتجنب مشكلات CORS وكشف بيانات الاعتماد.
الأسئلة الشائعة
هل درس «ربط آثار الواجهة الأمامية والخلفية» مجاني؟
نعم — نص درس «ربط آثار الواجهة الأمامية والخلفية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «ربط آثار الواجهة الأمامية والخلفية»؟
مرّر سياق الأثر عبر طلبات fetch كي تظهر المقاطع الخلفية ضمن الأثر نفسه الذي بدأه إجراء واجهة المستخدم تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «ربط آثار الواجهة الأمامية والخلفية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قابلية رصد الواجهة الأمامية: ماذا ولماذا؟
- آثار OpenTelemetry من المتصفح
- مراقبة المستخدمين الفعليين وWeb Vitals
- ربط آثار الواجهة الأمامية والخلفية