«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать диапазон OpenTelemetry из строки TraceID?

Как создать диапазон OpenTelemetry из строки TraceID?

Опубликовано 5 ноября 2024 г.
Просматривать:910

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

Создание диапазона OpenTelemetry из String TraceID

Чтобы установить связь родитель-потомок между диапазонами, заголовки должны использоваться в ситуациях, когда распространение контекста невозможно. В этом сценарии идентификатор трассировки и идентификатор диапазона содержатся в заголовках брокера сообщений, что позволяет подписчику создать новый диапазон с родительским идентификатором трассировки.

Решение

Следующие шаги могут быть использовано для создания контекста или диапазона на стороне подписчика с использованием идентификатора трассировки:

  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)
}
  1. Дополните контекст созданным контекстом диапазона:
requestContext := context.Background()
requestContext = trace.ContextWithSpanContext(requestContext, spanContext)
  1. Создайте новый диапазон, используя расширенный контекст:
requestInLoopSpan, _ := otel.Tracer("requestInLoop").Start(requestContext, "requestInLoopSpan")

Выполняя эти шаги, вы можете успешно создать новый диапазон на стороне подписчика, используя идентификатор трассировки, извлеченный из заголовков сообщений, обеспечивая иерархическую связь между пролеты.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3