最近、MongoDB Atlas Triggers からローカルに大量のログをダウンロードする必要があるシナリオに遭遇しました。現在、Atlas からログをダウンロードするには 3 つの方法があります:
ただし、GUI および CLI オプションには、ダウンロードできるログの量に関する制限があり、特に 10,000 ログの上限があります。
GUI の使用
GUI を使用すると、ユーザーは日付、タイプ、ユーザー ID、またはリクエスト ID でログをフィルターできますが、ダウンロードに関しては制限が 10,000 ログに設定されます。
CLI の使用
CLI を使用すると、次のようなコマンドを実行できます。
appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
ただし、これにも同じ 10,000 ログのダウンロード制限があります。
これらのダウンロード制限を克服するために、App Services Admin API はページネーションを使用してログにアクセスする方法を提供します。ページネーションを実装すると、ユーザーはデフォルトの 10K 制限を超えてログをフェッチできるようになります。
API でページネーションを使用する詳細な手順については、MongoDB のドキュメント「ページネーションされたログの取得」を参照してください。
これを合理化するために、ページネーションを使用してログを自動的に取得するスクリプトを開発しました。このスクリプトは、Atlas App Logs Aggregator のパブリック リポジトリで入手できます。
スクリプトは GET エンドポイントのみを使用し、データを変更せずにログをファイルに集約します。
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
オプションのパラメータあり
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
start_date と end_date が指定されていない場合、スクリプトはデフォルトで start_date を現在時刻から過去 24 時間に設定します。
--filter オプションを使用すると、キーと値のペアでログをフィルタリングできます。このオプションは、スペースで区切られた複数のキーと値のペアを受け入れます。各キーと値のペアは key=value の形式である必要があります。
キーと値のペアは、エンドポイントによって返される値である必要があります。このようにして、それらを使用してフィルタリングし、一致するものだけを保持します。たとえば、「type」:「SCHEDULED_TRIGGER」の場合、応答の Key-Value は次のようになります:
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
これは --filter オプションで使用できます (例: --filterevent_subscription_name=getUnpausedClustersMetrics)
スクリプトは、コンソールとログ ファイルの両方へのログ記録をサポートしています。デフォルトでは、ログ ファイルはログ フォルダーに保存されます。ログ ファイル名には、各実行の一意性を確保するためのタイムスタンプが含まれています。
--verbose: このフラグを使用すると、ログ レベルが DEBUG に設定され、詳細なログ情報が提供されます。このフラグがない場合、ログ レベルは INFO に設定されます。
ログ ファイルは logs フォルダーに保存されます。各ログ ファイルには、異なる実行のログが相互に上書きされないように、タイムスタンプが付けられた名前が付けられます。
appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
注意してください: このリポジトリは、インストール、使用、またはパフォーマンスを含むがこれらに限定されない、いかなる種類の保証もなく、「現状のまま」使用するためにリリースされています。当社は、明示的または黙示的を問わず、非侵害、商品性、および/または特定の目的への適合性の保証を含むがこれらに限定されない、あらゆる保証を否認します。当社は、テクノロジーがお客様の要件を満たすこと、その操作が中断されないことやエラーがないこと、またはエラーが修正されることを保証しません。
これらのスクリプトとツールの使用は自己責任で行ってください。これらが同等の環境で徹底したテストを経ているという保証はなく、その使用によって生じた損害やデータ損失については責任を負いません。
実行するスクリプトは、テスト以外の環境で使用する前に徹底的に確認してテストする責任があります。
以上がGUI および CLI の制限を超えた MongoDB Atlas トリガー ログ ダウンロードの自動化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。