diff --git a/plugin/trino-mongodb/pom.xml b/plugin/trino-mongodb/pom.xml
index a56131844f61..08211c4915ed 100644
--- a/plugin/trino-mongodb/pom.xml
+++ b/plugin/trino-mongodb/pom.xml
@@ -48,6 +48,11 @@
log
+
+ io.opentelemetry.instrumentation
+ opentelemetry-mongo-3.1
+
+
io.trino
trino-cache
diff --git a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoClientModule.java b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoClientModule.java
index 60441e7ecca7..81cfcf57294d 100644
--- a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoClientModule.java
+++ b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoClientModule.java
@@ -23,6 +23,8 @@
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import io.airlift.configuration.AbstractConfigurationAwareModule;
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetry;
import io.trino.plugin.base.session.SessionPropertiesProvider;
import io.trino.plugin.mongodb.ptf.Query;
import io.trino.spi.function.table.ConnectorTableFunction;
@@ -60,10 +62,11 @@ public void setup(Binder binder)
@Singleton
@Provides
- public static MongoSession createMongoSession(TypeManager typeManager, MongoClientConfig config, Set configurators)
+ public static MongoSession createMongoSession(TypeManager typeManager, MongoClientConfig config, Set configurators, OpenTelemetry openTelemetry)
{
MongoClientSettings.Builder options = MongoClientSettings.builder();
configurators.forEach(configurator -> configurator.configure(options));
+ options.addCommandListener(MongoTelemetry.builder(openTelemetry).build().newCommandListener());
MongoClient client = MongoClients.create(options.build());
return new MongoSession(
diff --git a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java
index 6960ead92ff3..4d61c6340bca 100644
--- a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java
+++ b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java
@@ -16,6 +16,7 @@
import com.google.inject.Injector;
import io.airlift.bootstrap.Bootstrap;
import io.airlift.json.JsonModule;
+import io.opentelemetry.api.OpenTelemetry;
import io.trino.spi.connector.Connector;
import io.trino.spi.connector.ConnectorContext;
import io.trino.spi.connector.ConnectorFactory;
@@ -54,7 +55,8 @@ public Connector create(String catalogName, Map config, Connecto
Bootstrap app = new Bootstrap(
new JsonModule(),
new MongoClientModule(),
- binder -> binder.bind(TypeManager.class).toInstance(context.getTypeManager()));
+ binder -> binder.bind(TypeManager.class).toInstance(context.getTypeManager()),
+ binder -> binder.bind(OpenTelemetry.class).toInstance(context.getOpenTelemetry()));
Injector injector = app.doNotInitializeLogging()
.setRequiredConfigurationProperties(config)