Construcción de tramos a partir de ID de seguimiento en Opentelemetry
La propagación de contexto se utiliza normalmente para recuperar ID de seguimiento principales y crear tramos como hijos. Sin embargo, en escenarios donde se emplean encabezados para el intercambio de mensajes, se necesitan enfoques alternativos.
Para crear un intervalo a partir de un ID de seguimiento de cadena, puede seguir estos pasos:
Construya una función para analizar ID de seguimiento y extensión:
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
}
Esta función extrae los ID de seguimiento y extensión de la solicitud y construye un objeto SpanContext.
Inyecta SpanContext en contexto:
spanContext, err := constructNewSpanContext(request)
if err != nil {
fmt.Println("ERROR:", err)
}
requestContext := context.Background()
requestContext = trace.ContextWithSpanContext(requestContext, spanContext)
El SpanContext se utiliza para enriquecer el contexto de la solicitud, indicando la continuación del seguimiento.
Crear un Nuevo intervalo:
var requestInLoopSpan trace.Span
childContext, requestInLoopSpan := otel.Tracer("inboundmessage").Start(requestContext, "requestInLoopSpan")
requestInLoopSpan.AddEvent("processing....")
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3