"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment créer un Span OpenTelemetry à partir d'un TraceID de chaîne ?

Comment créer un Span OpenTelemetry à partir d'un TraceID de chaîne ?

Publié le 2024-11-05
Parcourir:221

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

Construction d'un Span OpenTelemetry à partir d'un TraceID de chaîne

Pour établir la relation parent-enfant entre les spans, les en-têtes doivent être utilisés dans des situations où la propagation du contexte n'est pas viable. Dans ce scénario, un ID de trace et un ID d'étendue sont contenus dans les en-têtes du courtier de messages, ce qui permet à l'abonné de créer une nouvelle étendue avec l'ID de trace parent.

Solution

Les étapes suivantes peuvent être pris pour construire un contexte ou une étendue côté abonné à l'aide de l'ID de trace :

  1. Définir une fonction avec l'ID de trace comme argument :
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. À l'intérieur du canal, appelez la fonction pour construire le contexte span :
spanContext, err := constructNewSpanContext(request.TraceID)
if err != nil {
    log.Fatal(err)
}
  1. Enrichir un contexte avec le contexte span construit :
requestContext := context.Background()
requestContext = trace.ContextWithSpanContext(requestContext, spanContext)
  1. Créez un nouveau span en utilisant le contexte enrichi :
requestInLoopSpan, _ := otel.Tracer("requestInLoop").Start(requestContext, "requestInLoopSpan")

En suivant ces étapes, vous pouvez réussir à construire un nouveau span côté abonné en utilisant l'ID de trace extrait des en-têtes de message, garantissant ainsi la relation hiérarchique entre les spans.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3