Heim  >  Artikel  >  Backend-Entwicklung  >  Automatisieren von MongoDB Atlas-Trigger-Log-Downloads über die GUI- und CLI-Einschränkungen hinaus

Automatisieren von MongoDB Atlas-Trigger-Log-Downloads über die GUI- und CLI-Einschränkungen hinaus

Susan Sarandon
Susan SarandonOriginal
2024-11-02 05:44:02247Durchsuche

Automating MongoDB Atlas Trigger Log Downloads Beyond the GUI and CLI Limitations

Ich bin kürzlich auf ein Szenario gestoßen, in dem ich umfangreiche Protokolle von MongoDB Atlas Triggers lokal herunterladen musste. Derzeit gibt es drei Möglichkeiten, Protokolle von Atlas herunterzuladen:

  1. Verwendung der GUI
  2. Verwenden der CLI
  3. Verwenden der App Services Admin API

Die GUI- und CLI-Optionen unterliegen jedoch Einschränkungen hinsichtlich der Menge der Protokolle, die heruntergeladen werden können, insbesondere einer Obergrenze von 10.000 Protokollen.

Einschränkungen der GUI und CLI für Protokoll-Downloads

Verwenden der GUI

Mit der GUI können Benutzer Protokolle nach Datum, Typ, Benutzer-ID oder Anforderungs-ID filtern. Beim Herunterladen ist die Grenze jedoch auf 10.000 Protokolle festgelegt.

Verwenden der CLI

Mit der CLI können wir einen Befehl wie diesen ausführen:

appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs

Allerdings gilt auch hier das gleiche Download-Limit von 10.000 Protokollen.

Eine Lösung: App Services Admin API mit Paginierung

Um diese Download-Einschränkungen zu überwinden, bietet die App Services Admin API eine Möglichkeit, auf Protokolle mit Paginierung zuzugreifen. Durch die Implementierung der Paginierung können Benutzer Protokolle abrufen, die über die standardmäßige 10-KB-Grenze hinausgehen.

Detaillierte Anweisungen zur Verwendung der Paginierung mit der API finden Sie in der Dokumentation von MongoDB: Get Paginated Logs.

Vorgeschlagene Lösung: Ein automatisiertes Skript für große Protokoll-Downloads

Um dies zu optimieren, habe ich ein Skript entwickelt, das automatisch Protokolle mithilfe der Paginierung abruft. Dieses Skript ist hier in einem öffentlichen Repository verfügbar: Atlas App Logs Aggregator.

Hauptmerkmale des Skripts

  • Automatischer Protokollabruf: Ruft Protokolle von MongoDB Atlas App Services mit Unterstützung für große Protokollsätze durch Paginierung ab.
  • Flexible Datumsbereichsfilterung: Ermöglicht optionale Datumsfilterung mithilfe der Parameter start_date und end_date.
  • ISO 8601-Validierung: Validieren Sie Daten, um sicherzustellen, dass sie dem ISO 8601-Format entsprechen.
  • Sichere Authentifizierung: Unterstützt die Authentifizierung mit öffentlichen und privaten API-Schlüsseln von MongoDB Atlas.
  • Optionale Benutzer-ID für Benutzer-ID-Filterprotokolle.
  • Optionale co_id für Korrelations-ID-Filterprotokolle.
  • Rufen Sie nur Fehlerprotokolle mit der Option „errors_only“ ab.
  • Filtern Sie Protokolle nach Schlüssel-Wert-Paaren mit der Option --filter.

Das Skript verwendet nur den GET-Endpunkt und fasst Protokolle in einer Datei zusammen, ohne Daten zu ändern.

Wie man es benutzt

Anforderungen

  • Python 3.6 oder höher.
  • Anforderungen der Bibliothek „requirements.txt“.

Installation

Erstellen Sie eine virtuelle Umgebung

appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs

Abhängigkeiten installieren

python3 -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`

Verwendung

Befehlszeilenargumente

  • project_id (erforderlich): Die Atlas-Projekt-ID (hexadezimale Zeichenfolge). app_id (erforderlich): Die App-ID (Zeichenfolge).
  • public_api_key (erforderlich): Der öffentliche Atlas-API-Schlüssel (Zeichenfolge).
  • private_api_key (erforderlich): Der private Atlas-API-Schlüssel (Zeichenfolge mit Bindestrichen).
  • --start_date (optional): Startdatum im ISO 8601-Format (JJJJ-MM-TTTHH:MM:SS.MMMZ).
  • --end_date (optional): Enddatum im ISO 8601-Format (JJJJ-MM-TTTHH:MM:SS.MMMZ).
  • --type (optional): Durch Kommas getrennte Liste der unterstützten Protokolltypen. Derzeit sind folgende Typen verfügbar: TRIGGER_FAILURE, TRIGGER_ERROR_HANDLER, DB_TRIGGER, AUTH_TRIGGER, SCHEDULED_TRIGGER, FUNCTION, SERVICE_FUNCTION, STREAM_FUNCTION, SERVICE_STREAM_FUNCTION, AUTH, WEBHOOK, ENDPOINT, PUSH, API, API_KEY, GRAPHQL, SYNC_CONNECTION_START, SYNC_CONNECTION_END , SYNC_SESSION_START, SYNC_SESSION_END, SYNC_CLIENT_WRITE, SYNC_ERROR , SYNC_OTHER, SCHEMA_ADDITIVE_CHANGE, SCHEMA_GENERATION, SCHEMA_VALIDATION, LOG_FORWARDER
  • --user_id (optional): Gibt nur Protokollmeldungen zurück, die mit der angegebenen Benutzer-ID verknüpft sind.
  • --co_id (optional): Gibt nur Protokollnachrichten zurück, die mit der angegebenen Anforderungskorrelations-ID verknüpft sind.
  • --filter (optional): Protokolle nach Schlüssel-Wert-Paaren filtern (z. B. --filter event_subscription_name=,function_name=).
  • --errors_only (optional): Gibt nur Fehlerprotokollmeldungen zurück.
  • --verbose (optional): Aktiviert ausführliche Protokollierungsinformationen.

Beispiel

pip install -r requirements.txt

Mit optionalen Parametern

python main.py <project_id> <app_id> <public_api_key> <private_api_key> --start_date 2024-10-05T14:30:00.000Z --end_date 2024-10-06T14:30:00.000Z --type TRIGGER_FAILURE,SCHEMA_GENERATION

Wenn start_date und end_date nicht angegeben werden, setzt das Skript standardmäßig start_date auf die letzten 24 Stunden ab der aktuellen Zeit.

 Protokolle filtern

Mit der Option --filter können Sie Protokolle nach Schlüssel-Wert-Paaren filtern. Diese Option akzeptiert mehrere durch Leerzeichen getrennte Schlüssel-Wert-Paare. Jedes Schlüssel-Wert-Paar sollte das Format Schlüssel=Wert.

haben

Das Schlüssel-Wert-Paar muss aus den vom Endpunkt zurückgegebenen Werten bestehen. Auf diese Weise werden sie zum Filtern verwendet und nur diejenigen behalten, die übereinstimmen. Für einen „Typ“: „SCHEDULED_TRIGGER“ lauten die Schlüsselwerte der Antwort beispielsweise wie folgt:

python main.py <project_id> <app_id> <public_api_key> <private_api_key> --start_date 2024-10-05T14:30:00.000Z --type TRIGGER_FAILURE,SCHEMA_GENERATION --user_id 671d2e2010733ecbaa2bab8f --filter event_subscription_name=getUnpausedClustersMetrics

Wir können alles davon in der Option --filter verwenden (z. B. --filter event_subscription_name=getUnpausedClustersMetrics)

Protokollierung

Das Skript unterstützt die Protokollierung sowohl in der Konsole als auch in einer Protokolldatei. Standardmäßig werden Protokolldateien im Protokollordner gespeichert. Der Name der Protokolldatei enthält einen Zeitstempel, um die Eindeutigkeit jeder Ausführung sicherzustellen.

--verbose: Wenn dieses Flag verwendet wird, wird die Protokollebene auf DEBUG gesetzt, wodurch detaillierte Protokollinformationen bereitgestellt werden. Ohne dieses Flag wird die Protokollebene auf INFO gesetzt.

Speicherort der Protokolldatei

Protokolldateien werden im Protokollordner gespeichert. Jede Protokolldatei wird mit einem Zeitstempel benannt, um sicherzustellen, dass Protokolle aus verschiedenen Läufen sich nicht gegenseitig überschreiben.

Beispielname einer Protokolldatei

appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs

Vorteile

  • Automatischer Protokollabruf: Rufen Sie Protokolle einfach von MongoDB Atlas App Services ab, ohne manuellen Eingriff.
  • Datumsbereichsfilterung: Filtern Sie Protokolle nach Datumsbereich, um sich auf bestimmte Zeiträume zu konzentrieren.
  • Paginierungsunterstützung: Behandeln Sie große Protokollmengen effizient mithilfe der Paginierung.
  • Validierung: Stellen Sie sicher, dass Datumseingaben im richtigen Format vorliegen, um Fehler zu vermeiden.

HAFTUNGSAUSSCHLUSS

Bitte beachten Sie: Dieses Repo wird „WIE BESEHEN“ zur Nutzung freigegeben, ohne jegliche Garantien jeglicher Art, einschließlich, aber nicht beschränkt auf deren Installation, Nutzung oder Leistung. Wir lehnen jegliche ausdrückliche oder stillschweigende Gewährleistung ab, einschließlich, aber nicht beschränkt auf die Gewährleistung der Nichtverletzung, der Marktgängigkeit und/oder der Eignung für einen bestimmten Zweck. Wir übernehmen keine Gewähr dafür, dass die Technologie Ihren Anforderungen entspricht, dass der Betrieb ununterbrochen oder fehlerfrei ist oder dass etwaige Fehler behoben werden.

Jede Nutzung dieser Skripte und Tools erfolgt auf eigenes Risiko. Es gibt keine Garantie dafür, dass sie gründlichen Tests in einer vergleichbaren Umgebung unterzogen wurden, und wir haften nicht für Schäden oder Datenverluste, die durch ihre Verwendung entstehen.

Sie sind dafür verantwortlich, alle Skripte, die Sie ausführen, sorgfältig zu überprüfen und zu testen, bevor Sie sie in einer Nicht-Testumgebung verwenden.

Das obige ist der detaillierte Inhalt vonAutomatisieren von MongoDB Atlas-Trigger-Log-Downloads über die GUI- und CLI-Einschränkungen hinaus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn