我最近遇到一個場景,需要從本地 MongoDB Atlas 觸發器下載大量日誌。目前Atlas下載日誌的方式有3種:
- 使用 GUI
- 使用 CLI
- 使用應用程式服務管理 API
但是,GUI 和 CLI 選項對於可下載的日誌量有限制,特別是 10,000 條日誌的上限。
GUI 和 CLI 對日誌下載的限制
使用 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
為了克服這些下載限制,應用程式服務管理 API 提供了一種透過分頁存取日誌的方法。透過實作分頁,使用者可以獲得超出預設 10K 限制的日誌。
有關透過 API 使用分頁的詳細說明可以在 MongoDB 文件中找到:取得分頁日誌。
建議的解決方案:用於大型日誌下載的自動化腳本
為了簡化這個過程,我開發了一個使用分頁自動取得日誌的腳本。該腳本可在此處的公共儲存庫中找到:Atlas App Logs Aggregator。
腳本的主要特點
- 自動日誌取得:從 MongoDB Atlas 應用服務取得日誌,並透過分頁支援大型日誌集。
- 彈性的日期範圍過濾:允許使用 start_date 和 end_date 參數進行可選的日期過濾。
- ISO 8601 驗證:驗證日期以確保它們遵循 ISO 8601 格式。
- 安全性驗證:支援使用 MongoDB Atlas 公用和私有 API 金鑰進行驗證。
- 可選的user_id,用於使用者ID過濾日誌。
- 可選的co_id,用於相關ID過濾日誌。
- 使用errors_only選項僅取得錯誤日誌。
- 使用 --filter 選項按鍵值對過濾日誌。
該腳本僅使用 GET 端點並將日誌聚合到檔案中,而不修改任何資料。
如何使用
要求
- Python 3.6 或更高版本。
- requirements.txt 函式庫相依性。
安裝
建立虛擬環境
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`
用法
命令列參數
- project_id (必填):Atlas 專案 ID(十六進位字串)。 app_id (必填):應用程式 ID(字串)。
- public_api_key(必需):Atlas 公用 API 金鑰(字串)。
- private_api_key(必需):Atlas 私有 API 金鑰(帶連字符的字串)。
- --start_date(可選):ISO 8601 格式的開始日期 (YYYY-MM-DDTHH:MM:SS.MMMZ)。
- --end_date(可選):ISO 8601 格式的結束日期 (YYYY-MM-DDTHH:MM:SS.MMMZ)。
- --type(可選):支援的日誌類型的逗號分隔清單。目前,可用的類型有:TRIGGER_FAILURE、TRIGGER_ERROR_HANDLER、DB_TRIGGER、AUTH_TRIGGER、SCHEDULED_TRIGGER、FUNCTION、SERVICE_FUNCTION、STREAM_FUNCTION、SERVICE_STREAM_FUNCTION、AUTH、WEBH.PfTH、WEJID、XXPSY_XPDAL、UINT_RFU4_UUS4U樣SYNC_SESSION_START、SYNC_SESSION_END、SYNC_CLIENT_WRITE、SYNC_ERROR 、SYNC_OTHER 、SCHEMA_ADDITIVE_CHANGE、SCHEMA_GENERATION、SCHEMA_VALIDATION、LOG_FORWARDER
- --user_id(可選):僅傳回與給定 user_id 關聯的日誌訊息。
- --co_id(可選):僅傳回與給定請求相關 ID 關聯的日誌訊息。
-
--filter(可選):按鍵值對過濾日誌(例如,--filter event_subscription_name=
,function_name= )。 - --errors_only(可選):僅傳回錯誤日誌訊息。
- --verbose (可選):啟用詳細日誌資訊。
例子
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 </private_api_key></public_api_key></app_id></project_id>
如果未提供 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 </private_api_key></public_api_key></app_id></project_id>
我們可以在 --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
好處
- 自動日誌檢索:輕鬆從 MongoDB Atlas 應用服務取得日誌,無需手動幹預。
- 日期範圍過濾:按日期範圍過濾日誌以關注特定時期。
- 分頁支援:使用分頁有效處理大量日誌。
- 驗證:確保日期輸入的格式正確,以避免錯誤。
免責聲明
請注意:此儲存庫「按原樣」發布,不提供任何形式的保證,包括但不限於其安裝、使用或效能。我們不承擔任何及所有明示或暗示的保證,包括但不限於對非侵權、適銷性和/或特定用途適用性的任何保證。我們不保證該技術能夠滿足您的要求,不保證其運作不會中斷或沒有錯誤,也不保證任何錯誤都會被修正。
使用這些腳本和工具的任何風險均由您自行承擔。無法保證它們已在類似環境中經過徹底測試,並且我們對其使用過程中發生的任何損壞或資料遺失不承擔任何責任。
您有責任在任何非測試環境中使用之前徹底檢查和測試您正在執行的任何腳本。
以上是超越 GUI 和 CLI 限制自動執行 MongoDB Atlas 觸發器日誌下載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本教程演示如何使用Python處理Zipf定律這一統計概念,並展示Python在處理該定律時讀取和排序大型文本文件的效率。 您可能想知道Zipf分佈這個術語是什麼意思。要理解這個術語,我們首先需要定義Zipf定律。別擔心,我會盡量簡化說明。 Zipf定律 Zipf定律簡單來說就是:在一個大型自然語言語料庫中,最頻繁出現的詞的出現頻率大約是第二頻繁詞的兩倍,是第三頻繁詞的三倍,是第四頻繁詞的四倍,以此類推。 讓我們來看一個例子。如果您查看美國英語的Brown語料庫,您會注意到最頻繁出現的詞是“th

本文解釋瞭如何使用美麗的湯庫來解析html。 它詳細介紹了常見方法,例如find(),find_all(),select()和get_text(),以用於數據提取,處理不同的HTML結構和錯誤以及替代方案(SEL)

處理嘈雜的圖像是一個常見的問題,尤其是手機或低分辨率攝像頭照片。 本教程使用OpenCV探索Python中的圖像過濾技術來解決此問題。 圖像過濾:功能強大的工具圖像過濾器

PDF 文件因其跨平台兼容性而廣受歡迎,內容和佈局在不同操作系統、閱讀設備和軟件上保持一致。然而,與 Python 處理純文本文件不同,PDF 文件是二進製文件,結構更複雜,包含字體、顏色和圖像等元素。 幸運的是,借助 Python 的外部模塊,處理 PDF 文件並非難事。本文將使用 PyPDF2 模塊演示如何打開 PDF 文件、打印頁面和提取文本。關於 PDF 文件的創建和編輯,請參考我的另一篇教程。 準備工作 核心在於使用外部模塊 PyPDF2。首先,使用 pip 安裝它: pip 是 P

本教程演示瞭如何利用Redis緩存以提高Python應用程序的性能,特別是在Django框架內。 我們將介紹REDIS安裝,Django配置和性能比較,以突出顯示BENE

本文比較了Tensorflow和Pytorch的深度學習。 它詳細介紹了所涉及的步驟:數據準備,模型構建,培訓,評估和部署。 框架之間的關鍵差異,特別是關於計算刻度的

Python是數據科學和處理的最愛,為高性能計算提供了豐富的生態系統。但是,Python中的並行編程提出了獨特的挑戰。本教程探討了這些挑戰,重點是全球解釋

本教程演示了在Python 3中創建自定義管道數據結構,利用類和操作員超載以增強功能。 管道的靈活性在於它能夠將一系列函數應用於數據集的能力,GE


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),