我最近遇到一個場景,需要從本地 MongoDB Atlas 觸發器下載大量日誌。目前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 個日誌。
為了克服這些下載限制,應用程式服務管理 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”,響應鍵值將類似於:
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 選項中使用其中任何一個(例如,--filter event_subscription_name=getUnpausedClustersMetrics)
該腳本支援記錄到控制台和日誌檔案。預設情況下,日誌檔案儲存在logs資料夾中。日誌檔案名稱包含時間戳,以確保每次運行的唯一性。
--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中文網其他相關文章!