sql_metrics

package
v1.67.1 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2026 License: MIT Imports: 6 Imported by: 0

README

Package sql_metrics

Пакет sql_metrics предоставляет инструменты для сбора метрик времени выполнения SQL-запросов с использованием Prometheus и клиента PostgreSQL pgx.

Types

QueryDurationMetrics

Хранилище метрик времени выполнения SQL-запросов.

Metrics:

sql_query_duration_ms

Продолжительность выполнения SQL-запроса, метрика summary с лейблом operation.

Methods:

func NewTracer(reg *metrics.Registry) QueryDurationMetrics

Создаёт новое хранилище метрик SQL-запросов.

func (m QueryDurationMetrics) TraceQueryStart(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryStartData) context.Context

Сохраняет время начала выполнения запроса, если в контексте установлен лейбл операции.

func (m QueryDurationMetrics) TraceQueryEnd(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryEndData)

Фиксирует задержку выполнения SQL-запроса и регистрирует её в метриках. Использует лейбл из контекста.

func OperationLabelToContext(ctx context.Context, label string) context.Context

Сохраняет метку операции SQL-запроса в контекст.

func OperationLabelFromContext(ctx context.Context) string

Извлекает метку операции SQL-запроса из контекста.

Prometheus metrics example

# HELP sql_query_duration_ms The latencies of sql query
# TYPE sql_query_duration_ms summary
sql_query_duration_ms{operation="get_user"} 12.3
sql_query_duration_ms{operation="create_order"} 25.7

Usage

Default usage flow
tracer := sql_metrics.NewTracer(metrics.DefaultRegistry)

ctx := sql_metrics.OperationLabelToContext(context.Background(), "get_user")

config.Tracer = &pgx.Tracer{ // при использовании pgx
    TraceQueryStart: tracer.TraceQueryStart,
    TraceQueryEnd: tracer.TraceQueryEnd,
}

Documentation

Overview

Package sql_metrics provides Prometheus metric collectors for SQL query execution. It integrates with the pgx v5 database driver to trace and record query durations.

Example usage:

tracer := sql_metrics.NewTracer(reg)
conn.Config().Tracer = tracer

// Optionally set operation labels in context:
ctx := sql_metrics.OperationLabelToContext(ctx, "users")
rows, _ := conn.Query(ctx, "SELECT * FROM users")

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func OperationLabelFromContext

func OperationLabelFromContext(ctx context.Context) string

OperationLabelFromContext retrieves the operation label from the context. Returns an empty string if no label was set.

func OperationLabelToContext

func OperationLabelToContext(ctx context.Context, label string) context.Context

OperationLabelToContext stores an operation label in the context. This label is used to categorize SQL queries in metrics.

Types

type QueryDurationMetrics

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

QueryDurationMetrics collects metrics for SQL query execution, tracking query latencies labeled by operation type.

func NewTracer

func NewTracer(reg *metrics.Registry) QueryDurationMetrics

NewTracer creates a new QueryDurationMetrics instance and registers its metrics with the provided registry. The tracer can be assigned to a pgx connection.

func (QueryDurationMetrics) TraceQueryEnd

func (m QueryDurationMetrics) TraceQueryEnd(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryEndData)

TraceQueryEnd is called after a query is executed. It records the query duration using the operation label from the context.

func (QueryDurationMetrics) TraceQueryStart

func (m QueryDurationMetrics) TraceQueryStart(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryStartData) context.Context

TraceQueryStart is called before a query is executed. It extracts the operation label from the context and starts timing the query execution. For transaction commands (begin, commit, rollback), it appends the command to the operation label.

Jump to

Keyboard shortcuts

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