server_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: 11 Imported by: 0

README

Package server_tracing

Пакет server_tracing предоставляет middleware для серверов gRPC, реализующих трассировку входящих запросов с использованием OpenTelemetry.

Types

Config

Структура Config предназначена для конфигурации middleware трассировки gRPC-сервера. Она содержит провайдер трассировки и пропагатор контекста.

Fields:

Provider tracing.TracerProvider

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

Propagator tracing.Propagator

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

Methods:

func NewConfig() Config

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

func (c Config) Middleware() grpc.Middleware

Создаёт middleware для трассировки gRPC-запросов. Возвращаемый middleware:

  • Извлекает контекст трассировки из входящих метаданных;
  • Инициирует span с именем, основанным на методе gRPC-запроса (если доступно);
  • Добавляет атрибут request.id;
  • Фиксирует ошибку в span, если она произошла;
  • Завершает span после выполнения запроса.

Если трассировка отключена (noop-провайдер), возвращается no-op middleware.

Usage

Default usage flow
package main

import (
    "context"

    "github.com/txix-open/isp-kit/grpc"
    "github.com/txix-open/isp-kit/grpc/endpoint"

    "github.com/txix-open/isp-kit/log"

    "github.com/txix-open/isp-kit/validator"

    "github.com/txix-open/isp-kit/observability/tracing/grpc/server_tracing"
)

func main(){
    ...

    tracingCfg := server_tracing.NewConfig()
    server := grpc.DefaultServer()

    logger, _ := log.New()
    paramMappers := []endpoint.ParamMapper{
		ContextParam(),
		AuthDataParam(),
	}
	middlewares := append(
		[]grpc.Middleware{
			RequestId(),
			server_tracing.NewConfig().Middleware(),
			ErrorHandler(logger),
			Recovery(),
		},
		restMiddlewares...,
	)
	wrapper := NewWrapper(
		paramMappers,
		JsonRequestExtractor{Validator: validator.Default},
		JsonResponseMapper{},
	).WithMiddlewares(middlewares...)

    mux := grpc.NewMux()
    mux.Handle("some_endpoint", wrapper.Endpoint(func(ctx context.Context) error {
        // реализация
        return nil
    }))

    server.Upgrade(mux)

    server.ListenAndServe(":8080")
}

Documentation

Overview

Package server_tracing provides gRPC server 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 server tracing middleware.

func NewConfig

func NewConfig() Config

NewConfig creates a new Config with default values.

func (Config) Middleware

func (c Config) Middleware() grpc.Middleware

Middleware returns a gRPC server middleware that creates spans for incoming RPC calls. It extracts trace context from request metadata, creates a server span, and records errors at the appropriate log level. 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