تكرار السؤال: …
الإجابة المختصرة
يقوم بتوليد Trace ID موحد وتمريره عبر ترويسات الطلبات (W3C Trace Context)، لربط مسار الطلب وسجلاته عبر كل الخوادم وقواعد البيانات المشاركة.
الشرح
عندما يمر طلب مستخدم بخمس خدمات دقيقة مختلفة وقاعدة بيانات، يصبح من المستحيل تشخيص سبب البطء بالسجلات التقليدية المنفصلة. توفر أدوات OpenTelemetry لـ Node.js تتبعاً تلقائياً لمكتبات الـ HTTP وقواعد البيانات، حيث تقيس زمن تنفيذ كل عملية فرعية (Span) وتربطها في مخطط زمني موحد يُعرض على أدوات مثل Jaeger أو Datadog.
مثال بالكود
// tracing.js — load it first: node --import ./tracing.js app.js
import { NodeSDK } from "@opentelemetry/sdk-node";
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
const sdk = new NodeSDK({
serviceName: "orders",
traceExporter: new OTLPTraceExporter({ url: "http://otel-collector:4318/v1/traces" }),
instrumentations: [getNodeAutoInstrumentations()], // http, express, pg… propagate the W3C `traceparent` header
});
sdk.start();أخطاء شائعة
- فقدان تمرير ترويسة traceparent عند استدعاء الخدمات الخارجية عبر عميل الـ HTTP.