摘要使用 OTel
filelog 接收器在 ClickStack 中采集并可视化 Kafka Broker 日志 (Log4j 格式) 。包含演示数据集和预置仪表盘。与现有 Kafka 集成
前置条件
- ClickStack 实例正在运行
- 已有 Kafka 安装 (2.0 或更高版本)
- 可访问 Kafka 的日志文件 (
server.log、controller.log等)
1
验证 Kafka 日志配置
Kafka 使用 Log4j,并将日志写入由系统属性kafka.logs.dir 或环境变量 LOG_DIR 指定的目录。请检查日志文件的位置:server.log:通用 broker 日志 (启动、连接、复制、错误)controller.log:控制器相关事件 (leader 选举、分区重新分配)state-change.log:分区和副本的状态转换
对于基于 Docker 的 Kafka 部署 (例如
confluentinc/cp-kafka) ,默认的 Log4j 配置只包含控制台 appender,不包含文件 appender,因此日志只会写入 stdout。要使用 filelog receiver,需要将日志重定向到文件,可通过在 log4j.properties 中添加文件 appender,或将 stdout 通过管道写入文件 (例如 | tee /var/log/kafka/server.log) 。2
为 Kafka 创建自定义 OTel collector 配置
ClickStack 支持通过挂载自定义配置文件并设置环境变量来扩展基础 OpenTelemetry Collector 配置。该自定义配置会与由 HyperDX 通过 OpAMP 管理的基础配置合并。创建一个名为kafka-logs-monitoring.yaml 的文件,内容如下:- 你只需在自定义配置中定义新的 receiver 和 管道。处理器 (
memory_limiter、transform、batch) 和 exporter (clickhouse) 已在基础 ClickStack 配置中预先定义好——你只需按名称引用它们。 multiline配置可确保将堆栈跟踪捕获为一条日志记录。- 此配置使用
start_at: beginning,以便在采集器启动时读取所有现有日志。对于生产环境中的部署,请改为start_at: end,以避免在采集器重启时重复摄取日志。
3
配置 ClickStack 以加载自定义配置
要在现有的 ClickStack 部署中启用自定义 collector 配置,您需要:- 将自定义配置文件挂载到
/etc/otelcol-contrib/custom.config.yaml - 设置环境变量
CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml - 挂载 Kafka 日志目录,以便 collector 能够读取日志
- Docker Compose
- Docker Run(All-in-One 镜像)
更新 ClickStack 部署配置:
请确保 ClickStack collector 具有读取 Kafka 日志文件的相应权限。在生产环境中,请使用只读挂载 (
:ro) ,并遵循最小权限原则。4
在 HyperDX 中验证日志
配置完成后,登录 HyperDX,确认日志已开始流入:演示数据集
1
2
仪表盘与可视化
1
仪表盘配置
2
3
仪表盘创建后,所有可视化均已预先配置
对于演示数据集,请将时间范围设置为 2026-03-09 00:00:00 - 2026-03-10 00:00:00 (UTC)。故障排查
regex_parser 中的正则表达式。
后续步骤
- 为关键事件 (broker 故障、复制错误、消费者组问题) 设置告警
- 结合 Kafka Metrics 进行全面的 Kafka 监控
- 针对特定场景 (controller 事件、分区重新分配) 创建更多仪表盘