Maison > développement back-end > Golang > 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 ?

Mary-Kate Olsen
Libérer: 2024-10-26 14:09:02
original
681 Les gens l'ont consulté

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 de span sont contenus dans les en-têtes du courtier de messages, ce qui permet à l'abonné de créer un nouveau span avec l'ID de trace parent.

Solution

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

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

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 , assurant la relation hiérarchique entre les travées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal