Need help with mongodb_exporter?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

593 Stars 283 Forks Apache License 2.0 506 Commits 25 Opened issues


A Prometheus exporter for MongoDB including sharding, replication and storage engines

Services available


Need anything else?

Contributors list

| :warning: WARNING | |:-------------------------------------------------------------------------------------------------------------------------------------------------| | We switching to the new branch. Please use and read more about the new version of the mongodb_exporter at |

Percona MongoDB Exporter

Release Build Status Code Coverage Go Report Card CLA assistant

Based on MongoDB exporter by David Cuadrado (@dcu), but forked for full sharded support and structure changes.


  • MongoDB Server Status metrics (cursors, operations, indexes, storage, etc)
  • MongoDB Replica Set metrics (members, ping, replication lag, etc)
  • MongoDB Replication Oplog metrics (size, length in time, etc)
  • MongoDB Sharding metrics (shards, chunks, db/collections, balancer operations)
  • MongoDB RocksDB storage-engine metrics (levels, compactions, cache usage, i/o rates, etc)
  • MongoDB WiredTiger storage-engine metrics (cache, blockmanger, tickets, etc)
  • MongoDB Top Metrics per collection (writeLock, readLock, query, etc*)

Important Note


doesn't work in Master/Slave replication mode, because it was DEPRECATED in MongoDB
and removed in

Building and running



  1. Get the code from the Percona repository:

    go get -u
  2. Switch to the buld directory and just run

    to install all needed tools, format code with
    go fmt
    , build a binary for your OS and run tests.:
    cd ${GOPATH-$HOME/go}/src/

    Note: Running tests requires

    (as it uses MongoDB) and
    , and you will also need free
    port, as
    maps this port into your host OS while testing.

    1. If you want just build a binary for your OS without codestyle checks and tests you can run command below:

      make build
    2. If you don't have or don't want to install the whole GO stuff, use this docker build that creates a container with a freshly built

      make docker


To define your own MongoDB URL, use environment variable

. If set this variable takes precedence over

To enable HTTP basic authentication, set environment variable

to user:password pair. Alternatively, you can use YAML file with
export MONGODB_URI='mongodb://localhost:27017'
export HTTP_AUTH='user:password'
./bin/mongodb_exporter []

If you are using hidden nodes, connect to them using the

option. Example:
./mongodb_exporter --mongodb.uri=admin:[email protected]:17003/admin/?connect=direct


You can use the chart prometheus-mongodb-exporter from helm stable repository.


See the help page with


If you use MongoDB Authorization, you must:

  1. Create a user with 'clusterMonitor' role and 'read' on the 'local' database, like the following (replace username/password!):

        user: "mongodb_exporter",
        pwd: "s3cr3tpassw0rd",
        roles: [
            { role: "clusterMonitor", db: "admin" },
            { role: "read", db: "local" }
  2. Set environment variable

    before starting the exporter:
    export MONGODB_URI=mongodb://mongodb_exporter:[email protected]:27017

If you use x.509 Certificates to Authenticate Clients, pass in username and

via connection options to the MongoDB uri. Eg:
mongodb://CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,[email protected]:27017/?authMechanism=MONGODB-X509

Note about how this works

Point the process to any mongo port and it will detect if it is a mongos, replicaset member, or stand alone mongod and return the appropriate metrics for that type of node. This was done to prevent the need to an exporter per type of process.


  • Document more configurations options here
  • Stabilize RocksDB and WiredTiger support
  • Move MongoDB user/password/authdb to a file (for security)
  • Write more go tests

Submitting Bug Reports

If you find a bug in Percona MongoDB Exporter or one of the related projects, you should submit a report to that project's JIRA issue tracker.

Your first step should be to search the existing set of open tickets for a similar report. If you find that someone else has already reported your problem, then you can upvote that report to increase its visibility.

If there is no existing report, submit a report following these steps:

  1. Sign in to Percona JIRA. You will need to create an account if you do not have one.
  2. Go to the Create Issue screen and select the relevant project.
  3. Fill in the fields of Summary, Description, Steps To Reproduce, and Affects Version to the best you can. If the bug corresponds to a crash, attach the stack trace from the logs.

An excellent resource is Elika Etemad's article on filing good bug reports..

As a general rule of thumb, please try to create bug reports that are:

  • Reproducible. Include steps to reproduce the problem.
  • Specific. Include as much detail as possible: which version, what environment, etc.
  • Unique. Do not duplicate existing tickets.
  • Scoped to a Single Bug. One bug per report.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.