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

背景

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

相关推荐
富士康质检员张全蛋6 小时前
Kafka架构 数据发送保障
分布式·架构·kafka
WhoAmI9 小时前
Elasticsearch实战指南:构建实时全文检索系统
elasticsearch·kafka
zhangzeyuaaa9 小时前
Kafka 核心原理超通俗详解|Offset、消费组、分区、持久化一次讲透
分布式·kafka
隔壁阿布都9 小时前
Kafka `acks` 参数取值全解
分布式·kafka
lvrongbao11 小时前
Kafka 场景化面试题top5: 事务与分布式一致性
分布式·kafka
zhangzeyuaaa11 小时前
深入剖析Kafka:Offset机制的底层基石——消息有序性
分布式·kafka
SuperherRo11 小时前
服务攻防-处理平台安全&消息队列&ActiveMQ&RocketMQ&Kafka&Spring包&CVE复现
kafka·消息队列·rocketmq·activemq
隔壁阿布都11 小时前
Kafka 核心组件及其作用(全解)
分布式·kafka
可观测性用观测云1 天前
观测云日志转发至 Kafka 最佳实践
kafka