---
title: "prometheus.exporter.mongodb | Grafana Alloy documentation"
description: "Learn about prometheus.exporter.mongodb"
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# `prometheus.exporter.mongodb`

The `prometheus.exporter.mongodb` component embeds the Percona [`mongodb_exporter`](https://github.com/percona/mongodb_exporter) to collect metrics from a MongoDB node.

> Note
> 
> This exporter doesn’t collect metrics from multiple nodes. For this component to work properly, you must connect each node of your MongoDB cluster to an Alloy instance.

Grafana recommends that you configure a separate user for Alloy with only the security privileges needed to monitor your node. Refer to the [Percona documentation](https://github.com/percona/mongodb_exporter#permissions) for more information.

You can specify multiple `prometheus.exporter.mongodb` components by giving them different labels.

## Usage

Alloy ![Copy code to clipboard](https://grafana.com/media/images/icons/icon-copy-small-2.svg) Copy

```alloy
prometheus.exporter.mongodb "<LABEL>" {
  mongodb_uri = "<MONGODB_URI>"
}
```

## Arguments

You can use the following arguments with `prometheus.exporter.mongodb`:

Expand table

| Name                           | Type       | Description                                                           | Default | Required |
|--------------------------------|------------|-----------------------------------------------------------------------|---------|----------|
| `mongodb_uri`                  | `secret`   | MongoDB connection URI.                                               |         | yes      |
| `collect_all`                  | `bool`     | Enables all collectors.                                               | `true`  | no       |
| `compatible_mode`              | `bool`     | Exposes metrics under both current and `mongodb_exporter` 0.1x names. | `true`  | no       |
| `currentop_slow_time`          | `duration` | Minimum running time of an operation before the exporter reports it.  | `"1m"`  | no       |
| `direct_connect`               | `bool`     | Whether to connect directly to one host instead of the whole cluster. | `false` | no       |
| `discovering_mode`             | `bool`     | Whether to automatically discover collections.                        | `false` | no       |
| `enable_coll_stats`            | `bool`     | Enables collecting collection statistics.                             | `false` | no       |
| `enable_currentop_metrics`     | `bool`     | Enables collecting current operation metrics.                         | `false` | no       |
| `enable_db_stats`              | `bool`     | Enables collecting database statistics.                               | `false` | no       |
| `enable_db_stats_free_storage` | `bool`     | Enables collecting free storage statistics from `dbStats`.            | `false` | no       |
| `enable_diagnostic_data`       | `bool`     | Enables collecting diagnostic data.                                   | `false` | no       |
| `enable_fcv`                   | `bool`     | Enables collecting Feature Compatibility Version (FCV) metrics.       | `false` | no       |
| `enable_index_stats`           | `bool`     | Enables collecting index statistics.                                  | `false` | no       |
| `enable_pbm_metrics`           | `bool`     | Enables collecting Percona Backup for MongoDB (PBM) metrics.          | `false` | no       |
| `enable_profile`               | `bool`     | Enables collecting profile metrics.                                   | `false` | no       |
| `enable_replicaset_config`     | `bool`     | Enables collecting replica set configuration.                         | `false` | no       |
| `enable_replicaset_status`     | `bool`     | Enables collecting replica set status.                                | `false` | no       |
| `enable_shards`                | `bool`     | Enables collecting sharding information.                              | `false` | no       |
| `enable_top_metrics`           | `bool`     | Enables collecting top metrics.                                       | `false` | no       |

Set `mongodb_uri` to a [MongoDB connection string](https://docs.mongodb.com/manual/reference/connection-string/) that uses either the `mongodb` or `mongodb+srv` scheme.

`collect_all` defaults to `true` and turns on every collector. While it’s `true`, it overrides `discovering_mode` and each `enable_*` argument, so setting any of them to `false` has no effect. Set `collect_all` to `false` to choose collectors individually.

When `compatible_mode` is `true`, the exporter exposes each metric under its current name. It also exposes a second copy under the matching `mongodb_exporter` 0.1x name, where one exists. Refer to [Info on Percona MongoDB exporter versions](https://github.com/percona/mongodb_exporter#info-on-percona-mongodb-exporter-versions) for details.

The `currentop_slow_time` argument applies whenever the exporter collects current operation metrics. The exporter collects them when you set `enable_currentop_metrics` to `true`, or when `collect_all` is `true`. The exporter doesn’t collect current operation metrics from a `mongos` instance.

You can’t use `direct_connect` with multiple hosts or an SRV URI. The MongoDB driver returns an error if your `mongodb_uri` contains either.

The component sets the `instance` label on its exported targets to the host portion of `mongodb_uri`.

## Blocks

The `prometheus.exporter.mongodb` component doesn’t support any blocks. You can configure this component with arguments.

## Exported fields

The following fields are exported and can be referenced by other components.

Expand table

| Name      | Type                | Description                                               |
|-----------|---------------------|-----------------------------------------------------------|
| `targets` | `list(map(string))` | The targets that can be used to collect exporter metrics. |

For example, the `targets` can either be passed to a `discovery.relabel` component to rewrite the targets’ label sets or to a `prometheus.scrape` component that collects the exposed metrics.

The exported targets use the configured [in-memory traffic](https://grafana.com/docs/alloy/latest/get-started/component_controller/#in-memory-traffic) address specified by the [run command](https://grafana.com/docs/alloy/latest/reference/cli/run/).

## Component health

`prometheus.exporter.mongodb` is only reported as unhealthy if given an invalid configuration. In those cases, exported fields retain their last healthy values.

## Debug information

`prometheus.exporter.mongodb` doesn’t expose any component-specific debug information.

## Debug metrics

`prometheus.exporter.mongodb` doesn’t expose any component-specific debug metrics.

## Example

The following example uses a [`prometheus.scrape` component](https://grafana.com/docs/alloy/latest/reference/components/prometheus/prometheus.scrape/) to collect metrics from `prometheus.exporter.mongodb`:

Alloy ![Copy code to clipboard](https://grafana.com/media/images/icons/icon-copy-small-2.svg) Copy

```alloy
prometheus.exporter.mongodb "example" {
  mongodb_uri = "mongodb://127.0.0.1:27017"
}

// Configure a prometheus.scrape component to collect MongoDB metrics.
prometheus.scrape "demo" {
  targets    = prometheus.exporter.mongodb.example.targets
  forward_to = [ prometheus.remote_write.default.receiver ]
}

prometheus.remote_write "default" {
  endpoint {
    url = "<PROMETHEUS_REMOTE_WRITE_URL>"
  }
}
```

Replace the following:

- *`<PROMETHEUS_REMOTE_WRITE_URL>`* : The URL of the Prometheus `remote_write` compatible server to send metrics to.

## Compatible components

`prometheus.exporter.mongodb` has exports that can be consumed by the following components:

- Components that consume [Targets](https://grafana.com/docs/alloy/latest/reference/compatibility/#targets-consumers)

> Note
> 
> Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.
