0

我正在使用 OpenTelemetry 收集器代理将日志发送到 Kafka 流层。我想在 .NET Kafka 消费者中使用这些日志消息(目前),但我遇到了一些问题。OTEL 似乎使用了 Protobuf 序列化,这使得它有点棘手。注意:最终我想通过 Kafka Connect 将日志发送到 Elasticsearch,但每次只有一步......

首先,是否可以让 OpenTelemetry Kafka 导出器使用 JSON 序列化?如前所述,它看起来默认使用 Protobuf,并且似乎没有用于日志的 JSON 序列化选项 - 请参阅OTEL Kafka 导出器文档

在此处输入图像描述

或者,如何使用 OpenTelemetry 收集器代理使用 Protobuf 序列化发布到 Kafka 的日志消息?

OTEL 配置如下:

...

exporters:
  kafka:
    brokers:
      - "kafka:9093"
    protocol_version: 2.6.2
    topic: logs

service:
  pipelines:
    logs:
      receivers: [filelog]
      exporters: [logging]

我的消费者应用程序是 .NET Core。到目前为止,我刚刚从confluent-kafka-dotnet GitHub 页面获得了一个基本的生产者/消费者示例(所有这些都适用于简单消息,但不适用于 OTEL 代理发布的 Protobuf 消息)。我设法在这里找到了一个 Protobuf 消费者示例,但是我将如何生成 proto 类来反序列化 OTEL 日志。我有点迷失在这里...

4

1 回答 1

1

Confluent repo 中给出的示例要求 Protobuf 消息遵循特定于 Confluent Schema Registry 的格式。

根据您的 OTEL 配置,它没有关于任何此类事情的任何信息,因此,您需要在 C# 中为 Protobuf 对象编写自己的 Deserializer 实现

我将如何生成原型类来反序列化 OTEL 日志

我假设你会从这里生成对象

https://github.com/open-telemetry/opentelemetry-proto

于 2021-11-17T14:38:20.820 回答