"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنك إنشاء نطاق OpenTelemetry من معرف تتبع السلسلة؟

كيف يمكنك إنشاء نطاق OpenTelemetry من معرف تتبع السلسلة؟

تم النشر بتاريخ 2024-11-05
تصفح:229

How Can You Create an OpenTelemetry Span from a String TraceID?

إنشاء نطاق OpenTelemetry من معرف تتبع السلسلة

لتأسيس العلاقة بين الوالدين والطفل بين الامتدادات، يجب استخدام الرؤوس في المواقف التي يكون فيها نشر السياق غير قابل للتطبيق. في هذا السيناريو، يتم تضمين معرف التتبع ومعرف الامتداد داخل رؤوس وسيط الرسائل، مما يسمح للمشترك بإنشاء نطاق جديد باستخدام معرف التتبع الأصلي.

الحل

يمكن للخطوات التالية يمكن اتخاذها لإنشاء سياق أو امتداد على جانب المشترك باستخدام معرف التتبع:

  1. تحديد دالة بمعرف التتبع كوسيطة:
func constructNewSpanContext(traceID string) (spanContext trace.SpanContext, err error) {
    traceID, err := trace.TraceIDFromHex(traceID)
    if err != nil {
        return trace.SpanContext{}, err
    }
    return trace.NewSpanContext(trace.SpanContextConfig{
        TraceID: traceID,
    }), nil
}
  1. داخل القناة، قم باستدعاء الوظيفة لإنشاء سياق الامتداد:
spanContext, err := constructNewSpanContext(request.TraceID)
if err != nil {
    log.Fatal(err)
}
    إثراء السياق بسياق الامتداد الذي تم إنشاؤه:
requestContext := context.Background() requestContext = Trace.ContextWithSpanContext(requestContext,spanContext)
requestContext := context.Background()
requestContext = trace.ContextWithSpanContext(requestContext, spanContext)
إنشاء نطاق جديد باستخدام السياق المخصب:
requestInLoopSpan, _ := otel.Tracer(" requestInLoop").Start(requestContext, "requestInLoopSpan")
requestInLoopSpan, _ := otel.Tracer("requestInLoop").Start(requestContext, "requestInLoopSpan")
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3