آثار OpenTelemetry من المتصفح
أعدد حزمة OTel JavaScript SDK في React، وأنشئ مقاطع زمنية لتفاعلات المستخدم، وصدّرها إلى جامع خلفي
آثار OpenTelemetry من المتصفح درس مجاني في React Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
حزمة OpenTelemetry JavaScript SDK
تتكوّن OpenTelemetry JavaScript SDK للمتصفحات من عدة حزم: توفر @opentelemetry/sdk-trace-web التنفيذ الأساسي لتتبّع الآثار، وتنشئ @opentelemetry/instrumentation-fetch مقاطع تلقائيًا لجميع استدعاءات Fetch API، بينما ترسل @opentelemetry/exporter-trace-otlp-http المقاطع إلى مُجمّع.
TracerProvider: أساس تتبّع OTel
يُعد TracerProvider كائن الإعداد المركزي في OpenTelemetry. وهو يحتفظ بقائمة SpanProcessors، التي تحدد ما يحدث للمقاطع المكتملة، وبالمورد الذي يصف تطبيقك، مثل اسم الخدمة وإصدارها، وبأي إعدادات لأخذ العينات.
BatchSpanProcessor: تصدير فعّال
يجمع BatchSpanProcessor المقاطع المكتملة في الذاكرة ويصدّرها على دفعات بدلًا من إرسال كل مقطع على حدة. ويقلل ذلك بدرجة كبيرة عدد طلبات HTTP إلى المُجمّع، مما يحسّن أداء المتصفح ويخفف الحمل على نقطة نهاية مُجمّع OTel.
OTLPTraceExporter: الإرسال إلى مُجمّع
يرسل OTLPTraceExporter المقاطع المجمّعة إلى مُجمّع متوافق مع OpenTelemetry عبر HTTP بتنسيق JSON أو protobuf. وتضبط عنوان URL للمُجمّع، مثل نقطة نهاية الوكيل الخاص بـ OTel Collector، بينما يتولى المُصدّر تلقائيًا منطق التسلسل وإعادة المحاولة.
ما هو Span؟
يمثل Span وحدة عمل واحدة ضمن أثر: تركيب مكوّن، أو استدعاء API، أو تفاعل مستخدم. وللمقاطع اسم ووقت بدء ووقت انتهاء وحالة (OK أو ERROR) ومجموعة من السمات ذات المفتاح والقيمة. وترتبط المقاطع ذات الصلة من خلال trace ID مشترك وعلاقات الأصل والفرع.
بدء المقاطع وإنهاؤها يدويًا
تنشئ أداة تتبّع باستخدام provider.getTracer('react-app')، وتبدأ المقاطع باستخدام tracer.startSpan('component-mount'). وبعد اكتمال العمل، استدعِ span.end() لتسجيل وقت الانتهاء. احرص دائمًا على إنهاء المقاطع — فالمقاطع المتسربة تهدر الذاكرة وتنتج بيانات غير مكتملة في الواجهة الخلفية للرصد.
إضافة السمات إلى المقاطع
تثري السمات المقاطع ببيانات سياقية: span.setAttribute('user.id', userId) أو span.setAttribute('route', location.pathname). ويمكن البحث عن السمات في الواجهة الخلفية للرصد، مما يتيح استعلامات مثل "اعرض جميع المقاطع البطيئة للمستخدم 42" أو "اعرض جميع الأخطاء في المسار /checkout".
إضافة أدوات Fetch تلقائيًا
تعدّل @opentelemetry/instrumentation-fetch دالة fetch العامة لإضافة مقاطع تلقائيًا لكل طلب HTTP صادر. ويسجل المقطع URL والطريقة ورمز حالة HTTP والمدة، من دون إجراء أي تغييرات على استدعاءات fetch الحالية.
نقل السياق عبر W3C TraceContext
عندما تنشئ أداة fetch instrumentation كائن span لطلب صادر، فإنها تحقن ترويسة التتبّع traceparent الخاصة بـ W3C TraceContext في الطلب. تقرأ الواجهة الخلفية المستقبِلة هذه الترويسة وتتابع التتبّع نفسه، فتنشئ تتبّعًا مترابطًا يمتد بين المتصفح والخادم.
تهيئة OTel في تطبيق React الخاص بكم
يجب أن تتم تهيئة OTel قبل تركيب أي مكوّنات — وعادةً ما يكون ذلك في ملف إدخال التطبيق (main.tsx) قبل استدعاء ReactDOM.createRoot. أنشئوا المزوّد، وسجّلوا المعالجات والمصدّرات، ثم استدعوا provider.register() لجعله TracerProvider العام.
أخذ العينات: التحكم في حجم التتبّع
يؤدي تسجيل كل تفاعل للمستخدم في التطبيقات ذات عدد الزيارات المرتفع إلى إنشاء كميات هائلة من بيانات التتبّع. اضبطوا أداة TraceIdRatioBased sampler (مثلًا، لأخذ عيّنة من 10% من عمليات التتبّع) في TracerProvider لتقليل الحجم. احرصوا دائمًا على أخذ عيّنة بنسبة 100% من عمليات التتبّع التي تتضمن أخطاءً، باستخدام أداة ParentBased sampler لضمان عدم فقدان أي خطأ.
الغرض من OTel BatchSpanProcessor
لماذا يُستخدم BatchSpanProcessor بدلًا من SimpleSpanProcessor في تطبيقات المتصفح؟
مراجعة الدرس
تستخدم حزمة OpenTelemetry JavaScript SDK أدوات TracerProvider وBatchSpanProcessor وOTLPTraceExporter لإجراء instrumentation للمتصفحات. تمثّل spans وحدات العمل، وتُثرى بالسمات. تنشئ أداة fetch instrumentation تلقائيًا spans لاستدعاءات API، وتحقن ترويسات W3C TraceContext لإتاحة التتبّع الموزّع من البداية إلى النهاية. ابدأوا التهيئة مبكرًا، واضبطوا أخذ العينات بما يناسب، وأنهِوا spans دائمًا للحفاظ على بيانات تتبّع منظمة.
الأسئلة الشائعة
هل درس «آثار OpenTelemetry من المتصفح» مجاني؟
نعم — نص درس «آثار OpenTelemetry من المتصفح» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «آثار OpenTelemetry من المتصفح»؟
أعدد حزمة OTel JavaScript SDK في React، وأنشئ مقاطع زمنية لتفاعلات المستخدم، وصدّرها إلى جامع خلفي تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «آثار OpenTelemetry من المتصفح»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قابلية رصد الواجهة الأمامية: ماذا ولماذا؟
- آثار OpenTelemetry من المتصفح
- مراقبة المستخدمين الفعليين وWeb Vitals
- ربط آثار الواجهة الأمامية والخلفية