首页 后端开发 Python教程 超越 GUI 和 CLI 限制自动执行 MongoDB Atlas 触发器日志下载

超越 GUI 和 CLI 限制自动执行 MongoDB Atlas 触发器日志下载

Nov 02, 2024 am 05:44 AM

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

我最近遇到一个场景,需要从本地 MongoDB Atlas 触发器下载大量日志。目前从Atlas下载日志的方式有3种:

  1. 使用 GUI
  2. 使用 CLI
  3. 使用应用服务管理 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、WEBHOOK、ENDPOINT、PUSH、API、API_KEY、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(可选):仅返回与给定 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
登录后复制

如果未提供 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
登录后复制
登录后复制
登录后复制

好处

  • 自动日志检索:轻松从 MongoDB Atlas 应用服务获取日志,无需手动干预。
  • 日期范围过滤:按日期范围过滤日志以关注特定时期。
  • 分页支持:使用分页有效处理大量日志。
  • 验证:确保日期输入的格式正确,以避免错误。

免责声明

请注意:此存储库“按原样”发布,不提供任何形式的保证,包括但不限于其安装、使用或性能。我们不承担任何及所有明示或暗示的保证,包括但不限于对非侵权、适销性和/或特定用途适用性的任何保证。我们不保证该技术能够满足您的要求,不保证其运行不会中断或没有错误,也不保证任何错误都会得到纠正。

使用这些脚本和工具的任何风险均由您自行承担。无法保证它们已在类似环境中经过彻底测试,并且我们对其使用过程中发生的任何损坏或数据丢失不承担任何责任。

您有责任在任何非测试环境中使用之前彻底检查和测试您运行的任何脚本。

以上是超越 GUI 和 CLI 限制自动执行 MongoDB Atlas 触发器日志下载的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
Python:游戏,Guis等 Python:游戏,Guis等 Apr 13, 2025 am 12:14 AM

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

Python和时间:充分利用您的学习时间 Python和时间:充分利用您的学习时间 Apr 14, 2025 am 12:02 AM

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

Python标准库的哪一部分是:列表或数组? Python标准库的哪一部分是:列表或数组? Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

Python:自动化,脚本和任务管理 Python:自动化,脚本和任务管理 Apr 16, 2025 am 12:14 AM

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

学习Python:2小时的每日学习是否足够? 学习Python:2小时的每日学习是否足够? Apr 18, 2025 am 12:22 AM

每天学习Python两个小时是否足够?这取决于你的目标和学习方法。1)制定清晰的学习计划,2)选择合适的学习资源和方法,3)动手实践和复习巩固,可以在这段时间内逐步掌握Python的基本知识和高级功能。

Python vs. C:了解关键差异 Python vs. C:了解关键差异 Apr 21, 2025 am 12:18 AM

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

See all articles