sql_tracing

package
v1.64.3 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2026 License: MIT Imports: 13 Imported by: 0

README

Package sql_tracing

Пакет sql_tracing предоставляет инструменты трассировки SQL-запросов для PostgreSQL-драйвера pgx с использованием OpenTelemetry. Поддерживает автоматическое создание span'ов, запись аргументов и SQL-выражений, а также метрики SQL-операций через sql_metrics.

Types

Tracer

Структура Tracer реализует интерфейс pgx.QueryTracer и обеспечивает создание и завершение span'ов при выполнении SQL-запросов. Позволяет гибко настраивать включение SQL-выражений и параметров в span'ы.

Methods:

NewTracer(tracer trace.Tracer, config Config) Tracer

Создаёт трейсер.

(t Tracer) TraceQueryStart(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryStartData) context.Context

Создаёт span перед выполнением SQL-запроса. Возвращает новый context.Context с активным span.

(t Tracer) TraceQueryEnd(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryEndData)

Завершает span после выполнения SQL-запроса. В случае ошибки (кроме sql.ErrNoRows) записывает её в span и устанавливает статус Error.

Config

Структура Config содержит параметры конфигурации для трассировки SQL-запросов.

Fields:

Provider tracing.TracerProvider

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

EnableStatement bool

Включает добавление SQL-выражения в атрибуты span'а

EnableArgs bool

Включает добавление аргументов запроса в атрибуты span'а

Methods

NewConfig() Config

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

(c Config) QueryTracer() pgx.QueryTracer

Возвращает либо полноценный трассировщик Tracer, либо noop, если провайдер трассировки является "заглушкой".

Usage

Подключение трассировки SQL-запросов
import (
    "github.com/txix-open/isp-kit/observability/tracing"
    "github.com/txix-open/isp-kit/observability/sql_tracing"

    "github.com/jackc/pgx/v5"
)

func setupTracer() pgx.QueryTracer {
    cfg := sql_tracing.NewConfig()
    cfg.EnableStatement = true
    cfg.EnableArgs = true

    return cfg.QueryTracer()
}
Регистрация в pgx соединении
connConfig := pgx.ConnConfig{ /* ваша конфигурация */ }
connConfig.Tracer = setupTracer()

Теперь каждый SQL-запрос будет автоматически трассироваться с учётом включённых опций (запрос, параметры, request ID и т.п.).

Documentation

Index

Constants

View Source
const (
	QueryParametersKey = attribute.Key("pgx.query.parameters")
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Provider        tracing.TracerProvider
	EnableStatement bool
	EnableArgs      bool
}

func NewConfig

func NewConfig() Config

func (Config) QueryTracer

func (c Config) QueryTracer() pgx.QueryTracer

nolint:ireturn

type Tracer

type Tracer struct {
	// contains filtered or unexported fields
}

func NewTracer

func NewTracer(tracer trace.Tracer, config Config) Tracer

func (Tracer) TraceQueryEnd

func (t Tracer) TraceQueryEnd(ctx context.Context, _ *pgx.Conn, data pgx.TraceQueryEndData)

func (Tracer) TraceQueryStart

func (t Tracer) TraceQueryStart(ctx context.Context, _ *pgx.Conn, data pgx.TraceQueryStartData) context.Context

nolint:spancheck

Jump to

Keyboard shortcuts

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