通过 ClickStack 监控 MongoDB 日志
使用 OTel filelog 接收器在 ClickStack 中采集并可视化 MongoDB 服务器日志(4.4+ JSON 格式)。包含演示数据集和预置仪表板。
与现有 MongoDB 集成
本节介绍如何通过修改 ClickStack OTel collector 的配置,将现有 MongoDB 部署的日志发送到 ClickStack。 如果您想在配置自己的现有环境之前先测试 MongoDB 集成,可以在"演示数据集"部分使用我们预先配置的环境和示例数据进行测试。
前提条件
- ClickStack 实例正在运行
- 已有的自管理 MongoDB 安装 (版本 4.4 或更高)
- 可访问 MongoDB 日志文件
验证 MongoDB 日志配置
MongoDB 4.4+ 默认输出结构化 JSON 日志。请确认您的日志文件路径:
常见的 MongoDB 日志位置:
- Linux (apt/yum):
/var/log/mongodb/mongod.log - macOS (Homebrew):
/usr/local/var/log/mongodb/mongo.log - Docker:通常会记录到 stdout,但也可配置为写入
/var/log/mongodb/mongod.log
如果 MongoDB 当前将日志输出到 stdout,请更新 mongod.conf,将其配置为写入文件:
更改配置后,重启 MongoDB:
为 MongoDB 创建自定义 OTel collector 配置
ClickStack 支持通过挂载自定义配置文件并设置环境变量来扩展基础 OpenTelemetry Collector 配置。自定义配置将通过 OpAMP 与 HyperDX 管理的基础配置进行合并。
创建一个名为 mongodb-monitoring.yaml 的文件,配置如下:
- 你只需在自定义配置中定义新的 receiver 和 pipeline。处理器 (
memory_limiter、transform、batch) 和 exporter (clickhouse) 已在 ClickStack 基础配置中预先定义——你只需按名称引用它们。 - 此配置使用
start_at: beginning,使采集器在启动时读取所有现有日志。对于生产环境中的部署,请改为start_at: end,以避免采集器重启时重复摄取日志。
配置 ClickStack 以加载自定义配置
要在现有 ClickStack 部署中启用自定义采集器配置,您需要:
- 将自定义配置文件挂载至
/etc/otelcol-contrib/custom.config.yaml - 设置环境变量
CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml - 挂载 MongoDB 的日志目录,以便采集器能够读取日志
- Docker Compose
- Docker Run(All-in-One 镜像)
更新 ClickStack 的部署配置:
如果你使用 Docker 运行 all-in-one 镜像,请执行:
确保 ClickStack 收集器具有读取 MongoDB 日志文件的适当权限。在生产环境中,请使用只读挂载 (:ro) 并遵循最小权限原则。
演示数据集
在配置生产系统之前,先使用预先生成的示例数据集测试 MongoDB 集成。
仪表板和可视化
导入预置仪表板
- 打开 HyperDX,导航到 Dashboards 部分。
- 点击右上角省略号菜单中的“Import Dashboard”。

- 上传 mongodb-logs-dashboard.json 文件,然后点击完成导入。

故障排查
验证当前生效的配置是否包含 filelog 接收器:
检查采集器错误:
确认 MongoDB 是否输出 JSON 日志 (4.4+) :
如果输出不是有效的 JSON,你的 MongoDB 版本可能使用的是旧版文本日志格式 (4.4 之前) 。你需要将 json_parser 运算符替换为 regex_parser,或者升级到 MongoDB 4.4+。
后续步骤
进入生产环境
本指南基于 ClickStack 内置的 OpenTelemetry Collector,便于快速完成设置。对于生产部署,我们建议运行您自己的 OTel collector,并将数据发送到 ClickStack 的 OTLP 端点。有关生产环境配置,请参阅发送 OpenTelemetry 数据。


