超越 GUI 和 CLI 限制自动执行 MongoDB Atlas 触发器日志下载
我最近遇到一个场景,需要从本地 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、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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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

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

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

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

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

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