Integration · MongoDB

MongoDB Monitoring: Operationen, Cache und Replica Sets

Überwachen Sie Latenz, WiredTiger Cache, Verbindungen, Replication Lag und Oplog Window jedes MongoDB-Deployments und sehen Sie, welcher Service die langsamen Queries sendet.
Obseria Apps und Funktionen: Observability, APM, Infrastruktur und Integrationen
Obseria Home-Dashboard mit Service-Zustand, offenen Problemen, SLO-Erfüllung und Ingestion
Obseria Trace-Explorer mit Span-Liste und Span-Attributen
Überblick

Warum MongoDB mit Obseria überwachen

Latenz pro Operationstyp

Reads, Writes und Commands werden getrennt gemessen. Sie sehen, ob eine Verlangsamung von Queries, Inserts oder Updates kommt.

Sichere Replica Sets

Replication Lag und Oplog Window pro Mitglied warnen, bevor ein Secondary zu weit zurückfällt, um aufzuholen.

Queries mit Codebezug

Datenbank-Spans aus der OpenTelemetry-Instrumentierung zeigen Collection, Operation und Endpunkt hinter jedem langsamen Request.

Abdeckung

MongoDB-Komponenten, die Obseria überwacht

  • mongod-Instanzen. Operationen, Latenz, Verbindungen, Cursor, Speicher und Netzwerk-I/O pro Instanz.
  • WiredTiger Storage Engine. Cache Hits und Misses, Cache-Reads und belegte Concurrent Transaction Tickets.
  • Replica Sets. Anzahl und Status der Mitglieder, Replication Lag, Oplog-Größe, Oplog Window und Replication Headroom.
  • Datenbanken und Collections. Collections, Objekte, Daten- und Speichergröße, Anzahl und Größe der Indizes pro Datenbank.
  • Indizes und Query-Ausführung. Index-Zugriffe, Collection Scans und gescannte Dokumente im Vergleich zu Ergebnissen.
  • MongoDB Atlas. Atlas-Cluster über den OpenTelemetry-mongodbatlas-Receiver, der Metriken aus der Atlas API liest.
Auf einen Blick

Die MongoDB-Kennzahlen, auf die es ankommt

Obseria erfasst diese Werte automatisch und zeigt sie in fertigen Dashboards und Alerts.

Arbeitslast und Tempo

Zeigt, wie viele Anfragen die Datenbank bearbeitet und wie schnell sie antwortet, die Grundlage für schnelle Anwendungen.

  • mongodb.operation.count
  • mongodb.operation.latency.time
  • mongodb.connection.count

Sichere Replikation

Zeigt, ob Sicherungskopien aktuell sind und wie viel Zeit Ihnen nach einem Ausfall für die Wiederherstellung bleibt.

  • mongodb.replica_set.lag
  • mongodb.oplog.window

Effiziente Abfragen

Macht ineffiziente Suchen, wartende Anfragen und abgebrochene Abrufe sichtbar, die Ihre Anwendungen unbemerkt ausbremsen.

  • mongodb.global_lock.time
  • mongodb.query_executor.collection_scan.count
  • mongodb.cursor.timeout.count

Arbeitsspeicher und Cache

Zeigt, wie viel Speicher die Datenbank nutzt und wie gut sie häufig benötigte Daten griffbereit hält.

  • mongodb.cache.operations
  • mongodb.memory.usage
Alle 10 Metriken im Detail anzeigen
MetrikEinheitAussage
mongodb.operation.count{operations}Operationen nach Typ (insert, query, update, delete, getmore, command).
mongodb.operation.latency.timeusLatenz pro Operationstyp für Reads, Writes und Commands.
mongodb.connection.count{connections}Aktive, verfügbare und aktuelle Verbindungen; nahe null verfügbar blockiert Clients.
mongodb.cache.operations{operations}WiredTiger Cache Hits und Misses; steigende Misses zeigen ein zu großes Working Set.
mongodb.replica_set.lagsWie weit ein Secondary hinter dem Primary liegt.
mongodb.oplog.windowsVom Oplog abgedeckte Zeitspanne; der Lag muss deutlich darunter bleiben.
mongodb.global_lock.timemsZeit, in der der globale Lock gehalten wurde.
mongodb.query_executor.collection_scan.count{query}Queries, die ganze Collections gescannt haben, ein Zeichen für fehlende Indizes.
mongodb.cursor.timeout.count{cursors}Abgelaufene Cursor, oft von Clients, die sie nie schließen.
mongodb.memory.usageByResident und Virtual Memory des mongod-Prozesses.
Einrichtung

MongoDB-Monitoring in wenigen Minuten einrichten

  1. Schritt 1

    Monitoring-User anlegen

    Legen Sie einen MongoDB-User mit der eingebauten Rolle clusterMonitor an und hinterlegen Sie das Passwort als Umgebungsvariable.

  2. Schritt 2

    mongodb-Receiver konfigurieren

    Ergänzen Sie den mongodb-Receiver im OpenTelemetry Collector oder Obseria Agent und aktivieren Sie Metriken für Replication Lag, Oplog Window und Latenz.

  3. Schritt 3

    Clients instrumentieren

    Instrumentieren Sie die Services mit MongoDB-Treibern per OpenTelemetry, damit Datenbank-Spans Queries mit Requests verbinden.

Beispielkonfiguration · YAML
receivers:
  mongodb:
    hosts:
      - endpoint: mongo-0.mongo:27017
    username: otel_monitor
    password: ${env:MONGODB_PASSWORD}
    collection_interval: 30s
    tls:
      insecure: false
      ca_file: /etc/otel/mongo-ca.pem
    metrics:
      mongodb.replica_set.lag:
        enabled: true
      mongodb.oplog.window:
        enabled: true
      mongodb.operation.latency.time:
        enabled: true
exporters:
  otlphttp:
    endpoint: ${env:OBSERIA_OTLP_ENDPOINT}
    headers:
      Authorization: "Bearer ${env:OBSERIA_TOKEN}"
service:
  pipelines:
    metrics:
      receivers: [mongodb]
      exporters: [otlphttp]

Sofort einsatzbereit

Dashboards, Alerts und SLOs, die bereitstehen, sobald die ersten Daten ankommen.

  • MongoDB-Übersicht: Operationen, Latenz, Verbindungen
  • Effizienz des WiredTiger Cache
  • Replica-Set-Zustand, Replication Lag und Oplog Window
  • Alert: Replication Lag über der Hälfte des Oplog Window
  • Alert: Collection Scans oder Latenz über der Baseline
Leitfaden

MongoDB-Monitoring: Darauf kommt es an

Warum MongoDB Monitoring wichtig ist

MongoDB ist beliebt, weil sich das Datenmodell ohne Migrationen anpassen lässt. Diese Flexibilität verlagert Verantwortung in die Anwendung: welche Felder indiziert sind, wie Dokumente wachsen, wie Queries aufgebaut sind. Performance-Probleme in MongoDB entstehen deshalb oft durch Codeänderungen und nicht durch die Datenbank selbst. MongoDB Monitoring muss Datenbankmetriken mit den Services und Queries verbinden, die die Last erzeugen.

Obseria erfasst Metriken mit dem mongodb-Receiver des OpenTelemetry Collectors, der serverStatus, dbStats und den Replica-Set-Status liest. Für MongoDB Atlas liest der mongodbatlas-Receiver Metriken aus der Atlas API. Datenbank-Spans Ihrer Services liefern den Query-Kontext.

Die MongoDB-Metriken, auf die es ankommt

Durchsatz und Latenz

mongodb.operation.count zeigt Operationen nach Typ, mongodb.operation.latency.time die Latenz für Reads, Writes und Commands. Steigt die Latenz nur bei Writes, deutet das auf Journaling, Write Concern der Replikation oder die Platte; steigt sie nur bei Reads, auf Indizes oder den Cache.

WiredTiger Cache

WiredTiger hält das Working Set im Cache. mongodb.cache.operations meldet Hits und Misses. Steigt der Anteil der Misses, gehen Lesezugriffe auf die Platte, und die Latenz folgt. Typische Ursachen sind wachsende Collections, neue Query-Muster auf kalten Daten oder ein zu kleiner Cache für die Instanz.

Verbindungen und Cursor

mongodb.connection.count unterscheidet aktuelle und verfügbare Verbindungen. Nähern sich die verfügbaren Verbindungen null, warten oder scheitern neue Clients. mongodb.cursor.timeout.count wächst, wenn Clients Cursor öffnen und nie vollständig lesen oder schließen.

Replikation

In einem Replica Set zeigt mongodb.replica_set.lag, wie weit jeder Secondary zurückliegt. mongodb.oplog.window ist die Historie, die das Oplog vorhält. Übersteigt der Lag jemals das Window, kann der Secondary nicht mehr aufholen und braucht einen vollständigen Resync.

Typische Probleme und wie Sie sie erkennen

  • Fehlende Indizes: mongodb.query_executor.collection_scan.count steigt, und gescannte Dokumente übersteigen die zurückgegebenen bei Weitem. Der Datenbank-Span im Trace zeigt Collection und Endpunkt.
  • Cache-Druck: Cache Misses wachsen zusammen mit Plattenzugriffen auf dem Host. Prüfen Sie Working Set und Indexgrößen.
  • Verbindungsstürme: Nach einem Deployment öffnen viele Anwendungs-Pods jeweils große Pools. Beobachten Sie aktuelle gegenüber verfügbaren Verbindungen.
  • Replication Lag: Schreibspitzen oder ein überlasteter Secondary. Alarmieren Sie, wenn der Lag einen Anteil des Oplog Window übersteigt, zum Beispiel die Hälfte.
  • Lock-Konflikte: Lange globale oder Collection-Lock-Zeiten bei Index-Builds oder großen Updates.

Best Practices für MongoDB Monitoring

  1. Nutzen Sie einen eigenen User mit der Rolle clusterMonitor statt eines Administratorkontos.
  2. Überwachen Sie jedes Mitglied des Replica Sets, nicht nur den Primary, und versehen Sie Metriken mit dem Mitgliedsstatus.
  3. Beobachten Sie das Oplog Window zu Spitzenzeiten, denn dann ist es am kürzesten.
  4. Aktivieren Sie den Database Profiler nur kurz für Analysen mit einem Slow-Schwellwert; für dauerhafte Sichtbarkeit sorgen Datenbank-Spans.
  5. Halten Sie Query-Strukturen sichtbar, Werte aber maskiert; die Obseria Pipeline entfernt sensible Felder aus Datenbank-Spans beim Ingest.

So unterstützt Obseria Ihr MongoDB Monitoring

Obseria speichert MongoDB-Metriken, Logs und Datenbank-Spans an einem Ort in Obseria Lake. TopoGraph zeigt, welche Services welchen MongoDB-Cluster und welche Collection nutzen, sodass ein Latenz-Alert sofort die betroffenen Anwendungen nennt. Obseria Intelligence korreliert Verlangsamungen mit Deployments, neuen Query-Mustern, Cache Misses und Host-Metriken und zeigt die wahrscheinliche Ursache mit einer Beweiskette. Dashboards für Operationen, Cache und Replica-Set-Zustand, Alerts und SLOs sind enthalten.

Ein guter Rollout beginnt mit dem Receiver auf jedem Replica Set, gefolgt von OpenTelemetry-Instrumentierung in den Services mit dem meisten Datenbank-Traffic. Mit OQL filtern Sie anschließend Datenbank-Spans nach Collection und Operation und vergleichen ihre p95-Latenz mit den Cache Misses im selben Zeitraum, ohne die Plattform zu verlassen.

Für sharded Cluster empfiehlt es sich, Metriken jedes Shards und der mongos-Router getrennt zu betrachten. Ungleich verteilte Operationen zwischen Shards deuten auf einen ungünstigen Shard Key hin, der sich mit Datenbank-Spans pro Collection gut belegen lässt. Ein Alert auf das Oplog Window pro Shard verhindert, dass ein einzelner Secondary unbemerkt den Anschluss verliert.

Häufige Fragen zum MongoDB-Monitoring

Ja. Der OpenTelemetry-mongodbatlas-Receiver liest Cluster-Metriken mit einem API Key aus der Atlas API; selbst betriebene Deployments nutzen den mongodb-Receiver.

Die eingebaute Rolle clusterMonitor genügt, um Serverstatus, Replica-Set-Status und Datenbankstatistiken zu lesen.

Aktivieren Sie mongodb.replica_set.lag und mongodb.oplog.window im Receiver und alarmieren Sie, wenn der Lag einen relevanten Anteil des Oplog Window erreicht.

Nutzen Sie Datenbank-Spans aus der OpenTelemetry-Instrumentierung Ihres MongoDB-Treibers, um langsame Operationen pro Collection und Endpunkt zu sehen, und beobachten Sie Collection Scans als Hinweis auf fehlende Indizes.

Der Receiver führt leichtgewichtige Status-Kommandos im eingestellten Intervall aus, typischerweise alle 10 bis 60 Sekunden. Für die meisten Deployments ist das vernachlässigbar.

Starten Sie heute mit dem MongoDB-Monitoring

Binden Sie MongoDB in Minuten per OpenTelemetry oder Obseria Agent an. 14 Tage kostenlos.