Proposal: Mongodb monitoring
Folgendes Grafana Dashboard hat sich bei mir bewährt: https://grafana.com/grafana/dashboards/20192-mongodb-overview/
Ich hatte noch kleine Anpassungen vorgenommen, zum Beispiel dass die Anzahl der Statements und Results separat ausgewiesen werden (kann ich später als JSON nachliefern, ich kann aber gerade die Anpassungen nicht 100% nachvollziehen).
Den Container zur Bereitstellungen der /metrics endpoints hatte ich wie folgt konfiguriert:
mongodb_exporter:
image: percona/mongodb_exporter:0.43.1
restart: unless-stopped
ports:
- "9216:9216"
environment:
MONGODB_URI: ${LRS_CONNECTION_STRING}
depends_on:
- mongodb_container
command: [
"--mongodb.uri=${LRS_CONNECTION_STRING}",
"--mongodb.collstats-colls=${LRS_MONGO_DB_NAME}.statements,${LRS_MONGO_DB_NAME}.results",
"--mongodb.indexstats-colls=${LRS_MONGO_DB_NAME}.statements,${LRS_MONGO_DB_NAME}.results",
"--web.listen-address=:9216",
"--collect-all",
"--log.level=info"
]
Je nach deployment müsste in einer .env Datei noch Connection String und DB Name eingerichtet werden (sind die gleichen wie bei Polaris):
.env
LRS_CONNECTION_STRING=mongodb://root:...@mongodb_container:27017
LRS_MONGO_DB_NAME=lrs
In prometheus ist es unter "scrape_configs" wie folgt eingebunden (die bei uns Prometheus und Polaris auf verschiedenen Hosts laufen, werden hier externe Hostnamen verwendet):
- job_name: "mongodb_exporter_polaris_mongodb"
scrape_interval: 15s
static_configs:
- targets: ['hostname_of_vm:9216']
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
Durch die Angabe von "instance" lassen sich hierbei auch mehrere MongoDB in dem Dashboard (per Auswahlfeld) anzeigen.
Gerne Testen und wenn es passt ggf. in zukünftigen Versionen in Deployment Scripte aufnehmen.