mongodb-log

MongoDB Log & Metric Analyzer 使用方法与限制

简体中文 | English | 返回项目首页

本文面向直接使用发布包的运维人员,说明如何启动、分析 MongoDB 日志与 Metric 文件,以及使用前必须了解的能力边界。

1.工具定位

MongoDB Log & Metric Analyzer 是在个人电脑上运行的本地离线分析工具,提供两个工作区:

工具不连接 MongoDB,不需要 MongoDB、Node.js、Nacos、S3 或网络服务。应用默认只监听 127.0.0.1:18080,解析与字段解读均在本机完成。

本项目全程使用 AI 完成设计、编码、测试与文档编写。后续如需修改或扩展,建议继续使用 AI,并遵循项目规范与现有验证流程。项目虽由 AI 编程实现,但核心分析逻辑、统计口径与输出结果均已通过自动化测试、实际样本及人工复核验证。

2.运行要求

使用 JAR 时的标准发布目录:

mongodb-log-analyzer/
├── mongodb-log-analyzer.jar
└── scripts/
    ├── start.command
    ├── start.sh
    └── start.bat

3.启动与停止

Docker

公开镜像支持 linux/amd64 与 linux/arm64。执行:

docker run -d \
  --name mongodb-log-analyzer \
  --restart unless-stopped \
  --memory=3g \
  -p 127.0.0.1:18080:18080 \
  -v mongodb-log-analyzer-data:/app/data \
  whaleal/mongodb-log-analyzer:0.1.0

启动后访问 http://127.0.0.1:18080。执行 docker stop mongodb-log-analyzer 停止,执行 docker start mongodb-log-analyzer 再次启动。

任务数据保存在命名卷 mongodb-log-analyzer-data 中。升级镜像时可以重建容器,但要继续挂载该卷;不要执行会删除卷的 docker compose down -v。应用没有账号和授权机制,不要把容器端口直接暴露到公网。

JAR 发布包:macOS

首次使用时,在终端执行:

chmod +x scripts/start.command scripts/start.sh

之后双击 scripts/start.command。也可以在终端执行 ./scripts/start.sh。

JAR 发布包:Linux

执行:

./scripts/start.sh

JAR 发布包:Windows

双击 scripts\start.bat。

启动成功后,浏览器通常会自动打开 http://127.0.0.1:18080。如果没有自动打开,可手动访问该地址。

停止程序时,关闭启动窗口或在启动终端按 Ctrl+C。不要在任务分析或 Metric 索引建立期间直接强制结束进程;中断的任务在下次启动后会标记为失败,需要删除后重新上传。

4.MongoDB Log 使用方法

4.1 创建任务

  1. 在页面顶部选择「MongoDB Log」。
  2. 可填写任务名称;留空时默认使用第一个文件名。
  3. 点击「选择日志文件」,选择普通文本、结构化 JSON、旧版单行日志或 .gz 文件。.zip、.bz2、.xz 和 .7z 不受支持。
  4. 一个任务可合并多个非空文件,Web 页面一次最多选择 20 个文件。单次上传请求还受 12 GB 服务端上限约束。
  5. 点击「开始分析」。

文件会按选择顺序流式处理。页面显示排队或分析进度,完成后可进入结果页。Log 分析与 Metric 建索引共用一个后台单线程;该线程正在处理任务时,后续 Log 分析或 Metric 建索引任务会排队,不会并行抢占内存。

4.2 查看结果

从任务列表点击「查看分析结果」。结果分为两个页签:

使用提示:

4.3 导出报告

点击「导出 AI 分析报告」,可下载当前任务的 Markdown 报告。报告包含聚合统计、规范化查询模式和脱敏诊断信息,便于交给 AI 或人工进一步分析。

报告不会自动发送到任何 AI 服务,也不会导出完整命令、完整原始日志或 attributes。导出时会遮盖 MongoDB URI、IPv4/IPv6、邮箱,以及带 user、username、principal、password、passwd、token、secret 标签的值。任务名、文件名、Namespace、查询模式、执行计划和其他聚合字段仍会进入报告,因此导出后的文件仍应按所在组织的数据安全要求复核。

页面时间按浏览器本机时区显示;Markdown 报告中的时间使用 UTC,便于跨时区对照其他监控数据。

5.MongoDB Metric 使用方法

5.1 创建任务

  1. 在页面顶部选择「MongoDB Metric」。
  2. 选择 1~20 个 diagnostic.data/metrics.* 文件。
  3. 点击「开始建立索引」。
  4. 等待任务完成后进入 Metric 分析页。

程序按文件内容识别 FTDC,不依赖扩展名。空文件、截断文件、压缩数据损坏或不含合法指标 Block 的文件会被拒绝。

5.2 查询指标组

  1. 搜索并选择一个或多个指标组,或点击「一键选择核心指标组」。
  2. 点击「查询所选指标组」。
  3. 程序按选择顺序逐组读取;已完成的组会立即显示,单组失败不会中断后续组。
  4. 根据需要切换「原始值/相邻差值」「合并展示/分开展示」,或隐藏全零指标。
  5. 时间采集出现明显断裂时,折线会在断点处断开,不会跨断裂连线。

Metric 建索引、指标查询以及其他重型操作共用串行通道。长时间显示排队通常表示已有操作正在执行,不代表页面停止响应。

多个文件出现相同时间戳时,程序优先采用上传顺序更靠前的文件。每个指标图最多返回 1,200 个点,但最小值、最大值、平均值和全零判断基于查询范围内的全部有效点,而不是降采样结果。

6.任务与本地数据

应用默认在启动目录的 data 下保存任务数据。

Log 数据

Metric 数据

删除数据

7.能力与资源限制

7.1 运行边界

7.2 Log 分析边界

7.3 Metric 分析边界

7.4 结论边界

页面提供统计结果、字段解释和排查线索,不会自动判断故障根因。高耗时、COLLSCAN、CPU 占比或连接波动都只是线索,最终结论仍需结合业务流量、索引、查询计划、MongoDB 配置、硬件和同一时段的其他监控验证。

8.常见问题

页面打不开

确认启动窗口仍在运行,并检查 Java 版本。若 18080 端口被占用,需要先关闭占用该端口的程序,再重新启动。

.gz 文件分析失败

确认文件确实采用 GZip 压缩,而不是只把其他格式改成 .gz 扩展名。

CPU 或连接图没有数据

对应字段未出现在日志中。工具会显示无数据,不代表 CPU 或连接数为零。

任务长期排队

Log 分析与 Metric 建索引共用一个后台单线程;Metric 建索引和指标组查询还共用公平串行许可。等待占用对应执行通道的任务或查询结束后,排队操作会继续执行。

Metric 文件占用磁盘

Metric 任务需要保留应用副本和索引。确认不再需要结果后,在 Metric 任务列表删除任务即可释放对应空间,用户原文件不会被删除。

Metric 文件被拒绝

程序会校验 BSON 文档、zlib 解压长度、指标与样本规模、RLE 数据和压缩流结尾。空文件、截断文件、损坏数据、声明长度不一致或没有合法指标 Block 都会明确失败;请重新获取完整的 MongoDB FTDC 原文件。

历史任务缺少新版数据

历史结果不会在升级后自动重算。重新上传原始文件,创建新任务即可应用当前版本的解析能力。