Skip to main content

Mongodb Receiver

Status Available in: contrib Maintainers: @justinianvoss22, @dyl10s, @ishleenk17, @shrenikjain38 Source: opentelemetry-collector-contrib

Supported Telemetry

Logs Metrics

Overview

Purpose

The purpose of this receiver is to allow users to monitor metrics from standalone MongoDB clusters. This includes non-Atlas managed MongoDB Servers.

Prerequisites

This receiver supports MongoDB versions:
  • 4.4+
  • 5.0
  • 6.0
  • 7.0
Mongodb recommends to set up a least privilege user (LPU) with a clusterMonitor role in order to collect metrics. Please refer to lpu.sh for an example of how to configure these permissions.

Permissions for explain plans (db.server.top_query)

The clusterMonitor role is sufficient for metrics and basic slow query collection (profiler data and getLog). However, populating mongodb.explain_plan.text and mongodb.explain_plan.hash on db.server.top_query events requires the receiver to run explain against user collections, which needs the find privilege on each monitored database. Without this permission, slow query collection still works but explain fields are empty and an Unauthorized warning is logged for each query. To enable explain plans, grant read on each database you want to monitor (recommended — least privilege):
Alternatively, grant readAnyDatabase to cover all databases on the server:
To disable explain plan collection entirely and avoid needing additional permissions, set max_explain_each_interval: 0 in top_query_collection.

Configuration

The following settings are optional:
  • hosts (default: [{endpoint: "localhost:27017"}]): list of objects with an endpoint field set to host:port or a unix domain socket path. The transport option is no longer available.
    • For standalone MongoDB deployments this is the hostname and port of the mongod instance
    • For replica sets specify the hostnames and ports of the mongod instances that are in the replica set configuration. If the replica_set field is specified, nodes will be autodiscovered.
    • For a sharded MongoDB deployment, please specify a list of the mongos hosts.
  • scheme (default: mongodb): connection scheme. Use mongodb+srv for clusters that use SRV DNS records (e.g. MongoDB Atlas). When using mongodb+srv, exactly one host must be specified.
  • username: If authentication is required, the user can with clusterMonitor permissions can be provided here.
  • password: If authentication is required, the password can be provided here.
  • auth_mechanism: (optional) The authentication mechanism to use. Common values include SCRAM-SHA-1, SCRAM-SHA-256, MONGODB-X509, GSSAPI, MONGODB-AWS, etc. If not specified, MongoDB will use the default mechanism.
  • auth_source: (optional) The database name to use for authentication. If not specified, MongoDB will use the default authentication database (usually admin).
  • auth_mechanism_properties: (optional) A map of key-value pairs specifying additional properties for the authentication mechanism. For example, when using GSSAPI (Kerberos), you may need to set SERVICE_NAME. For MONGODB-AWS, you may need to set AWS_SESSION_TOKEN when using temporary AWS credentials.
  • collection_interval: (default = 1m): This receiver collects metrics on an interval. This value must be a string readable by Golang’s time.ParseDuration. Valid time units are ns, us (or µs), ms, s, m, h.
  • initial_delay (default = 1s): defines how long this receiver waits before starting.
  • replica_set: If the deployment of MongoDB is a replica set then this allows users to specify the replica set name which allows for autodiscovery of other nodes in the replica set.
  • timeout: (default = 1m) The timeout of running commands against mongo.
  • tls: TLS control. By default, insecure settings are rejected and certificate verification is on.
  • direct_connection: If true, then the driver will not try to autodiscover other nodes, and perform instead a direct connection o the host.
  • query_sample_collection: Additional configuration for query sample collection (db.server.query_sample event):
    • max_rows_per_query: (default = 100) The maximum number of eligible query samples to emit per $currentOp query. Must be greater than 0.

Top Query Collection

The receiver can collect the top slow queries from MongoDB using system.profile (when profiling is enabled) or the diagnostic log ring buffer (getLog) as a fallback. To enable it:
By default, top query collection is disabled. See the Permissions for explain plans section for the roles required when explain plan collection is enabled. The following options are available under top_query_collection:
  • collection_interval: (default = 60s) How often to scrape slow query data. Independent of the receiver’s collection_interval.
  • top_query_count: (default = 500) The maximum number of slow query events to emit per scrape. The slowest N executions are selected.
  • max_query_sample_count: (default = 1000) The maximum number of slow query entries to read from system.profile or getLog per scrape before ranking.
  • max_explain_each_interval: (default = 250) The maximum number of server-side explain calls to issue per scrape interval. Set to 0 to disable explain plan collection entirely.
  • query_plan_cache_size: (default = 500) The number of query shapes whose explain plans are cached. Set to 0 to disable caching.
  • query_plan_cache_ttl: (default = 10m) How long a cached explain plan is considered valid.

Example Configuration

Example Configuration (MongoDB Atlas / SRV)

The full list of settings exposed for this receiver are documented in config.go with detailed sample configurations in testdata/config.yaml.

Authentication

The receiver supports several MongoDB authentication mechanisms. The auth_mechanism, auth_source, and auth_mechanism_properties fields are passed directly to the MongoDB Go driver’s options.Credential struct.

SCRAM (Default)

SCRAM-SHA-256 is the default authentication mechanism for MongoDB 4.0+. If auth_mechanism is not specified and username/password are provided, the driver will negotiate the strongest SCRAM mechanism supported by the server (SCRAM-SHA-256, falling back to SCRAM-SHA-1).
To explicitly specify the mechanism:

X.509 Certificate Authentication

X.509 authentication uses TLS client certificates instead of username and password. The certificate’s subject DN is used as the identity.
The MongoDB Go driver typically uses a single combined PEM file (tlsCertificateKeyFile) containing both the certificate and private key. However, the receiver uses the OpenTelemetry Collector’s standard TLS configuration, which requires separate cert_file and key_file entries. If you have a combined PEM file, split it into separate files:

MONGODB-AWS (IAM Authentication)

MONGODB-AWS authenticates using AWS IAM credentials. This mechanism is available in MongoDB 4.4+ and requires server-side support (e.g., MongoDB Atlas or Percona Server for MongoDB). It is not supported by the MongoDB Community Edition. Using explicit IAM credentials:
When running on AWS infrastructure (EC2, ECS, Lambda), the driver can automatically discover credentials from environment variables, the ECS task role endpoint, or the EC2 instance metadata endpoint. In that case, username, password, and auth_mechanism_properties can be omitted:

GSSAPI (Kerberos)

GSSAPI/Kerberos is available for MongoDB Enterprise deployments only. It is not supported by MongoDB Community Edition. Using this mechanism requires:
  • The collector to be compiled with the gssapi build tag and cgo support (CGO_ENABLED=1).
  • On Linux, the libkrb5 library must be installed.
Note: The default otelcontribcol binary is built without the gssapi build tag and with CGO_ENABLED=0, so GSSAPI authentication will not work out of the box. You will need to build a custom collector with CGO_ENABLED=1 and the gssapi build tag to use this mechanism.
The default Kerberos service name is mongodb. Users can authenticate with an explicit password or by storing authentication keys in keytab files initialized with the kinit utility.

Metrics

The following metric are available with versions:
  • mongodb.extent.count < 4.4 with mmapv1 storage engine
Details about the metrics produced by this receiver can be found in metadata.yaml

Feature gate configurations

See the Collector feature gates for an overview of feature gates in the collector. STABLE: receiver.mongodb.removeDatabaseAttr The feature gate receiver.mongodb.removeDatabaseAttr will remove the database name attribute from data points because it is already found on the resource. This feature gate cannot be changed and will be removed soon.

Metrics

Attributes

Resource Attributes

Configuration

Example Configuration


Last generated: 2026-08-24