本文面向直接使用发布包的运维人员,说明如何启动、分析 MongoDB 日志与 Metric 文件,以及使用前必须了解的能力边界。
MongoDB Log & Metric Analyzer 是在个人电脑上运行的本地离线分析工具,提供两个工作区:
MongoDB Log:分析 MongoDB 文本日志、结构化 JSON 日志和 .gz 压缩日志,生成慢查询统计、运行诊断和脱敏 Markdown 报告。MongoDB Metric:分析 diagnostic.data/metrics.* FTDC 文件,建立本地索引后按指标组查看时间序列。工具不连接 MongoDB,不需要 MongoDB、Node.js、Nacos、S3 或网络服务。应用默认只监听 127.0.0.1:18080,解析与字段解读均在本机完成。
本项目全程使用 AI 完成设计、编码、测试与文档编写。后续如需修改或扩展,建议继续使用 AI,并遵循项目规范与现有验证流程。项目虽由 AI 编程实现,但核心分析逻辑、统计口径与输出结果均已通过自动化测试、实际样本及人工复核验证。
mongodb-log-analyzer.jar 和 scripts 目录。-Xms128m -Xmx2g。2 GB 是 Java 堆上限,不等于容器或进程的全部内存占用。使用 JAR 时的标准发布目录:
mongodb-log-analyzer/
├── mongodb-log-analyzer.jar
└── scripts/
├── start.command
├── start.sh
└── start.bat
公开镜像支持 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。应用没有账号和授权机制,不要把容器端口直接暴露到公网。
首次使用时,在终端执行:
chmod +x scripts/start.command scripts/start.sh
之后双击 scripts/start.command。也可以在终端执行 ./scripts/start.sh。
执行:
./scripts/start.sh
双击 scripts\start.bat。
启动成功后,浏览器通常会自动打开 http://127.0.0.1:18080。如果没有自动打开,可手动访问该地址。
停止程序时,关闭启动窗口或在启动终端按 Ctrl+C。不要在任务分析或 Metric 索引建立期间直接强制结束进程;中断的任务在下次启动后会标记为失败,需要删除后重新上传。
.gz 文件。.zip、.bz2、.xz 和 .7z 不受支持。文件会按选择顺序流式处理。页面显示排队或分析进度,完成后可进入结果页。Log 分析与 Metric 建索引共用一个后台单线程;该线程正在处理任务时,后续 Log 分析或 Metric 建索引任务会排队,不会并行抢占内存。
从任务列表点击「查看分析结果」。结果分为两个页签:
使用提示:
COLLSCAN)。文本搜索忽略大小写和首尾空格,多项条件取交集;显示匹配组数,点击「重置」清空条件。筛选只作用于已入选 Top 50,不会从全部模式中重新选取;切换任务后条件清空,报告仍导出原有任务聚合结果。点击「导出 AI 分析报告」,可下载当前任务的 Markdown 报告。报告包含聚合统计、规范化查询模式和脱敏诊断信息,便于交给 AI 或人工进一步分析。
报告不会自动发送到任何 AI 服务,也不会导出完整命令、完整原始日志或 attributes。导出时会遮盖 MongoDB URI、IPv4/IPv6、邮箱,以及带 user、username、principal、password、passwd、token、secret 标签的值。任务名、文件名、Namespace、查询模式、执行计划和其他聚合字段仍会进入报告,因此导出后的文件仍应按所在组织的数据安全要求复核。
页面时间按浏览器本机时区显示;Markdown 报告中的时间使用 UTC,便于跨时区对照其他监控数据。
diagnostic.data/metrics.* 文件。程序按文件内容识别 FTDC,不依赖扩展名。空文件、截断文件、压缩数据损坏或不含合法指标 Block 的文件会被拒绝。
Metric 建索引、指标查询以及其他重型操作共用串行通道。长时间显示排队通常表示已有操作正在执行,不代表页面停止响应。
多个文件出现相同时间戳时,程序优先采用上传顺序更靠前的文件。每个指标图最多返回 1,200 个点,但最小值、最大值、平均值和全零判断基于查询范围内的全部有效点,而不是降采样结果。
应用默认在启动目录的 data 下保存任务数据。
cpuNanos、连接计数、扫描量或执行计划时,对应指标显示无数据,不会按零值补齐。页面提供统计结果、字段解释和排查线索,不会自动判断故障根因。高耗时、COLLSCAN、CPU 占比或连接波动都只是线索,最终结论仍需结合业务流量、索引、查询计划、MongoDB 配置、硬件和同一时段的其他监控验证。
确认启动窗口仍在运行,并检查 Java 版本。若 18080 端口被占用,需要先关闭占用该端口的程序,再重新启动。
.gz 文件分析失败确认文件确实采用 GZip 压缩,而不是只把其他格式改成 .gz 扩展名。
对应字段未出现在日志中。工具会显示无数据,不代表 CPU 或连接数为零。
Log 分析与 Metric 建索引共用一个后台单线程;Metric 建索引和指标组查询还共用公平串行许可。等待占用对应执行通道的任务或查询结束后,排队操作会继续执行。
Metric 任务需要保留应用副本和索引。确认不再需要结果后,在 Metric 任务列表删除任务即可释放对应空间,用户原文件不会被删除。
程序会校验 BSON 文档、zlib 解压长度、指标与样本规模、RLE 数据和压缩流结尾。空文件、截断文件、损坏数据、声明长度不一致或没有合法指标 Block 都会明确失败;请重新获取完整的 MongoDB FTDC 原文件。
历史结果不会在升级后自动重算。重新上传原始文件,创建新任务即可应用当前版本的解析能力。