当前位置: 首页 > 知识库问答 >
问题:

使用。NET Core使用OTEL代理在Kafka中生成的Protobuf序列化日志消息

曾瀚昂
2023-03-14

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

首先,是否有可能让OpenTelemory Kafka导出器使用JSON序列化?如前所述,它看起来默认情况下使用原型,并且似乎没有日志的JSON序列化选项-请参阅Otel Kafka导出器留档:

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

OTEL配置如下:

...

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

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

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

共有1个答案

齐浩淼
2023-03-14

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

根据您的Otel配置,它没有任何关于此类事情的信息,因此,您需要用C#编写您自己的Deserializer实现以用于原型对象

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

我猜你会从这里生成物体

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

 类似资料:
  • 我试图阅读和打印从Kafka使用Apache Flink的原型消息。 我遵循官方文件,但没有成功:https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/fault-tolerance/serialization/third_party_serializers/ Flink消费者代码是: 反序列化器代码是:

  • 我需要通过flink消费Kafka,不幸的是,Kafka消息是在serde中使用原型,完全不知道如何处理它,这里是来自互联网的代码,但我不能使它工作。 这不起作用,它会让NPE: 有人知道我做错了什么吗?使用twitter ProtobufSerializer是唯一值得拥有protobuf的方法吗?还是还有别的路要走?

  • 我使用协议缓冲区在c和c#客户机-服务器应用程序之间发送和接收数据。我用protobuf网来解决这个问题。我有两个原始文件,一个请求命令和一个响应命令。我能够将命令从c#客户端发送到c服务器并进行反序列化。但我不能用c#反序列化。 我在缓冲区中以字节为单位获取数据,但它不会在响应命令中反序列化。

  • 主要目标是聚合两个Kafka主题,一个压缩慢速移动数据,另一个每秒接收一次的快速移动数据。 我已经能够在简单的场景中使用消息,例如KV(Long, String),使用如下内容: 但是,当您需要从 AVRO 反序列化时,这似乎不是方法。我有一个KV(字符串,AVRO),我需要消费。 我尝试从AVRO模式生成Java类,然后将它们包含在“应用”中,例如: 但这似乎不是正确的方法。 是否有任何文档/示

  • 给定一个带有一个字符串字段的简单protobuf消息: 和打印它的示例代码: 此输出的结果将是: 每个消息(实际上是每个字段)都有“\n”换行符。这显然对伐木工人不利。 用Gson序列化会更糟,因为Gson将序列化生成的许多其他字段... 我们如何将protobuf消息转换为没有换行符的单个字符串?

  • 我试图使用ConsumerSeeKaware,阅读kafka主题中可用的最后一条消息。消息类型是Avro对象列表。我能成功地做到这一点。但在反序列化过程中会失败。该消息使用spring-cloud-stream-kafka框架生成。消息具有contentType。 我知道avro消息可以像下面这样反序列化。 但不管用。可能是因为两件事。 > 消息是avro对象的列表。但我正在尝试使用Avro模式创