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: 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")
)

RequestId is the attribute key used to store the request ID in spans.

Variables

This section is empty.

Functions

func IsNoop

func IsNoop(provider TracerProvider) bool

IsNoop checks if the given TracerProvider is a NoopProvider.

Types

type Config

type Config struct {
	// Enable determines whether tracing is enabled.
	Enable bool
	// Address specifies the OTLP collector endpoint address.
	Address string
	// ModuleName identifies the service name.
	ModuleName string
	// ModuleVersion specifies the service version.
	ModuleVersion string
	// Environment defines the deployment environment.
	Environment string
	// InstanceId uniquely identifies the service instance.
	InstanceId string
	// Attributes contains additional custom attributes for the resource.
	Attributes map[string]string
}

Config holds the configuration for the tracing provider.

type NoopProvider

type NoopProvider struct {
	Provider
}

NoopProvider is a no-op implementation of the Provider interface. It provides a tracer that performs no operations, useful when tracing is disabled.

func NewNoopProvider

func NewNoopProvider() NoopProvider

NewNoopProvider creates a new no-op tracer provider.

func (NoopProvider) Shutdown

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

Shutdown returns nil as no resources need to be cleaned up.

func (NoopProvider) Tracer

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

Tracer returns a no-op tracer that performs no operations.

type Propagator

type Propagator = propagation.TextMapPropagator

Propagator is an alias for OpenTelemetry's TextMapPropagator interface.

var DefaultPropagator Propagator = propagation.TraceContext{}

DefaultPropagator is the default text map propagator using W3C Trace Context.

type Provider

type Provider interface {
	TracerProvider
	// Shutdown gracefully shuts down the provider, flushing any pending spans.
	Shutdown(ctx context.Context) error
}

Provider extends TracerProvider with a Shutdown method for graceful cleanup.

func NewProviderFromConfiguration

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

NewProviderFromConfiguration creates a new tracer provider from the given configuration. It returns a no-op provider if tracing is disabled. The provider is configured to export traces via OTLP over HTTP to the specified address.

type TracerProvider

type TracerProvider = traceapi.TracerProvider

TracerProvider is an alias for OpenTelemetry's TracerProvider interface.

var DefaultProvider TracerProvider = NewNoopProvider()

DefaultProvider is the global default tracer provider, initially set to a no-op provider.

Directories

Path Synopsis
Package grpc provides utilities for gRPC tracing integration.
Package grpc provides utilities for gRPC tracing integration.
client_tracing
Package client_tracing provides gRPC client middleware for distributed tracing.
Package client_tracing provides gRPC client middleware for distributed tracing.
server_tracing
Package server_tracing provides gRPC server middleware for distributed tracing.
Package server_tracing provides gRPC server middleware for distributed tracing.
http
client_tracing
Package client_tracing provides HTTP client middleware for distributed tracing.
Package client_tracing provides HTTP client middleware for distributed tracing.
server_tracing
Package server_tracing provides HTTP server middleware for distributed tracing.
Package server_tracing provides HTTP server middleware for distributed tracing.
Package rabbitmq provides utilities for RabbitMQ tracing integration.
Package rabbitmq provides utilities for RabbitMQ tracing integration.
consumer_tracing
Package consumer_tracing provides RabbitMQ consumer middleware for distributed tracing.
Package consumer_tracing provides RabbitMQ consumer middleware for distributed tracing.
publisher_tracing
Package publisher_tracing provides RabbitMQ publisher middleware for distributed tracing.
Package publisher_tracing provides RabbitMQ publisher middleware for distributed tracing.
Package sql_tracing provides pgx v5 query tracing for distributed tracing.
Package sql_tracing provides pgx v5 query tracing for distributed tracing.

Jump to

Keyboard shortcuts

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