pgxotel

package module
v0.0.0-...-b07fd2a Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2025 License: MIT Imports: 18 Imported by: 0

README

pgxotel

OTEL instrumentation for https://github.com/jackc/pgx

Documentation

Overview

Example (NewTracer)
package main

import (
	"strings"

	semconv "go.opentelemetry.io/otel/semconv/v1.30.0"
	"go.opentelemetry.io/otel/trace"
	"go.opentelemetry.io/otel/trace/noop"

	"github.com/piusalfred/pgxotel"
)

func main() {
	noOpTraceProvider := noop.NewTracerProvider()
	options := []pgxotel.Option{
		pgxotel.WithMeter(nil),
		pgxotel.WithMeterProvider("noop", nil),
		pgxotel.WithConfigTimeKey("query_latency"),
		pgxotel.WithSpanNameFunc(func(s string) string {
			return strings.ToUpper(s)
		}),
		pgxotel.WithConfig(nil),
		pgxotel.WithTraceProvider("awesome-tracer", noOpTraceProvider, trace.WithSchemaURL(semconv.SchemaURL)),
		pgxotel.WithTracer(noOpTraceProvider.Tracer("noop")),
	}

	pgxTracer, err := pgxotel.NewTracer(options...)
	if err != nil {
		panic(err)
	}

	_ = pgxTracer
}

Index

Examples

Constants

View Source
const (
	OperationQuery         = "query"
	OperationCopyFromEnd   = "copy_from_end"
	OperationCopyFromStart = "copy_from_start"
	OperationConnect       = "connect"
	OperationPrepare       = "prepare"
	OperationAcquire       = "conn_acquire"
	OperationBatchStart    = "batch_start"
	OperationBatchQuery    = "batch_query"
	OperationBatchClose    = "batch_close"
)
View Source
const (
	DBClientOperationErrorsDescription = "The count of database client operation errors"
	DBClientOperationErrorsName        = "db.client.operation.errors"
)
View Source
const (
	DBMaxConnLifetimeKey          = attribute.Key("db.max_conn_lifetime")
	DBMaxConnIdleTimeKey          = attribute.Key("db.max_conn_idle_time")
	DBMaxConnsKey                 = attribute.Key("db.max_conns")
	DBMinConnsKey                 = attribute.Key("db.min_conns")
	DBHealthCheckPeriodKey        = attribute.Key("db.health_check_period")
	DBStatementCacheCapacityKey   = attribute.Key("db.statement_cache_capacity")
	DBDescriptionCacheCapacityKey = attribute.Key("db.description_cache_capacity")
	DBHostKey                     = attribute.Key("db.host")
	DBPortKey                     = attribute.Key("db.port")
	DBUserKey                     = attribute.Key("db.user")
	DBConnectTimeoutKey           = attribute.Key("db.connect_timeout")
	DBKerberosSrvNameKey          = attribute.Key("db.kerberos_srv_name")
	DBKerberosSpnKey              = attribute.Key("db.kerberos_spn")
	DBRowsAffectedKey             = attribute.Key("db.rows_affected")
	DBPrepareStmtNameKey          = attribute.Key("db.prepare.statement.name")
	DBOperationBatchSizeKey       = attribute.Key("db.operation.batch.size")
	DBSQLStateKey                 = attribute.Key("db.sql.state")
	DBQueryParametersKey          = attribute.Key("db.query.parameters")
	DBOperationKey                = attribute.Key("db.operation.type")
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

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

func NewTracer

func NewTracer(options ...Option) (*Client, error)

func (*Client) RegisterMeterCallbackConn

func (client *Client) RegisterMeterCallbackConn(ctx context.Context, conn *pgx.Conn, fn func(ctx context.Context, conn *pgx.Conn, meter metric.Meter) error) error

func (*Client) RegisterMeterCallbackPool

func (client *Client) RegisterMeterCallbackPool(ctx context.Context, pool *pgxpool.Pool, fn func(ctx context.Context, pool *pgxpool.Pool, meter metric.Meter) error) error

func (*Client) TraceAcquireEnd

func (client *Client) TraceAcquireEnd(ctx context.Context, _ *pgxpool.Pool, data pgxpool.TraceAcquireEndData)

TraceAcquireEnd is called when a connection has been acquired.

func (*Client) TraceAcquireStart

func (client *Client) TraceAcquireStart(ctx context.Context, pool *pgxpool.Pool, _ pgxpool.TraceAcquireStartData) context.Context

func (*Client) TraceBatchEnd

func (client *Client) TraceBatchEnd(ctx context.Context, conn *pgx.Conn, data pgx.TraceBatchEndData)

func (*Client) TraceBatchQuery

func (client *Client) TraceBatchQuery(ctx context.Context, conn *pgx.Conn, data pgx.TraceBatchQueryData)

func (*Client) TraceBatchStart

func (client *Client) TraceBatchStart(ctx context.Context, conn *pgx.Conn, data pgx.TraceBatchStartData) context.Context

func (*Client) TraceConnectEnd

func (client *Client) TraceConnectEnd(ctx context.Context, data pgx.TraceConnectEndData)

func (*Client) TraceConnectStart

func (client *Client) TraceConnectStart(ctx context.Context, data pgx.TraceConnectStartData) context.Context

func (*Client) TraceCopyFromEnd

func (client *Client) TraceCopyFromEnd(ctx context.Context, conn *pgx.Conn, data pgx.TraceCopyFromEndData)

func (*Client) TraceCopyFromStart

func (client *Client) TraceCopyFromStart(ctx context.Context, conn *pgx.Conn, data pgx.TraceCopyFromStartData) context.Context

func (*Client) TracePrepareEnd

func (client *Client) TracePrepareEnd(ctx context.Context, conn *pgx.Conn, data pgx.TracePrepareEndData)

func (*Client) TracePrepareStart

func (client *Client) TracePrepareStart(ctx context.Context, conn *pgx.Conn, data pgx.TracePrepareStartData) context.Context

func (*Client) TraceQueryEnd

func (client *Client) TraceQueryEnd(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryEndData)

func (*Client) TraceQueryStart

func (client *Client) TraceQueryStart(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryStartData) context.Context

func (*Client) TraceRelease

func (client *Client) TraceRelease(_ *pgxpool.Pool, data pgxpool.TraceReleaseData)

type Config

type Config struct {
	TimeKey             string
	LogConnDetails      bool
	LogSQLStatements    bool
	LogQueryArgs        bool
	TrimQuerySpanName   bool
	PrefixQuerySpanName bool
}

type LogAttributes

type LogAttributes struct {
	PID          int
	TraceID      string
	SpanID       string
	SQL          string
	Args         []any
	Operation    string
	Duration     time.Duration
	RowsAffected int64
	BatchSize    int
	TableName    string
	ColumnNames  []string
	RowCount     int64
	Error        error
	SQLState     string
	Custom       map[string]any

	CommandTag      string
	AlreadyPrepared bool
	Name            string
	DBHost          string
	DBPort          uint16
	DBDatabase      string
	DBUser          string
	// contains filtered or unexported fields
}

LogAttributes holds structured log and span data

type LogAttributesFilterFunc

type LogAttributesFilterFunc func(data *LogAttributes)

type Option

type Option interface {
	// contains filtered or unexported methods
}

type OptionFunc

type OptionFunc func(*Client) error

func WithConfig

func WithConfig(config *Config) OptionFunc

func WithConfigTimeKey

func WithConfigTimeKey(timeKey string) OptionFunc

func WithMeter

func WithMeter(meter metric.Meter) OptionFunc

func WithMeterProvider

func WithMeterProvider(name string, provider metric.MeterProvider, options ...metric.MeterOption) OptionFunc

func WithSpanNameFunc

func WithSpanNameFunc(spanNameFunc func(string) string) OptionFunc

func WithTraceProvider

func WithTraceProvider(name string, tp trace.TracerProvider, options ...trace.TracerOption) OptionFunc

func WithTracer

func WithTracer(tracer trace.Tracer) OptionFunc

Jump to

Keyboard shortcuts

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