From e0a16cb162d696b009db202a302876a7bbc93b4b Mon Sep 17 00:00:00 2001 From: Tyler Yahn Date: Wed, 28 May 2025 14:10:40 -0700 Subject: [PATCH 1/4] Upgrade semconv to 1.32.0 for otelmongo --- .../internal/semconv/event_monitor.go | 28 +++++++++---------- .../internal/semconv/event_monitor_test.go | 4 +-- .../mongo-driver/v2/mongo/otelmongo/mongo.go | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor.go b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor.go index 37fc79b381d..c369fb739ab 100644 --- a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor.go +++ b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor.go @@ -16,7 +16,7 @@ import ( "go.opentelemetry.io/otel/attribute" semconv1210 "go.opentelemetry.io/otel/semconv/v1.21.0" - semconv1260 "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.32.0" ) // Constants for environment variable keys and versions. @@ -85,14 +85,14 @@ func (m EventMonitor) CommandStartedTraceAttrs( // Dup implies both v1.26.0 and v1.21.0 if hasOptIn(m.version, semconvOptInDup) { return append( - commandStartedTraceAttrsV1260(evt, opts...), + commandStartedTraceAttrs(evt, opts...), commandStartedTraceAttrsV1210(evt, opts...)..., ) } // Check for the 1.26.0 opt-in if hasOptIn(m.version, semconvOptIn1260) { - return commandStartedTraceAttrsV1260(evt, opts...) + return commandStartedTraceAttrs(evt, opts...) } // Fallback to v1.21.0 @@ -127,30 +127,30 @@ func sanitizeCommand(command bson.Raw) string { return string(b) } -// commandStartedTraceAttrsV1260 generates trace attributes for semantic version -// 1.26.0. -func commandStartedTraceAttrsV1260(evt *event.CommandStartedEvent, setters ...AttributeOption) []attribute.KeyValue { +// commandStartedTraceAttrs generates trace attributes for the latest semantic +// version. +func commandStartedTraceAttrs(evt *event.CommandStartedEvent, setters ...AttributeOption) []attribute.KeyValue { opts := &AttributeOptions{} for _, set := range setters { set(opts) } - attrs := []attribute.KeyValue{semconv1260.DBSystemMongoDB} + attrs := []attribute.KeyValue{semconv.DBSystemNameMongoDB} - attrs = append(attrs, semconv1260.DBOperationName(evt.CommandName)) - attrs = append(attrs, semconv1260.DBNamespace(evt.DatabaseName)) - attrs = append(attrs, semconv1260.NetworkTransportTCP) + attrs = append(attrs, semconv.DBOperationName(evt.CommandName)) + attrs = append(attrs, semconv.DBNamespace(evt.DatabaseName)) + attrs = append(attrs, semconv.NetworkTransportTCP) hostname, port := peerInfo(evt) - attrs = append(attrs, semconv1260.NetworkPeerPort(port)) - attrs = append(attrs, semconv1260.NetworkPeerAddress(net.JoinHostPort(hostname, strconv.Itoa(port)))) + attrs = append(attrs, semconv.NetworkPeerPort(port)) + attrs = append(attrs, semconv.NetworkPeerAddress(net.JoinHostPort(hostname, strconv.Itoa(port)))) if !opts.commandAttributeDisabled { - attrs = append(attrs, semconv1260.DBQueryText(sanitizeCommand(evt.Command))) + attrs = append(attrs, semconv.DBQueryText(sanitizeCommand(evt.Command))) } if opts.collectionName != "" { - attrs = append(attrs, semconv1260.DBCollectionName(opts.collectionName)) + attrs = append(attrs, semconv.DBCollectionName(opts.collectionName)) } return attrs diff --git a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor_test.go b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor_test.go index 4cad353f837..de2ba89f54d 100644 --- a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor_test.go +++ b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/internal/semconv/event_monitor_test.go @@ -14,7 +14,7 @@ import ( "go.opentelemetry.io/otel/attribute" semconv1210 "go.opentelemetry.io/otel/semconv/v1.21.0" - semconv1260 "go.opentelemetry.io/otel/semconv/v1.26.0" + semconv "go.opentelemetry.io/otel/semconv/v1.32.0" ) func TestNewEventMonitor(t *testing.T) { @@ -95,7 +95,7 @@ func TestCommandStartedTraceAttrs(t *testing.T) { } v1260 := []attribute.KeyValue{ - semconv1260.DBSystemMongoDB, + semconv.DBSystemNameMongoDB, {Key: "db.operation.name", Value: attribute.StringValue(opName)}, {Key: "db.namespace", Value: attribute.StringValue(dbNamespace)}, {Key: "db.query.text", Value: attribute.StringValue(stmt)}, diff --git a/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo/mongo.go b/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo/mongo.go index 2e959caa14b..e371a62e2b6 100644 --- a/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo/mongo.go +++ b/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo/mongo.go @@ -12,7 +12,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" - semconv "go.opentelemetry.io/otel/semconv/v1.30.0" + semconv "go.opentelemetry.io/otel/semconv/v1.32.0" "go.opentelemetry.io/otel/trace" "go.mongodb.org/mongo-driver/v2/bson" From b4ca4479a45aea0bb1af2a7fe2685a23ca7cae29 Mon Sep 17 00:00:00 2001 From: Tyler Yahn Date: Wed, 28 May 2025 14:12:47 -0700 Subject: [PATCH 2/4] Add a changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a591d0a6e5..21dd4da31c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - The semantic conventions have been upgraded from `v1.30.0` to `v1.33.0` in `go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`. (#7361) - The semantic conventions have been upgraded from `v1.26.0` to `v1.32.0` in `go.opentelemetry.io/contrib/detectors/aws/ec2`. (#7373) - The semantic conventions have been upgraded from `v1.26.0` to `v1.32.0` in `go.opentelemetry.io/contrib/detectors/aws/lambda`. (#7376) +- The semantic conventions have been upgraded in `go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo` to `v1.32.0`. (#7393) +- The semantic conventions have been upgraded in `go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo` to `v1.32.0`. (#7393) ### Fixed From ff66293742805492061ceba287531cdd1bfb83ec Mon Sep 17 00:00:00 2001 From: Tyler Yahn Date: Wed, 28 May 2025 17:04:03 -0700 Subject: [PATCH 3/4] Update test module --- .../mongo-driver/mongo/otelmongo/test/mongo_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/test/mongo_test.go b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/test/mongo_test.go index 41394a9d872..02a810983a0 100644 --- a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/test/mongo_test.go +++ b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/test/mongo_test.go @@ -259,10 +259,10 @@ func assertSemconv1170(mt *mtest.T, attrs []attribute.KeyValue) { assert.Contains(mt, attrs, attribute.String("db.name", "test-database")) } -func assertSemconv1260(mt *mtest.T, attrs []attribute.KeyValue) { +func assertSemconv(mt *mtest.T, attrs []attribute.KeyValue) { mt.Helper() - assert.Contains(mt, attrs, attribute.String("db.system", "mongodb")) + assert.Contains(mt, attrs, attribute.String("db.system.name", "mongodb")) assert.Contains(mt, attrs, attribute.String("network.peer.address", ":27017")) assert.Contains(mt, attrs, attribute.Int64("network.peer.port", int64(27017))) assert.Contains(mt, attrs, attribute.String("network.transport", "tcp")) @@ -283,7 +283,7 @@ func TestSemanticConventionOptIn(t *testing.T) { { name: "database", semconvOptIn: "database", - assert: assertSemconv1260, + assert: assertSemconv, }, } for _, tc := range tt { From 22b7e97f10d2b8730cccbde05d675078a0d0226d Mon Sep 17 00:00:00 2001 From: Tyler Yahn Date: Fri, 30 May 2025 17:00:22 -0700 Subject: [PATCH 4/4] Update doc.go based on feedback --- .../go.mongodb.org/mongo-driver/mongo/otelmongo/doc.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/doc.go b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/doc.go index ffe9828149d..bb4d1e0df18 100644 --- a/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/doc.go +++ b/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo/doc.go @@ -14,10 +14,11 @@ // - https://github.com/DataDog/dd-trace-go/tree/v1.23.3/ddtrace/ext // // The "OTEL_SEMCONV_STABILITY_OPT_IN" environment variable can be used to opt -// into semconv/v1.26.0: -// - "database": emit v1.26.0 semantic conventions +// into the latest semantic conventions: +// - "database": emit the latest semantic conventions // - "": emit v1.21.0 (default) semantic conventions -// - "database/dup": emit v1.21.0 (default) and v1.26.0 +// - "database/dup": emit v1.21.0 (default) and the latest semantic +// conventions // // By default, otelmongo only emits v1.21.0. package otelmongo // import "go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo"