Skip to content

Commit 5cb867b

Browse files
authored
Add otel support for pgxpool (#1388)
1 parent e11ca9e commit 5cb867b

File tree

10 files changed

+32
-14
lines changed

10 files changed

+32
-14
lines changed

iac/provider-gcp/nomad/configs/otel-collector.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ processors:
144144
- "client_proxy.*"
145145
- "Click*"
146146
- "otelcol.*"
147+
- "pgxpool.*"
147148

148149
filter/prometheus:
149150
metrics:

packages/api/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ require (
115115
github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936 // indirect
116116
github.com/dustin/go-humanize v1.0.1 // indirect
117117
github.com/edsrzf/mmap-go v1.2.0 // indirect
118+
github.com/exaring/otelpgx v0.9.3 // indirect
118119
github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect
119120
github.com/fatih/color v1.18.0 // indirect
120121
github.com/felixge/httpsnoop v1.0.4 // indirect

packages/api/go.sum

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/db/client/client.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package client
22

33
import (
44
"context"
5+
"fmt"
56

7+
"github.com/exaring/otelpgx"
68
"github.com/jackc/pgx/v5"
79
"github.com/jackc/pgx/v5/pgxpool"
810
_ "github.com/lib/pq"
9-
"go.uber.org/zap"
1011

1112
database "github.com/e2b-dev/infra/packages/db/queries"
1213
"github.com/e2b-dev/infra/packages/shared/pkg/utils"
@@ -38,22 +39,29 @@ func NewClient(ctx context.Context, options ...Option) (*Client, error) {
3839
// Parse the connection pool configuration
3940
config, err := pgxpool.ParseConfig(databaseURL)
4041
if err != nil {
41-
zap.L().Error("Unable to parse database URL", zap.Error(err))
42-
43-
return nil, err
42+
return nil, fmt.Errorf("failed to parse connection pool config: %w", err)
4443
}
4544

4645
// Set the default number of connections
4746
for _, option := range options {
4847
option(config)
4948
}
5049

50+
// expose otel traces
51+
config.ConnConfig.Tracer = otelpgx.NewTracer()
52+
5153
// Create the connection pool
5254
pool, err := pgxpool.NewWithConfig(ctx, config)
5355
if err != nil {
54-
zap.L().Error("Unable to create connection pool", zap.Error(err))
56+
return nil, fmt.Errorf("failed to create connection pool: %w", err)
5557
}
5658

59+
// expose otel metrics
60+
if err := otelpgx.RecordStats(pool); err != nil {
61+
pool.Close()
62+
63+
return nil, fmt.Errorf("failed to record stats: %w", err)
64+
}
5765
queries := database.New(pool)
5866

5967
return &Client{Queries: queries, conn: pool}, nil

packages/db/go.mod

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ tool (
1111

1212
require (
1313
github.com/e2b-dev/infra/packages/shared v0.0.0-20250324174051-3fb806938dc1
14+
github.com/exaring/otelpgx v0.9.3
1415
github.com/google/uuid v1.6.0
1516
github.com/jackc/pgx/v5 v5.7.4
1617
github.com/lib/pq v1.10.9
1718
github.com/pressly/goose/v3 v3.24.2
18-
go.uber.org/zap v1.27.0
1919
)
2020

2121
require (
@@ -34,6 +34,8 @@ require (
3434
github.com/fatih/structtag v1.2.0 // indirect
3535
github.com/go-faster/city v1.0.1 // indirect
3636
github.com/go-faster/errors v0.7.1 // indirect
37+
github.com/go-logr/logr v1.4.3 // indirect
38+
github.com/go-logr/stdr v1.2.2 // indirect
3739
github.com/go-sql-driver/mysql v1.9.2 // indirect
3840
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
3941
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
@@ -78,11 +80,14 @@ require (
7880
github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77 // indirect
7981
github.com/ydb-platform/ydb-go-sdk/v3 v3.104.7 // indirect
8082
github.com/ziutek/mymysql v1.5.4 // indirect
83+
go.opentelemetry.io/auto/sdk v1.2.0 // indirect
8184
go.opentelemetry.io/otel v1.38.0 // indirect
85+
go.opentelemetry.io/otel/metric v1.38.0 // indirect
8286
go.opentelemetry.io/otel/trace v1.38.0 // indirect
8387
go.uber.org/atomic v1.11.0 // indirect
8488
go.uber.org/mock v0.5.2 // indirect
8589
go.uber.org/multierr v1.11.0 // indirect
90+
go.uber.org/zap v1.27.0 // indirect
8691
golang.org/x/crypto v0.42.0 // indirect
8792
golang.org/x/exp v0.0.0-20250531010427-b6e5de432a8b // indirect
8893
golang.org/x/mod v0.27.0 // indirect

packages/db/go.sum

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/local-dev/go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ require (
3838
github.com/docker/go-connections v0.6.0 // indirect
3939
github.com/docker/go-units v0.5.0 // indirect
4040
github.com/ebitengine/purego v0.8.4 // indirect
41+
github.com/exaring/otelpgx v0.9.3 // indirect
4142
github.com/felixge/httpsnoop v1.0.4 // indirect
4243
github.com/go-logr/logr v1.4.3 // indirect
4344
github.com/go-logr/stdr v1.2.2 // indirect
@@ -80,8 +81,6 @@ require (
8081
go.opentelemetry.io/otel v1.38.0 // indirect
8182
go.opentelemetry.io/otel/metric v1.38.0 // indirect
8283
go.opentelemetry.io/otel/trace v1.38.0 // indirect
83-
go.uber.org/multierr v1.11.0 // indirect
84-
go.uber.org/zap v1.27.0 // indirect
8584
golang.org/x/crypto v0.42.0 // indirect
8685
golang.org/x/mod v0.27.0 // indirect
8786
golang.org/x/sync v0.17.0 // indirect

packages/local-dev/go.sum

Lines changed: 2 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/integration/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ require (
4343
github.com/dchest/uniuri v1.2.0 // indirect
4444
github.com/dnephin/pflag v1.0.7 // indirect
4545
github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936 // indirect
46+
github.com/exaring/otelpgx v0.9.3 // indirect
4647
github.com/fatih/color v1.18.0 // indirect
4748
github.com/fsnotify/fsnotify v1.9.0 // indirect
4849
github.com/getkin/kin-openapi v0.132.0 // indirect

tests/integration/go.sum

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)