观测云日志转发至 Kafka 最佳实践

    banner-3.png

    背景

    当日志需要长期保存、转发到第三方系统,或交由下游平台做实时消费与二次加工时,可通过观测云的数据转发能力将日志按规则实时转发至 Kafka。

    相比直接在平台内查询日志,这种方式更适合需要对日志做长期归档、流式处理、审计留存或多系统联动的场景。

    适用场景

    • 需要将观测云中的日志实时分发到 Kafka,供下游系统继续消费
    • 需要将日志同步到数据平台、消息处理链路或自建分析系统
    • 需要对指定来源、服务或标签的日志做条件转发,避免全量转发带来的成本压力
    • 需要将日志与现有 Kafka 消费体系打通,实现统一的数据处理流程

    方案说明

    整体链路如下:

    观测云日志 -> 数据转发规则 -> Kafka Topic -> 下游消费者/存储系统
    

    本文以单节点 Kafka 环境为例演示配置流程,帮助快速验证功能是否可用。生产环境中建议直接使用已有 Kafka 集群或云上托管 Kafka 服务。

    前置条件

    • 已有可正常写入和查询日志的观测云工作空间
    • 已准备 Kafka 环境,并确认观测云可访问 Kafka 地址与端口
    • 已规划好 Topic 名称、网络策略和安全协议
    • 如使用云服务器,请确认已放通 Kafka 所需端口(如 9092

    准备 Kafka 环境

    下载 Kafka 3.2.0 并解压:

    wget https://archive.apache.org/dist/kafka/3.2.0/kafka_2.13-3.2.0.tgz
    tar -xvf kafka_2.13-3.2.0.tgz
    cd kafka_2.13-3.2.0
    

    1. 启动 ZooKeeper

    bin/zookeeper-server-start.sh config/zookeeper.properties > logs/zookeeper.out 2>&1 &
    

    2. 修改 Kafka 配置

    进入 kafka_2.13-3.2.0/config 目录,编辑 server.properties

    vim server.properties
    

    找到并修改以下两项配置,去掉注释并替换为实际值:

    • listeners=PLAINTEXT://:9092
    • advertised.listeners=PLAINTEXT://hostIP:9092

    其中,hostIP 需要替换为 Kafka 实际可访问的 IP 或域名。

    3. 启动 Kafka

    bin/kafka-server-start.sh config/server.properties > logs/kafka.out 2>&1 &
    

    4. 创建 Topic

    bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092
    

    5. 可选:本地消费验证

    在配置观测云转发规则前,建议先确认 Topic 可正常消费:

    bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server hostIP:9092
    

    如果 Kafka 部署在云服务器上,请同步检查安全组、防火墙和 VPC 网络策略,确保 9092 端口可达。

    在观测云中配置日志转发规则

    在观测云中创建日志转发规则时,建议重点确认以下配置:

    • 地址(Host:Port)
      • 填写 Kafka 的实际访问地址,例如 hostIP:9092
    • 消息主题
      • 必须与 Kafka 中已创建的 Topic 一致,例如 test-topic
    • 安全协议
      • 按 Kafka 实际配置选择 PLAINTEXTSASLSSL
      • 如果 Kafka 开启了鉴权或加密,观测云中的协议配置必须与服务端保持一致
    • 过滤条件
      • 建议优先按 sourceservicehost 或标签精确筛选日志
      • 不建议在未评估日志量的情况下直接转发全量日志,以免带来不必要的带宽和存储开销
    • 测试连接
      • 点击测试连接,确认观测云到 Kafka 的网络和配置均正常
      • 测试成功后再保存规则

    验证转发结果

    完成规则配置后,可通过以下方式验证日志是否成功写入 Kafka:

    方式一:在 Kafka 侧查看消费结果

    执行以下命令消费目标 Topic:

    bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server hostIP:9092
    

    如果能看到来自观测云转发的日志消息,说明链路已打通。

    方式二:在观测云侧确认转发结果

    • 检查转发规则是否处于启用状态
    • 观察规则运行情况与测试连接结果
    • 配合 Kafka 消费结果交叉验证实际是否转发成功

    注意事项

    • Topic 需要提前创建,且名称必须与转发规则中的配置完全一致
    • 如果 Kafka 对外暴露的是内网地址,需确保观测云侧能够访问该网络
    • 生产环境建议优先使用高可用 Kafka 集群,而不是单节点测试环境
    • 建议根据业务场景规划 Topic、过滤条件和消费组,避免后续扩展时重复调整
    • 如果启用了 SASL/SSL,需先完成认证与证书相关配置,再在观测云中使用匹配的安全协议

    总结

    通过观测云日志转发能力,可以将指定日志实时投递至 Kafka,打通日志采集、分发、存储和消费链路。对于需要长期归档、流式处理、下游二次加工的场景,这是一种简单且易于扩展的实现方式。

    实际落地时,建议先在测试环境完成链路验证,再逐步引入更精确的过滤规则、安全协议和生产级 Kafka 架构配置。

    联系我们

    加入社区

    微信扫码
    加入官方交流群

    立即体验

    在线开通,按量计费,真正的云服务!

    立即开始

    选择观测云版本

    代码托管平台