ओपनटेलीमेट्री में ट्रेस आईडी से स्पैन का निर्माण
संदर्भ प्रसार का उपयोग आमतौर पर पैरेंट ट्रेस आईडी को पुनः प्राप्त करने और बच्चों के रूप में स्पैन बनाने के लिए किया जाता है। हालाँकि, ऐसे परिदृश्यों में जहां हेडर को संदेश विनिमय के लिए नियोजित किया जाता है, वैकल्पिक दृष्टिकोण आवश्यक हैं।
स्ट्रिंग ट्रेस आईडी से एक स्पैन बनाने के लिए, आप इन चरणों का पालन कर सकते हैं:
ट्रेस और स्पैन आईडी को पार्स करने के लिए एक फ़ंक्शन का निर्माण करें:
func constructNewSpanContext(request NewRequest) (spanContext trace.SpanContext, err error) {
traceID, err := trace.TraceIDFromHex(request.TraceID)
if err != nil {
fmt.Println("error:", err)
}
spanID, err := trace.SpanIDFromHex(request.SpanID)
if err != nil {
fmt.Println("error:", err)
}
spanContextConfig := trace.SpanContextConfig{
TraceID: traceID,
SpanID: spanID,
TraceFlags: 01,
Remote: false,
}
spanContext = trace.NewSpanContext(spanContextConfig)
return spanContext, nil
}
यह फ़ंक्शन अनुरोध से ट्रेस और स्पैन आईडी निकालता है और एक SpanContext ऑब्जेक्ट बनाता है।
SpanContext को Context में इंजेक्ट करें:
spanContext, err := constructNewSpanContext(request)
if err != nil {
fmt.Println("ERROR:", err)
}
requestContext := context.Background()
requestContext = trace.ContextWithSpanContext(requestContext, spanContext)
SpanContext का उपयोग अनुरोध संदर्भ को समृद्ध करने के लिए किया जाता है, जो ट्रेस की निरंतरता को दर्शाता है।
एक बनाएं नया स्पैन:
var requestInLoopSpan trace.Span
childContext, requestInLoopSpan := otel.Tracer("inboundmessage").Start(requestContext, "requestInLoopSpan")
requestInLoopSpan.AddEvent("processing....")
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3