client_tracing

package
v1.67.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2026 License: MIT Imports: 12 Imported by: 0

README

Package client_tracing

Пакет client_tracing предоставляет middleware для трассировки исходящих HTTP-запросов с использованием OpenTelemetry. Он интегрируется с клиентом httpcli из isp-kit и добавляет в запросы span'ы и trace-информацию, в том числе request id и HTTP-атрибуты.

Types

Config

Структура Config определяет настройки трассировки для исходящих HTTP-запросов.

Fields:

Provider tracing.TracerProvider

Провайдер трассировки (по умолчанию tracing.DefaultProvider).

Propagator tracing.Propagator

Пропагатор контекста (по умолчанию tracing.DefaultPropagator).

EnableHttpTracing bool

Включает детализацию трейсинга через net/http/httptrace.

Methods:

func NewConfig() Config

Создаёт конфигурацию трассировки с provider и propagator по умолчанию.

(c Config) Middleware() httpcli.Middleware

Создаёт middleware, оборачивающее httpcli.RoundTripper для добавления трейсинга в каждый HTTP-запрос. Выполняются следующие действия:

  • Запуск нового спана с именем по шаблону HTTP call METHOD URL_PATH.
  • Добавление стандартных HTTP-атрибутов в span (метод, URL, статус-код и т.п.).
  • Инжекция trace-контекста в заголовки запроса.
  • В случае ошибки или получения ответа — установка соответствующего статуса в span.
  • При включённом EnableHttpTracing — подключение дополнительных httptrace хуков.

Usage

Default usage flow
package main

import (
	"github.com/txix-open/isp-kit/http/httpcli"
	"github.com/txix-open/isp-kit/observability/tracing/http/client_tracing"
)

func main(){
    ...
    client := httpcli.New(
        httpcli.WithMiddleware(
            client_tracing.NewConfig().Middleware(),
        ),
    )
    ...
}

Documentation

Overview

Package client_tracing provides HTTP client middleware for distributed tracing.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// Provider is the tracer provider used to create tracers.
	Provider tracing.TracerProvider
	// Propagator is the text map propagator for context propagation.
	Propagator tracing.Propagator
	// EnableHttpTracing enables detailed HTTP client tracing using otelhttptrace.
	EnableHttpTracing bool
}

Config holds the configuration for the HTTP client tracing middleware.

func NewConfig

func NewConfig() Config

NewConfig creates a new Config with default values.

func (Config) Middleware

func (c Config) Middleware() httpcli.Middleware

Middleware returns an HTTP client middleware that creates spans for outgoing requests. It injects trace context into request headers, creates a client span, and records response status and errors. If the provider is a no-op, it returns a pass-through middleware.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL