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:
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.
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.
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.
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.
Das Skript verwendet nur den GET-Endpunkt und fasst Protokolle in einer Datei zusammen, ohne Daten zu ändern.
appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
python3 -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
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.
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.
habenDas 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)
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.
Protokolldateien werden im Protokollordner gespeichert. Jede Protokolldatei wird mit einem Zeitstempel benannt, um sicherzustellen, dass Protokolle aus verschiedenen Läufen sich nicht gegenseitig überschreiben.
appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
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!