Skip to content

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.