server_tracing

package
v1.64.11 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2026 License: MIT Imports: 18 Imported by: 0

README

Package server_tracing

Пакет server_tracing предоставляет middleware для серверной части HTTP-приложения, обеспечивая автоматическое создание span'ов OpenTelemetry для обработки входящих HTTP-запросов.

Types

Config

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

Fields:

Provider tracing.TracerProvider

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

Propagator tracing.Propagator

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

Methods:

NewConfig() Config

Создаёт конфигурацию с провайдером и пропагатором по умолчанию:

func (c Config) Middleware() http2.Middleware

Возвращает middleware, который добавляет в контекст обработки запроса OpenTelemetry span с необходимыми атрибутами. При этом:

  • Используется Propagator для извлечения контекста трассировки из входящего запроса.
  • Определяется имя span'а на основе маршрута или метода + пути.
  • В span записываются стандартные HTTP-атрибуты, request ID, а также (если используется buffer.Buffer) количество прочитанных и записанных байт.
  • Ошибки логируются и, если уровень логирования Error, также записываются в span через RecordError.

Usage

Default usage flow
package main

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

func main(){
    ...
    tracingCfg := server_tracing.NewConfig()
    mux := http.NewServeMux()
    handler := http.WrapHandler(tracingCfg.Middleware())(func(ctx context.Context, w http.ResponseWriter, r *http.Request) error {
        // обработка запроса
        return nil
    })
    mux.Handle("/example", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        _ = handler(r.Context(), w, r)
    }))
    ...
}

Documentation

Index

Constants

View Source
const (
	ReadBytesKey  = attribute.Key("http.read_bytes")  // if anything was read from the request body, the total number of bytes read
	WroteBytesKey = attribute.Key("http.wrote_bytes") // if anything was written to the response writer, the total number of bytes written

)

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Provider   tracing.TracerProvider
	Propagator tracing.Propagator
}

func NewConfig

func NewConfig() Config

func (Config) Middleware

func (c Config) Middleware() http2.Middleware

Jump to

Keyboard shortcuts

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