client_tracing

package
v1.71.1 Latest Latest
Warning

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

Go to latest
Published: Jul 6, 2026 License: MIT Imports: 10 Imported by: 0

README

Package client_tracing

Пакет client_tracing предназначен для добавления middleware к gRPC-клиенту с поддержкой распределённой трассировки через OpenTelemetry. Позволяет автоматически создавать и передавать span-контекст при выполнении gRPC-запросов, а также записывать статусы и ошибки вызовов в трассировку.

Types

Config

Структура Config представляет конфигурацию трассировки для gRPC-клиента.

Fields:

Provider

Реализация интерфейса tracing.TracerProvider, используемая для создания спанов.

Propagator

Реализация интерфейса tracing.Propagator, используемая для инъекции и извлечения контекста трассировки.

Methods:

func NewConfig() Config

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

func (c Config) Middleware() request.Middleware

Возвращает middleware для клиента gRPC, реализующего трассировку запроса. Если трассировка отключена (noop-провайдер), возвращается middleware-заглушка.

Middleware:

  • Создаёт новый спан для каждого gRPC-вызова с именем GRPC call <endpoint>.
  • Устанавливает span kind в значение Client.
  • Добавляет request_id в атрибуты спана.
  • Инъецирует контекст в metadata запроса.
  • В случае ошибки записывает её в спан и устанавливает статус Error.

Usage

Default usage flow
package main

import (
    "github.com/txix-open/isp-kit/grpc/client"
    "github.com/txix-open/isp-kit/observability/tracing/grpc/client_tracing"
)
func main() {
    ...
    cfg := client_tracing.NewConfig()
    client := client.New(
        client.WithMiddleware(
            cfg.Middleware(),
        ),
    )
    ...
}

Для корректной работы необходимо, чтобы в контексте присутствовал request_id, а также был корректно настроен глобальный TracerProvider и Propagator OpenTelemetry.

Documentation

Overview

Package client_tracing provides gRPC 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
}

Config holds the configuration for the gRPC client tracing middleware.

func NewConfig

func NewConfig() Config

NewConfig creates a new Config with default values.

func (Config) Middleware

func (c Config) Middleware() request.Middleware

Middleware returns a gRPC client middleware that creates spans for outgoing RPC calls. It injects trace context into the request metadata, creates a client span, and records 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