面向运维人员的 MongoDB 本地离线分析工具。应用提供 MongoDB Log 与 MongoDB Metric 两个工作区,可分析日志、FTDC 指标及运行异常,不连接 MongoDB,也不会自动上传数据。
本项目全程使用 AI 完成设计、编码、测试与文档编写。后续如需修改或扩展,建议继续使用 AI,并遵循项目规范与现有验证流程。项目虽由 AI 编程实现,但核心分析逻辑、统计口径与输出结果均已通过自动化测试、实际样本及人工复核验证。
完整操作步骤见 中文使用指南 。运行后也可点击页面右上角的「使用说明」。
.gz 压缩日志。diagnostic.data/metrics.* FTDC 文件,按内容验证,不依赖扩展名。min、max、avg 和全零判断仍基于全部有效点。127.0.0.1:18080。data,不会修改用户选择的原文件。公开镜像位于 Docker Hub ,支持 linux/amd64 与 linux/arm64。运行时不需要安装 Java、Node.js 或 MongoDB:
docker pull whaleal/mongodb-log-analyzer:0.1.0
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。容器以非 root 用户运行,JVM 堆上限为 2 GB,命名卷 mongodb-log-analyzer-data 用于持久化任务数据。应用没有账号和授权机制,因此示例只向本机开放端口;不要把端口直接暴露到公网。升级或重建容器时保留该命名卷,也不要执行会删除它的 docker compose down -v。
同时提供 latest 标签,但固定部署建议使用明确版本号 0.1.0。
运行要求为 Java 17 或更高版本。发布目录需要同时包含 JAR 和启动脚本:
mongodb-log-analyzer/
├── mongodb-log-analyzer.jar
└── scripts/
├── start.command
├── start.sh
└── start.bat
chmod +x scripts/start.command scripts/start.sh,之后双击 scripts/start.command。./scripts/start.sh。scripts\start.bat。启动脚本使用 -Xms128m -Xmx2g。启动成功后通常会自动打开 http://127.0.0.1:18080;未自动打开时可手动访问。停止程序时关闭启动窗口,或在终端按 Ctrl+C。
浏览器中的 Vue 页面
│ REST API
▼
Spring Boot 本地服务
├── Log:上传副本 → 流式解析 → 有界聚合 → JSON/JSONL 结果
└── Metric:上传副本 → FTDC 扫描 → blocks.idx → 按组流式查询
Log 上传副本只在分析期间位于 data/work,完成或失败后删除。Metric 必须支持后续查询,因此会保留上传副本、指标目录和 Block 索引,但不会保存全量展开后的时间序列。
应用重启时,先前处于排队或运行状态的任务会标记为失败,不会使用不完整结果继续分析。
data/
├── tasks-index.json
├── tasks/<task-id>/
│ ├── metadata.json
│ ├── summary.json
│ ├── diagnostics.json
│ └── top-slow-queries.jsonl
├── work/<task-id>/
└── ftdc/
├── tasks-index.json
├── tasks/<task-id>/
│ ├── metadata.json
│ ├── catalog.json
│ ├── blocks.idx
│ └── source/<uploaded-file>
└── work/<task-id>/
删除任务只会清理应用托管的数据,不会删除用户原文件。排队或运行中的任务不能删除。右上角内存指示器提供全量清理入口;存在活动任务时会在删除任何内容前整体拒绝。
点击「导出 AI 分析报告」会生成当前 Log 任务的 Markdown 报告。报告包含聚合统计、规范化查询模式、Top 结果和脱敏诊断信息,但不导出完整命令、完整原始日志或完整 attributes。
导出时会遮盖 MongoDB URI、IPv4/IPv6、邮箱,以及带 user、username、principal、password、passwd、token、secret 标签的值。任务名、文件名、Namespace、查询模式、执行计划和其他聚合字段仍可能出现,因此对外分享前仍需按所在组织的数据安全要求复核。
prepare-package 阶段执行 npm ci 和 npm run build,再把静态资源打入可执行 JAR。主要目录:
src/main/java/com/whaleal/mongodblog/
├── parser/ # Log 与 FTDC 流式解析
├── analysis/ # 聚合、诊断与 Metric 序列查询
├── report/ # 脱敏 Markdown 报告
├── task/ # 任务生命周期与串行执行
├── storage/ # 本地文件持久化与索引
└── web/ # REST API
web/src/ # Vue 页面
web/tests/ # 前端测试
docs/ # 设计、AI 改写与中英文用户指南
scripts/ # 三个平台的启动脚本
| 范围 | 主要接口 | 用途 |
|---|---|---|
| Log 任务 | /api/tasks |
创建、列表和查询任务 |
| Log 结果 | /api/tasks/{id}/summary |
获取聚合结果 |
| 运行诊断 | /api/tasks/{id}/diagnostics |
获取独立诊断结果 |
| 慢查询 | /api/tasks/{id}/slow-queries |
分页筛选已保留明细 |
| 报告 | /api/tasks/{id}/report.md |
下载脱敏 Markdown 报告 |
| Metric 任务 | /api/ftdc-tasks |
创建、列表和查询 FTDC 任务 |
| Metric 指标组 | /api/ftdc-tasks/{id}/groups |
获取可查询指标组 |
| Metric 序列 | /api/ftdc-tasks/{id}/groups/{groupId}/series |
查询一个指标组 |
| 系统状态 | /api/system/memory |
获取 JVM 堆使用情况 |
| 清理数据 | /api/system/data |
清理全部已结束任务 |
这些接口面向本机单用户页面,没有账号、授权、多用户隔离或公网部署设计。
需要 Java 17、Maven、Node.js 和 npm:
mvn test
cd web
npm test -- --run
npm run build
cd ..
mvn clean package
mvn clean package 会先清理历史构建产物,再按锁文件安装前端依赖、构建 Vue 页面,并生成 target/mongodb-log-analyzer.jar。项目启动脚本也能直接找到该文件。
也可以使用项目根目录的 Dockerfile 构建本地镜像。多阶段构建会运行前后端测试,并且最终镜像不包含 Maven、Node.js 或前端构建依赖:
docker build -t mongodb-log-analyzer:local .
本项目使用 Apache License 2.0 开源。