تتبّعات OpenTelemetry لا تظهر: افحص الـ exporter أولًا
خدماتك مجهّزة بـ OTel لكن AllStak لا تعرض أي spans. والمتهم المعتاد exporter يعمل بـ gRPC، أو نقطة نهاية خاطئة، أو إفراغ مفقود.
كيف تبدو المشكلة
يعمل تجهيز OpenTelemetry بلا أخطاء والتطبيق يتصرف طبيعيًا — لكن لا تتبّعات تظهر في AllStak. تفشل مصدّرات OTel بهدوء افتراضيًا: اتصال مرفوض على منفذ gRPC، أو مسار خاطئ في نقطة النهاية، أو تصدير غير مصرّح — كلها لا تظهر إلا في سجلات تشخيص الـ SDK، إن ظهرت أصلًا.
ملاحظة نطاق قبل التصحيح: تستقبل AllStak تصدير تتبّعات OTLP عبر HTTP. أما المقاييس والسجلات عبر OTLP فغير مدعومة — فإذا كنت تنتظر ظهور مقاييس أو سجلات OTel، فهذا سلوك متوقع لا عطل.
الأسباب الجذرية الشائعة
exporter بـ gRPC بدل OTLP/HTTP
كثير من حِزم OTel تفترض OTLP عبر gRPC. تستقبل AllStak تصدير التتبّعات عبر HTTP — و exporter بـ gRPC موجّه إلى AllStak لا يتصل أبدًا، وتُسقط الـ spans بعد المحاولات.
نقطة النهاية أو ترويسة مفتاح API مضبوطة خطأ
يحتاج الـ exporter عنوان نقطة استقبال تتبّعات OTLP في AllStak ومفتاح API لمشروعك مرسَلًا كترويسة. وخطأ مطبعي في أيٍّ منهما يرفض كل تصدير.
العملية تنتهي قبل إفراغ الدفعة
تجمّع OTel الـ spans في دفعات قبل التصدير. والعمليات قصيرة العمر — أوامر CLI ومهام cron والدوال السحابية — كثيرًا ما تنتهي قبل شحن الدفعة ما لم تنادِ shutdown/flush الخاص بالـ SDK عند الخروج.
سمة service.name مفقودة
تصل الـ spans بلا سمة service.name لكن يصعب إيجادها — إذ تتجمع تحت خدمة مجهولة. يُنصح بشدة بضبط service.name حتى تصل تتبّعاتك حيث تبحث عنها.
التشخيص خطوة بخطوة
تحقّق من مسار التصدير من البروتوكول إلى الإفراغ — أغلب الإعدادات تفشل في أول خطوتين.
- 1
تأكد أن بروتوكول الـ exporter هو OTLP/HTTP
افحص صنف الـ exporter أو إعداد OTEL_EXPORTER_OTLP_PROTOCOL: يجب أن يكون نسخة HTTP (مثل http/protobuf) لا grpc. تستقبل AllStak تصدير تتبّعات OTLP عبر HTTP فقط.
- 2
تحقّق من عنوان نقطة النهاية
وجّه الـ exporter إلى نقطة استقبال تتبّعات OTLP في AllStak تمامًا كما في دليل إعداد OpenTelemetry على /docs/guides/opentelemetry — بما فيه المسار. فالمضيف المجرد أو المسار الخاطئ يرجع أخطاء قد يبتلعها الـ exporter.
- 3
أرسل مفتاح API كترويسة
اضبط ترويسات الـ exporter لتشمل مفتاح API لمشروعك كما هو موثّق في دليل الإعداد. وبدونه تُرفض التصديرات كغير مصادَقة — بصمت من وجهة نظر التطبيق.
- 4
فعّل سجلات تشخيص OTel مؤقتًا
فعّل سجلات التشخيص في OTel SDK وراقب نتائج التصدير: رفض الاتصال يشير إلى البروتوكول/نقطة النهاية، و401/403 إلى ترويسة المفتاح، والنجاح بلا بيانات إلى البيئة التي تعرضها.
- 5
أفرغ عند الإيقاف للعمليات قصيرة العمر
نادِ shutdown (أو force-flush) لمزوّد التتبّع قبل خروج العملية — وفي معالجات serverless في نهاية كل استدعاء إذا كان وقت التشغيل قد يتجمد. فالـ spans المجمّعة التي لا تُفرَغ لا تصل أبدًا.
- 6
اضبط service.name واعثر على spans خدمتك
اضبط سمة service.name (مثلًا عبر OTEL_SERVICE_NAME)، وأعد النشر، وابحث عن تلك الخدمة في عرض التتبّع في AllStak. إذا كانت الـ spans تصل بلا اسم، فستظهر الآن تحت الخدمة الصحيحة.
كيف تمنع تكرارها
- ثبّت البروتوكول صراحةً (http/protobuf) في الإعداد حتى لا تبدّله ترقية SDK إلى gRPC بصمت.
- أبقِ نقطة النهاية والترويسات و service.name في متغيّرات بيئة تُدار لكل بيئة نشر.
- اربط إيقاف المتتبّع بمسار خروج العملية من اليوم الأول، خصوصًا للمهام والدوال.
- بعد أي ترقية لاعتماديات OTel، تحقّق من تتبّع واحد من البداية للنهاية قبل التعميم.
- تذكّر النطاق: التتبّعات عبر OTLP/HTTP مدعومة؛ أما مقاييس وسجلات OTLP فلا.
ما زلت عالقًا؟
الدليل الكامل على /docs/guides/opentelemetry. إذا نجحت التصديرات في تشخيص OTel وما زالت الـ spans لا تظهر، تحقّق من صفحة حالة AllStak، ثم راسلنا على [email protected] مع service.name وإعداد الـ exporter (مع حجب المفتاح) ومعرّف تتبّع توقعت رؤيته.
الأسئلة الشائعة
هل تستقبل AllStak بيانات OTLP عبر gRPC؟
لا. تستقبل AllStak تصدير تتبّعات OTLP عبر HTTP. اضبط الـ exporter على نسخة HTTP (مثل http/protobuf) ووجّهه إلى نقطة التتبّعات الواردة في دليل الإعداد.
هل أقدر أرسل مقاييس أو سجلات OpenTelemetry إلى AllStak؟
ليس عبر OTLP — فدعم OTLP في AllStak يغطي التتبّعات. أما السجلات والمقاييس فتتدفق عبر حِزم AllStak SDK ووكيل البنية التحتية.
هل يلزمني استبدال تجهيز OTel بحِزم AllStak؟
لا. أبقِ تجهيز OpenTelemetry المحايد ووجّه exporter بـ OTLP/HTTP إلى AllStak — فتُعرض الـ spans كتتبّعات شلّالية مع خريطة خدمات وتحليلات زمن استجابة.
ليش التتبّعات ما تظهر إلا عند إعادة تشغيل خدمتي؟
هذا النمط يعني أن الـ spans تجلس في معالج الدفعات ولا تُشحن إلا عندما يفرغها الإيقاف. قلّل فترة تصدير الدفعات أو اضمن حجم حركة منتظمًا حتى تُفرَغ الدفعات باستمرار.
استكشف المزيد
حسب إطار العمل
قارن
نقطة نهاية واحدة، تتبّعات كاملة
وجّه exporter بـ OTLP/HTTP إلى AllStak وستُعرض spans خدماتك كشلّالات مع خريطة خدمات وتحليلات p50/p95/p99. ابدأ مجانًا.