通过otlphttp从NodeJs中的OTEL Collector读取数据时,如何获取跟踪数据?

edqdpe6u  于 2023-03-17  发布在  Node.js
关注(0)|答案(1)|浏览(160)

我有一个示例插装应用程序,它使用以下配置将数据发送到正在运行的收集器:

receivers:
 otlp:
  protocols:
   grpc:
    endpoint: "0.0.0.0:4317"
   http:
    endpoint: "0.0.0.0:4318"

processors:
 batch:

exporters:
 otlphttp:
  endpoint: http://localhost:8080
  compression: none
 logging:
  loglevel: debug

service:
 pipelines:
  traces:
   receivers: [otlp]
   processors: [batch]
   exporters: [otlphttp, logging]

它非常简单,日志导出器正确地显示数据。我对otlphttp导出器很感兴趣。我构建了一个简单的NodeJs服务器,它监听localhost:8080/v1/traces,并且确实有post请求传入。但是我不知道如何访问数据。req.body似乎是空的。
我知道有一些protobuf的东西需要解码,但我不知道从哪里开始。显然还有这个otlp-transformer包可能会有帮助?但我再次不知道从哪里开始,或者这在NodeJ中是否可行。

fae0ux8s

fae0ux8s1#

我相信你正在寻找一个像Jaegerzipkin这样的工具,用来可视化和分析跟踪数据。收集器有两个导出器,和as of v1.35 Jaeger has support for the OpenTelemetry native OTLP protocol
如果不是这种情况,并且您实际上尝试使用NodeJS接收和处理跟踪数据,则需要反序列化protobuf。protobuf定义在https://github.com/open-telemetry/opentelemetry-proto上发布,使用这些定义,可以使用protobufjs npm包反序列化数据。
您所引用的transformer包用于序列化protobuf数据,而不是反序列化它。它是OTel JS SDK的内部包,用于通过protobuf over HTTP导出数据。

相关问题