Based on MongoDB exporter for prometheus.io, written in go (https://github.com/dcu/mongodb_exporter), but forked for full sharded support and structure changes.
The exporter is in beta/experimental state and field names are very likely to change and features may change or get removed!
- 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)
go build -o mongodb_exporter github.com/Percona-Lab/prometheus_mongodb_exporter
The exporter can be started by running the 'mongodb_exporter' binary that is created in the build step. The exporter will try to connect to 'mongodb://localhost:27017' (no auth) as default if no options are supplied.
It is recommended to define the following options:
- -web.listen-address - The listen address of the exporter (default: ":9104")
- -log_dir - The directory to write the log file (default: /tmp)
To define your own MongoDB URI, use environment variable MONGODB_URI
. If set this variable takes precedence over -mongodb.uri flag.
For example: export MONGODB_URI=mongodb://localhost:27017
To enable HTTP basic authentication, set environment variable HTTP_AUTH
to user:password pair.
For example: export HTTP_AUTH="user:password"
For more options see the help page with '-h' or '--help'
If you use MongoDB Authorization, you must:
- Create a user with 'clusterMonitor' role and 'read' on the 'local' database, like the following (replace username/password!):
db.getSiblingDB("admin").createUser({
user: "mongodb_exporter",
pwd: "s3cr3tpassw0rd",
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
})
- Set environment variable
MONGODB_URI
before starting the exporter:
export MONGODB_URI=mongodb://mongodb_exporter:s3cr3tpassw0rd@localhost:27017
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 preent the need to an exporter per type of process.
- Document more configurations options here
- Stabilize RocksDB and WiredTiger support (currently beta/experimental)
- Move MongoDB user/password/authdb to a file (for security)
- Write more go tests
- Version scheme