IBM Cloud spezifische Tools und Diagnosebefehle für die Fehlersuche und -behebung

Sie können verschiedene Tools und Funktionen von IBM Cloud verwenden, um die Fehlersuche zu unterstützen.

Verwendung von IBM Cloud Monitoring (Sysdig)

MongoDB integriert sich mit IBM Cloud Monitoring powered by Sysdig für eine umfassende Beobachtungsmöglichkeit.

Zugriff auf Überwachungs-Dashboards

  1. Navigieren Sie in der Konsole IBM Cloud zu Ihrer Bereitstellung MongoDB.
  2. Klicken Sie in der linken Navigation auf Überwachung.
  3. Klicken Sie auf Überwachung starten, um das Sysdig-Dashboard zu öffnen.

Zu verfolgende Schlüsselmetriken:

  • Plattform-Metriken:

    • CPU-Auslastung- Ziel: < 75% anhaltend
    • Festplattenauslastung- Ziel: < 80%
    • Festplatten-IOPS- Überwachung auf Sättigung
    • Netzdurchsatz- Ermittlung von Bandbreitenbeschränkungen
  • MongoDB-specific metriken:

    • Operationen pro Sekunde- Verfolgung von Arbeitslastmustern
    • Aktive Verbindungen- Überwachung anhand von Plangrenzen
    • Replikationsverzögerung- Ziel: < 1 Sekunde
    • Abfrageausführungszeit- Identifizierung langsamer Abfragen
    • Cache-Trefferrate- Ziel: > 95%

Alerts einrichten

Erstellen Sie Warnmeldungen für kritische Schwellenwerte:

Alert: High CPU Usage
Condition: CPU > 80% for 10 minutes
Action: Notify operations team
Alert: Replication Lag
Condition: Replication lag > 5 seconds
Action: Page on-call engineer
Alert: Disk Space
Condition: Disk usage > 85%
Action: Trigger scaling workflow

Erstellen angepasster Dashboards

  1. Klicken Sie in Sysdig auf Dashboards > Dashboard erstellen.
  2. Fügen Sie Panels für wichtige Metriken hinzu.
  3. Verwenden Sie Filter, um sich auf Ihren MongoDB Einsatz zu konzentrieren.
  4. Speichern und mit Ihrem Team teilen.

Beispiel für ein Dashboard-Layout

  • Zeile 1: CPU-, Speicher- und Festplattenauslastung
  • Zeile 2: Vorgänge pro Sekunde, aktive Verbindungen
  • Zeile 3: Replikationsverzögerung, Abfrageleistung
  • Zeile 4: Cache-Statistiken, Sperrkonflikte

Historische Analyse

  • Verwenden Sie den Zeitbereichselektor für historische Daten
  • Vergleich der aktuellen Messwerte mit der Basislinie
  • Erkennen von Trends und Mustern
  • Korrelieren Sie Ereignisse mit Leistungsänderungen

Empfohlene Maßnahmen:

  • Richten Sie Warnmeldungen ein, bevor Probleme auftreten.
  • Überprüfen Sie die Dashboards täglich.
  • Festlegung von Basiskennzahlen.
  • Dokumentieren Sie normale Muster im Vergleich zu abnormalen Mustern.
  • Verwenden Sie Metriken für die Kapazitätsplanung.

IBM Cloud Activity Tracker integration

IBM Cloud Activity Tracker hilft Ihnen bei der Verfolgung von Konfigurationsänderungen und Verwaltungsmaßnahmen, die sich auf die Leistung auswirken können.

Zugriff auf Activity Tracker

  1. Navigieren Sie zu Observability > Activity Tracker in der Konsole IBM Cloud.
  2. Wählen Sie Ihre Region aus.
  3. Filtern Sie Ereignisse nach Ihrer MongoDB Instanz.

Zu überwachende Schlüsselereignisse:

  • Änderungen der Konfiguration:

    • Skalierungsvorgänge (CPU, Speicher, Festplatte)
    • Änderungen der Sicherungskonfiguration
    • Aktualisierungen der Netzwerkkonfiguration
    • Änderungen des Benutzerzugangs
  • Leistungseinschränkende Ereignisse

    • Neustarts der Datenbank
    • Failover-Ereignisse
    • Wartungsoperationen
    • Erstellung und Löschung von Indizes

Korrelieren von Ereignissen mit Leistungsproblemen

  1. Beachten Sie den Zeitstempel der Leistungsverschlechterung.
  2. Suchen Sie auf Activity Tracker nach Veranstaltungen zu dieser Zeit.
  3. Suchen Sie nach Konfigurationsänderungen oder administrativen Maßnahmen.
  4. Korrelieren Sie mit Überwachungsmetriken.

Beispiel Ereignisanalyse

Event: Database scaled from 2GB to 4GB RAM
Time: 2024-01-15 14:30:00 UTC
Impact: Temporary connection disruption (30 seconds)
Result: Improved performance after scaling

Prüfpfad für die Einhaltung der Vorschriften

  • Verfolgen, wer wann Änderungen vorgenommen hat
  • Aufrechterhaltung der Einhaltung von Sicherheitsrichtlinien
  • Zugriffsmuster überprüfen
  • Identifizieren Sie nicht autorisierte Änderungen

Empfohlene Maßnahmen:

  • Überprüfen Sie regelmäßig die Protokolle von Activity Tracker.
  • Richten Sie Warnmeldungen für kritische Ereignisse ein.
  • Dokumentieren Sie die Verfahren für das Änderungsmanagement.
  • Korrelieren Sie Ereignisse mit Leistungsmetriken.
  • Verwendung für die Analyse nach einem Vorfall.

IBM Cloud skalierungsmöglichkeiten

Databases for MongoDB bietet flexible Skalierungsoptionen, um Ihren Leistungsanforderungen gerecht zu werden.

Vertikale Skalierung (Rechenleistung und Speicher)

Skalierung der CPU- und Speicherressourcen zur Bewältigung einer erhöhten Arbeitslast.

  • Verwenden Sie die Konsole IBM Cloud:

    1. Navigieren Sie zu Ihrer MongoDB Bereitstellung.
    2. Klicken Sie in der linken Navigation auf Ressourcen.
    3. Passen Sie die Schieberegler für Speicher und CPU an.
    4. Überprüfung der Auswirkungen auf die Kosten.
    5. Klicken Sie auf Skalieren.
  • Verwendung der IBM Cloud CLI:

    # Scale memory to 8GB and CPU to 4 cores
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --memory 8192 \
      --cpu-allocation 4
    

Hinweise

  • Kurze Verbindungsunterbrechung während der Skalierung.
  • Planen Sie 5-10 Minuten Auszeit ein.
  • Proaktive Skalierung vor der Sättigung.
  • Überwachen Sie die Metriken nach der Skalierung.

Horizontale Skalierung (Replikatgruppenmitglieder)

Hinzufügen von Replikatgruppenmitgliedern für Leseskalierung und hohe Verfügbarkeit.

  • Verwenden Sie die Konsole IBM Cloud:

    1. Navigieren Sie zu Ressourcen.
    2. Schieberegler Mitglieder anpassen.
    3. Konfiguration überprüfen.
    4. Klicken Sie auf Skalieren.
  • Verwendung der IBM Cloud CLI:

    # Add a replica set member
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --members 4
    

Vorteile

  • Verteilen Sie die Leselast auf die Sekundärleitungen
  • Verbesserte Fehlertoleranz
  • Bessere geografische Verteilung
  • Keine Ausfallzeit für das Hinzufügen von Mitgliedern

Skalierung der Speicherung

Erhöhen Sie den Speicherplatz und die IOPS für eine bessere Leistung.

  • Verwenden Sie die Konsole IBM Cloud:

    1. Navigieren Sie zu Ressourcen.
    2. Schieberegler Diskette einstellen.
    3. Überprüfen Sie die IOPS-Zuweisung.
    4. Klicken Sie auf Skalieren.
  • Verwendung der IBM Cloud CLI:

    # Scale disk to 100GB
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --disk-allocation 102400
    

Wichtige Informationen:

  • Speicherplatz kann nur vergrößert, nicht verkleinert werden
  • IOPS-Skala mit Festplattengröße
  • Keine Ausfallzeiten für Speicherskalierung
  • Trends der Festplattennutzung überwachen

Bewährte Verfahren zur Skalierung

Szenario Empfohlene Aktion
Hohe CPU (>80%) CPU-Kerne skalieren

| Festplattenlatenz | Festplattengröße für mehr IOPS erhöhen | | Verbindungsgrenzen | Skalierung auf höhere Ebene | | Leseschwere Arbeitslast | Replikate hinzufügen | | Schreiblast | Skalierung von CPU und Speicher |

Kostenoptimierung

  • Die richtige Größe für Ihren Einsatz.
  • Nutzen Sie die Überwachung, um den tatsächlichen Bedarf zu ermitteln.
  • In verkehrsarmen Zeiten wird die Zahl der Nutzer reduziert (sofern unterstützt).
  • Berücksichtigen Sie reservierte Kapazitäten für vorhersehbare Arbeitslasten.

Automation

# Example: Auto-scale based on CPU threshold
if [ $(ibmcloud cdb deployment-metrics <deployment-id> --metric cpu) -gt 80 ]; then
  ibmcloud cdb deployment-groups-set <deployment-id> member --cpu-allocation 6
fi

IBM Cloud CLI und API für die Diagnose

Verwenden Sie IBM Cloud CLI und API für die automatische Diagnose und Überwachung.

Installation von IBM Cloud CLI

# Install IBM Cloud CLI
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh

# Install databases plugin
ibmcloud plugin install cloud-databases

Wichtige Diagnosebefehle

  • Erhalten Sie Informationen zur Bereitstellung:

    # List all MongoDB deployments
    ibmcloud cdb deployments --type mongodb
    
    # Get specific deployment details
    ibmcloud cdb deployment <deployment-id>
    
  • Prüfen Sie den Einsatzstatus:

    # Get deployment status
    ibmcloud cdb deployment-status <deployment-id>
    
    # Get connection strings
    ibmcloud cdb deployment-connections <deployment-id>
    
  • Metriken überwachen:

    # Get CPU metrics
    ibmcloud cdb deployment-metrics <deployment-id> --metric cpu
    
    # Get memory metrics
    ibmcloud cdb deployment-metrics <deployment-id> --metric memory
    
    # Get disk metrics
    ibmcloud cdb deployment-metrics <deployment-id> --metric disk
    
  • Skalierungsoperationen:

    # Scale memory
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --memory 16384
    
    # Scale CPU
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --cpu-allocation 8
    
    # Scale disk
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --disk-allocation 204800
    
  • Sicherungsvorgänge:

    # List backups
    ibmcloud cdb backups <deployment-id>
    
    # Get backup information
    ibmcloud cdb backup <backup-id>
    

Verwendung der IBM Cloud API

  • Authentifizierung:

    # Get IAM token
    export IAM_TOKEN=$(ibmcloud iam oauth-tokens --output json | jq -r '.iam_token')
    
  • Abrufen von Einsatzmetriken über die API:

    # Get metrics
    curl -X GET \
      "https://api.{region}.databases.cloud.ibm.com/v5/deployments/{deployment-id}/metrics" \
      -H "Authorization: ${IAM_TOKEN}"
    
  • Skalierung der Bereitstellung über die API:

    # Scale resources
    curl -X PATCH \
      "https://api.{region}.databases.cloud.ibm.com/v5/deployments/{deployment-id}/groups/member" \
      -H "Authorization: ${IAM_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "memory": {
          "allocation_mb": 16384
        },
        "cpu": {
          "allocation_count": 8
        }
      }'
    
  • Beispiel für ein Diagnoseskript:

    #!/bin/bash
    # MongoDB Performance Check Script
    
    DEPLOYMENT_ID="your-deployment-id"
    
    echo "=== MongoDB Performance Diagnostics ==="
    echo ""
    
    # Check CPU
    CPU=$(ibmcloud cdb deployment-metrics $DEPLOYMENT_ID --metric cpu --output json | jq -r '.metrics[0].value')
    echo "CPU Usage: ${CPU}%"
    if [ $(echo "$CPU > 80" | bc) -eq 1 ]; then
      echo "⚠️  WARNING: High CPU usage detected"
    fi
    
    # Check Memory
    MEMORY=$(ibmcloud cdb deployment-metrics $DEPLOYMENT_ID --metric memory --output json | jq -r '.metrics[0].value')
    echo "Memory Usage: ${MEMORY}%"
    if [ $(echo "$MEMORY > 80" | bc) -eq 1 ]; then
      echo "⚠️  WARNING: High memory usage detected"
    fi
    
    # Check Disk
    DISK=$(ibmcloud cdb deployment-metrics $DEPLOYMENT_ID --metric disk --output json | jq -r '.metrics[0].value')
    echo "Disk Usage: ${DISK}%"
    if [ $(echo "$DISK > 80" | bc) -eq 1 ]; then
      echo "⚠️  WARNING: High disk usage detected"
    fi
    
    # Check Status
    STATUS=$(ibmcloud cdb deployment-status $DEPLOYMENT_ID --output json | jq -r '.status')
    echo "Deployment Status: ${STATUS}"
    
    echo ""
    echo "=== Diagnostics Complete ==="
    
  • Empfehlungen zur Automatisierung

    • Planen Sie regelmäßige Gesundheitschecks.
    • Integration in Überwachungssysteme.
    • Automatisieren Sie die Skalierung anhand von Schwellenwerten.
    • Erstellen Sie Warnmeldungen für kritische Metriken.
    • Protokollieren Sie alle Vorgänge für den Audit Trail.

IBM Cloud netzoptimierung

Die Netzwerkkonfiguration hat erhebliche Auswirkungen auf die Leistung von MongoDB, insbesondere bei verteilten Anwendungen. Vergleichen Sie private Endpunkte mit öffentlichen Endpunkten:

Private Endpunkte (empfohlen)

Die Vorteile:

  • Geringere Latenzzeit
  • Erweiterte Sicherheit
  • Keine Gebühren für die Internetnutzung
  • Bessere Leistung für IBM Cloud Arbeitslasten

Einrichten:

  1. Navigieren Sie zu Einstellungen > Endpunkte.
  2. Aktivieren Sie den privaten Endpunkt.
  3. Aktualisieren Sie Verbindungszeichenfolgen in Anwendungen.

Beispiel für eine Verbindungszeichenfolge:

mongodb://user:pass@host.private.databases.appdomain.cloud:port/database?authSource=admin&replicaSet=replset

Öffentliche Endpunkte

Anwendungsfälle:

  • Externe Anwendungen
  • Entwicklung und Tests
  • Hybride Cloud-Szenarien

Sicherheitsaspekte:

  • Verwenden Sie die IP-Zulassungsliste.
  • TLS / SSL durchsetzen.
  • Wechseln Sie die Ausweise regelmäßig.

Serviceendpunkte

IBM Cloud service-Endpunkte bieten optimierte Konnektivität innerhalb von IBM Cloud.

Vorteile

  • Geringere Latenzzeit
  • Kein öffentlicher Internetzugang
  • Verbesserte Sicherheitslage
  • Kosteneinsparungen bei der Bandbreite

Konfiguration

# Enable service endpoint
ibmcloud cdb deployment-service-endpoint-enable <deployment-id>

Überlegungen zum Einsatz in mehreren Zonen

Databases for MongoDB kann sich über mehrere Verfügbarkeitszonen erstrecken.

Bewährte Verfahren

  • Stellen Sie Anwendungen in derselben Region bereit.
  • Verwenden Sie die Leseeinstellungen, um die Latenzzeit zu minimieren.
  • Ziehen Sie nearest als Lesepräferenz für Multizonen-Anwendungen in Betracht.
  • Überwachung der Replikationsverzögerung zwischen Zonen.

Fehlerbehebung bei Netzwerk-Latenzzeiten

  • Messung der Latenzzeit der Anwendung

    # Test connection latency
    time mongo "mongodb://host:port/database" --eval "db.runCommand({ping: 1})"
    
  • Überprüfung von IBM Cloud shell

    # Ping test (if ICMP allowed)
    ping -c 10 your-mongodb-host.databases.appdomain.cloud
    
    # TCP connection test
    nc -zv your-mongodb-host.databases.appdomain.cloud 27017
    

MongoDB verbindungsdiagnose

// Check network latency
db.runCommand({ ping: 1 })

// Check connection pool stats
db.serverStatus().connections

Geografische Verteilung

Für global verteilte Anwendungen:

Strategien

  • Einzelne Region: Geringste Latenz, einziger Fehlerpunkt
  • Mehrere Regionen mit Lese-Replikaten: Leseskalierung, eventuelle Konsistenz
  • Regionsübergreifende Replikation: Disaster Recovery, höhere Latenz

Empfehlungen

  • Platzieren Sie die Datenbank in der Nähe der Hauptnutzerbasis.
  • Verwenden Sie CDN für statische Inhalte.
  • Implementieren Sie Caching auf Anwendungsebene.
  • Beachten Sie die Anforderungen an die Datenresidenz.

Bandbreitenoptimierung

  • Verwenden Sie Projektionen, um die Datenübertragung zu begrenzen.
  • Implementierung einer Paginierung für große Ergebnismengen.
  • Daten auf Anwendungsebene komprimieren.
  • Nutzen Sie Massenoperationen, um Hin- und Rückfahrten zu reduzieren.

Bewährte Praktiken für das Pooling von Verbindungen

// Node.js example
const client = new MongoClient(uri, {
  maxPoolSize: 50,
  minPoolSize: 10,
  maxIdleTimeMS: 30000,
  serverSelectionTimeoutMS: 5000,
  socketTimeoutMS: 45000
});