Coroot enriches each Mongodb database with an overview dashboard based on metrics gathered by
mongodb_exporter.
Mongodb Helm charts by Bitnami
If you deploy your MongoDB databases using Helm charts by Bitnami, you can easily enable the exporter by setting metrics.enable=true.
This parameter is applicable to both mongodb and mongodb-sharded charts.
helm upgrade --install db --set "metrics.enabled=true,architecture=replicaset" oci://registry-1.docker.io/bitnamicharts/mongodb
Percona Operator for MongoDB
If you're using the Percona Operator for MongoDB, you will need to add a sidecar container and annotations for each ReplicaSet, ConfigsvrReplSet, and Mongos.
Below is an example of the PerconaServerMongoDB specification:
apiVersion: psmdb.percona.com/v1
kind: PerconaServerMongoDB
metadata:
name: mongo-psmdb-db
namespace: default
labels:
app.kubernetes.io/name: psmdb-db
app.kubernetes.io/instance: mongo
finalizers:
- delete-psmdb-pods-in-order
spec:
allowUnsafeConfigurations: true
crVersion: 1.15.0
pause: false
unmanaged: false
image: "percona/percona-server-mongodb:6.0.9-7"
imagePullPolicy: "Always"
multiCluster:
enabled: false
secrets:
users: mongo-psmdb-db-secrets
updateStrategy: SmartUpdate
upgradeOptions:
versionServiceEndpoint: https://check.percona.com
apply: disabled
schedule: 0 2 * * *
setFCV: false
pmm:
enabled: false
image: "percona/pmm-client:2.39.0"
serverHost: monitoring-service
replsets:
- name: rs0
size: 3
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '9216'
sidecars:
- image: "percona/mongodb_exporter:0.40.0"
name: mongodb-exporter
args:
- "--mongodb.uri=mongodb://127.0.0.1:27017"
- "--collector.replicasetstatus=true"
- "--collector.diagnosticdata=true"
ports:
- containerPort: 9216
env:
- name: MONGODB_USER
valueFrom:
secretKeyRef:
key: MONGODB_DATABASE_ADMIN_USER
name: mongo-psmdb-db-secrets
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
key: MONGODB_DATABASE_ADMIN_PASSWORD
name: mongo-psmdb-db-secrets
podDisruptionBudget:
maxUnavailable: 1
expose:
enabled: false
exposeType: ClusterIP
resources:
limits:
cpu: 300m
memory: 0.5G
requests:
cpu: 300m
memory: 0.5G
volumeSpec:
persistentVolumeClaim:
resources:
requests:
storage: 3Gi
nonvoting:
enabled: false
size: 3
podDisruptionBudget:
maxUnavailable: 1
resources:
limits:
cpu: 300m
memory: 0.5G
requests:
cpu: 300m
memory: 0.5G
volumeSpec:
persistentVolumeClaim:
resources:
requests:
storage: 3Gi
arbiter:
enabled: false
size: 1
sharding:
enabled: true
balancer:
enabled: true
configsvrReplSet:
size: 3
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '9216'
sidecars:
- image: "percona/mongodb_exporter:0.40.0"
name: mongodb-exporter
args:
- "--mongodb.uri=mongodb://127.0.0.1:27017"
- "--collector.replicasetstatus=true"
- "--collector.diagnosticdata=true"
ports:
- containerPort: 9216
env:
- name: MONGODB_USER
valueFrom:
secretKeyRef:
key: MONGODB_DATABASE_ADMIN_USER
name: mongo-psmdb-db-secrets
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
key: MONGODB_DATABASE_ADMIN_PASSWORD
name: mongo-psmdb-db-secrets
podDisruptionBudget:
maxUnavailable: 1
expose:
enabled: false
exposeType: ClusterIP
resources:
limits:
cpu: 300m
memory: 0.5G
requests:
cpu: 300m
memory: 0.5G
volumeSpec:
persistentVolumeClaim:
resources:
requests:
storage: 3Gi
mongos:
size: 1
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '9216'
sidecars:
- image: "percona/mongodb_exporter:0.40.0"
name: mongodb-exporter
args: ["--mongodb.uri=mongodb://127.0.0.1:27017"]
ports:
- containerPort: 9216
podDisruptionBudget:
maxUnavailable: 1
resources:
limits:
cpu: 300m
memory: 0.5G
requests:
cpu: 300m
memory: 0.5G
expose:
exposeType: ClusterIP
backup:
enabled: true
image: "percona/percona-backup-mongodb:2.3.0"
serviceAccountName: percona-server-mongodb-operator
storages:
null
pitr:
enabled: false
tasks:
null
Docker
docker run -d -p 9216:9216 percona/mongodb_exporter:0.40.0 \
--mongodb.uri=mongodb://<mongodb_host:mongodb_port> \
--collector.replicasetstatus=true \
--collector.diagnosticdata=true