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 ¶
OperationLabelFromContext retrieves the operation label from the context. Returns an empty string if no label was set.
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.