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

README

Package tracing

Пакет tracing предоставляет интерфейсы и реализацию для инициализации трассировки с помощью OpenTelemetry, включая поддержку OTLP экспортёра, TracerProvider, Propagator, а также noop-реализацию.

Types

Config

Конфигурация для инициализации трассировки:

Fields:

Enable bool

Включает или отключает трассировку.

Address string

Адрес OTLP-экспортера (например, localhost:4318).

ModuleName string

Название сервиса.

ModuleVersion string

Версия сервиса

Environment string

Окружение выполнения (например, prod, staging).

InstanceId string

Уникальный идентификатор инстанса.

Attributes map[string]string

Дополнительные атрибуты, которые будут прикреплены к каждому спану.

TracerProvider

Псевдоним для стандартного интерфейса OpenTelemetry TracerProvider.

Propagator

Псевдоним для интерфейса TextMapPropagator, используемого для распространения контекста трассировки между сервисами.

Provider

Интерфейс трассировщика, поддерживающий корректное завершение сессии через Shutdown().

Methods:

func NewProviderFromConfiguration(ctx context.Context, logger log.Logger, config Config) (Provider, error)

Создаёт и возвращает TracerProvider на основе переданной конфигурации. Возвращает NoopProvider, если Enable == false.

Использует OTLP экспортёр через HTTP и устанавливает атрибуты ресурса:

  • окружение,
  • имя сервиса,
  • версия,
  • идентификатор инстанса,
  • пользовательские атрибуты.

Constants

const RequestId = attribute.Key("app.request_id")

Ключ атрибута, используемый для добавления request-id в спан. Применяется как часть метаданных запроса.

Global variables

var (
	DefaultPropagator Propagator     = propagation.TraceContext{}
	DefaultProvider   TracerProvider = NewNoopProvider()
)

Значения по умолчанию:

  • DefaultPropagator — TraceContext propagator.
  • DefaultProvider — noop-реализация трассировщика.

NoopProvider

Реализация TracerProvider, которая не делает ничего (используется по умолчанию при отключенной трассировке).

Methods:

func NewNoopProvider() NoopProvider

Создаёт новый NoopProvider.

(n NoopProvider) Tracer(name string, options ...trace.TracerOption) trace.Tracer

Возвращает пустой noop.Tracer.

(n NoopProvider) Shutdown(ctx context.Context) error

Операция завершения, не выполняющая действий.

func IsNoop(provider TracerProvider) bool

Проверяет, является ли провайдер noop-реализацией.

Usage

Пример настройки трассировки с использованием OTLP экспортёра и установкой глобального провайдера. Завершение трассировки выполняется через Shutdown.

package main

import (
    ...
    "github.com/txix-open/observability/tracing"
    "go.opentelemetry.io/otel"
    ...
)

func main(){
...
cfg := tracing.Config{
	Enable:        true,
	Address:       "localhost:4318",
	ModuleName:    "user-service",
	ModuleVersion: "1.0.0",
	Environment:   "production",
	InstanceId:    "abc123",
	Attributes: map[string]string{
		"region": "eu-central-1",
	},
}

provider, err := tracing.NewProviderFromConfiguration(context.Background(), logger, cfg)
if err != nil {
	log.Fatal(err)
}

otel.SetTracerProvider(provider)
defer provider.Shutdown(context.Background())
...
}

Documentation

Index

Constants

View Source
const (
	RequestId = attribute.Key("app.request_id")
)

Variables

View Source
var (
	DefaultPropagator Propagator     = propagation.TraceContext{}
	DefaultProvider   TracerProvider = NewNoopProvider()
)

nolint:gochecknoglobals

Functions

func IsNoop

func IsNoop(provider TracerProvider) bool

Types

type Config

type Config struct {
	Enable        bool
	Address       string
	ModuleName    string
	ModuleVersion string
	Environment   string
	InstanceId    string
	Attributes    map[string]string
}

type NoopProvider

type NoopProvider struct {
	Provider
}

func NewNoopProvider

func NewNoopProvider() NoopProvider

func (NoopProvider) Shutdown

func (n NoopProvider) Shutdown(ctx context.Context) error

func (NoopProvider) Tracer

func (n NoopProvider) Tracer(name string, options ...trace.TracerOption) trace.Tracer

nolint:ireturn

type Propagator

type Propagator = propagation.TextMapPropagator

type Provider

type Provider interface {
	TracerProvider
	Shutdown(ctx context.Context) error
}

func NewProviderFromConfiguration

func NewProviderFromConfiguration(ctx context.Context, logger log.Logger, config Config) (Provider, error)

nolint:ireturn

type TracerProvider

type TracerProvider = traceapi.TracerProvider

Jump to

Keyboard shortcuts

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