Skip to content

Commit e11ca9e

Browse files
authored
Enable otel for sql connections (#1389)
1 parent 98e0fa4 commit e11ca9e

File tree

12 files changed

+55
-5
lines changed

12 files changed

+55
-5
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ processors:
139139
- "orchestrator.*"
140140
- "template.*"
141141
- "api.*"
142+
- "db.sql.connection.*"
142143
- "vault.*"
143144
- "client_proxy.*"
144145
- "Click*"
@@ -308,4 +309,4 @@ service:
308309
- otlp
309310
processors: [batch]
310311
exporters:
311-
- otlphttp/grafana_cloud
312+
- otlphttp/grafana_cloud

packages/api/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ require (
8383
github.com/Masterminds/goutils v1.1.1 // indirect
8484
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
8585
github.com/Workiva/go-datastructures v1.1.0 // indirect
86+
github.com/XSAM/otelsql v0.40.0 // indirect
8687
github.com/agext/levenshtein v1.2.3 // indirect
8788
github.com/air-verse/air v1.61.7 // indirect
8889
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // 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/docker-reverse-proxy/go.mod

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ require (
1212
require (
1313
ariga.io/atlas v0.15.0 // indirect
1414
entgo.io/ent v0.12.5 // indirect
15+
github.com/XSAM/otelsql v0.40.0 // indirect
1516
github.com/agext/levenshtein v1.2.3 // indirect
1617
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
1718
github.com/dchest/uniuri v1.2.0 // indirect
19+
github.com/go-logr/logr v1.4.3 // indirect
20+
github.com/go-logr/stdr v1.2.2 // indirect
1821
github.com/go-openapi/inflect v0.21.0 // indirect
1922
github.com/go-test/deep v1.0.8 // indirect
2023
github.com/google/go-cmp v0.7.0 // indirect
@@ -23,6 +26,10 @@ require (
2326
github.com/lib/pq v1.10.9 // indirect
2427
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
2528
github.com/zclconf/go-cty v1.14.1 // indirect
29+
go.opentelemetry.io/auto/sdk v1.2.0 // indirect
30+
go.opentelemetry.io/otel v1.38.0 // indirect
31+
go.opentelemetry.io/otel/metric v1.38.0 // indirect
32+
go.opentelemetry.io/otel/trace v1.38.0 // indirect
2633
golang.org/x/mod v0.27.0 // indirect
2734
golang.org/x/sync v0.17.0 // indirect
2835
golang.org/x/text v0.29.0 // indirect

packages/docker-reverse-proxy/go.sum

Lines changed: 21 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 & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ require (
2121
entgo.io/ent v0.12.5 // indirect
2222
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
2323
github.com/Microsoft/go-winio v0.6.2 // indirect
24+
github.com/XSAM/otelsql v0.40.0 // indirect
2425
github.com/agext/levenshtein v1.2.3 // indirect
2526
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
2627
github.com/cenkalti/backoff/v4 v4.3.0 // indirect

packages/local-dev/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/shared/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ require (
2424
cloud.google.com/go/storage v1.50.0
2525
connectrpc.com/connect v1.18.1
2626
entgo.io/ent v0.12.5
27+
github.com/XSAM/otelsql v0.40.0
2728
github.com/aws/aws-sdk-go-v2 v1.36.3
2829
github.com/aws/aws-sdk-go-v2/config v1.29.14
2930
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.74

packages/shared/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/shared/pkg/db/client.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import (
66
"time"
77

88
"entgo.io/ent/dialect"
9-
"entgo.io/ent/dialect/sql"
9+
entsql "entgo.io/ent/dialect/sql"
10+
"github.com/XSAM/otelsql"
1011
_ "github.com/lib/pq"
12+
semconv "go.opentelemetry.io/otel/semconv/v1.28.0"
1113

1214
"github.com/e2b-dev/infra/packages/shared/pkg/models"
1315
)
@@ -22,17 +24,24 @@ func NewClient(maxConns, maxIdle int) (*DB, error) {
2224
return nil, fmt.Errorf("database URL is empty")
2325
}
2426

25-
drv, err := sql.Open(dialect.Postgres, databaseURL)
27+
db, err := otelsql.Open(dialect.Postgres, databaseURL, otelsql.WithAttributes(
28+
semconv.DBSystemPostgreSQL,
29+
))
2630
if err != nil {
27-
return nil, err
31+
return nil, fmt.Errorf("failed to open db: %w", err)
32+
}
33+
34+
if err = otelsql.RegisterDBStatsMetrics(db, otelsql.WithAttributes(semconv.DBSystemPostgreSQL)); err != nil {
35+
return nil, fmt.Errorf("failed to register db stats metrics: %w", err)
2836
}
2937

3038
// Get the underlying sql.DB object of the driver.
31-
db := drv.DB()
3239
db.SetMaxOpenConns(maxConns)
3340
db.SetMaxIdleConns(maxIdle)
3441
db.SetConnMaxLifetime(time.Minute * 30)
3542

43+
drv := entsql.OpenDB(dialect.Postgres, db)
44+
3645
client := models.NewClient(models.Driver(drv))
3746

3847
return &DB{Client: client}, nil

0 commit comments

Comments
 (0)