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

如何通过前端应用程序中的OpenTelemetry向Jaeger发送跟踪数据?

葛驰
2023-03-14

我试图在前端应用程序中跟踪。

我不能使用@opentelemetry/exporter jaeger,因为我认为它是用于节点的。仅限js后端应用程序。

所以我尝试使用@opentelemetry/exporter-collector。

首先,我尝试在浏览器控制台中打印跟踪数据。下面的代码成功打印了跟踪数据。

import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
import { DocumentLoad } from '@opentelemetry/plugin-document-load';
import { SimpleSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/tracing';
import { WebTracerProvider } from '@opentelemetry/web';

const provider = new WebTracerProvider({ plugins: [new DocumentLoad()] });
provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
provider.register();

现在我想把它们转发给杰格。

我正在运行机甲猎人一体机

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.18

基于Jaeger port文档,我可能能够使用这两个端口(如果其他端口工作,那也太好了!):

14250   HTTP    collector   accept model.proto
9411    HTTP    collector   Zipkin compatible endpoint (optional)

然后,我进一步找到了有关此端口的更多信息:

Zipkin格式(稳定)

Jaeger Collector还可以接受多种Zipkin数据格式的跨度,即JSON v1/v2和Thrift。收集器需要配置为启用Zipkin HTTP服务器,例如在Zipkin收集器使用的端口9411上。服务器启用两个期望POST请求的endpoint:

/api/v1/spans for submitting spans in Zipkin JSON v1 or Zipkin Thrift format.
/api/v2/spans for submitting spans in Zipkin JSON v2.

我将代码更新为

import { CollectorTraceExporter, CollectorProtocolNode } from '@opentelemetry/exporter-collector';
import { DocumentLoad } from '@opentelemetry/plugin-document-load';
import { SimpleSpanProcessor } from '@opentelemetry/tracing';
import { WebTracerProvider } from '@opentelemetry/web';

const provider = new WebTracerProvider({ plugins: [new DocumentLoad()] });

// The config below currently has issue
const exporter = new CollectorTraceExporter({
    serviceName: 'my-service',
    protocolNode: CollectorProtocolNode.HTTP_JSON,
    url: 'http://localhost:9411/api/v1/spans', // Also tried v2
});

provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
provider.register();

但是,我收到了对v1和v2endpoint的错误请求,没有返回任何响应体

发布http://localhost:9411/api/v1/spans400(错误请求)

发布http://localhost:9411/api/v2/spans400(错误请求)

你知道我怎样才能使请求格式正确吗?谢谢

我认为安德鲁是对的,我应该使用开放遥测收集器。我还从Gitter的Valentin Marchaud和Deniz Gurkaynak那里得到了一些帮助。只需在此处添加链接,以供遇到相同问题的更多人使用:https://gitter.im/open-telemetry/opentelemetry-node?at=5f3aa9481226fc21335ce61a

我的最终工作解决方案发布在https://stackoverflow.com/a/63489195/2000548

共有1个答案

汲利
2023-03-14

问题是,如果您使用opentelem计导出器,则应该使用opentelem计收集器。

此外,我还创建了一个要点,这将帮助您设置请参见

https://gist.github.com/AndrewGrachov/11a18bc7268e43f1a36960d630a0838f

(只需调整值,导出到jaeger all-in-one,而不是单独的cassandra等)

 类似资料:
  • 我有一个简单的Java应用程序,我想用Jaeger测试跟踪,但遇到了错误。 Maven依赖- jaeger一体机- 这是代码- 我犯了个错误- 感谢任何帮助!

  • Jaeger跟踪沙箱演示使用Jaeger作为跟踪服务程序,为Envoy请求跟踪提供能力。这个沙盒与上面描述的前端代理架构非常类似,但有一点不同:在返回请求响应之前,service1对service2进行API调用。这三个容器将被部署在名为envoymesh的虚拟网络中。 所有的请求都通过前端Envoy代理进行路由,该Envoy充当位于envoymesh网络边缘的反向代理角色。通过docker co

  • 问题内容: 说我使用这样的代码: 如何查看已将什么json请求发送到Elasticsearch? 问题答案: 在Elastic4s 1.6.2中,您可以对多个请求使用show typeclass以获得JSON等值。 这很简单。 该方法将呈现JSON输出。它适用于大多数请求类型。 在Elastic4s 5.2.0+中,您可以在客户端上使用该方法。

  • 更新:我已将代码推送到我的回购协议中,以便人们可以查看那里,看看可能出现了什么问题。 编辑:我几乎可以肯定是客户端代码没有向服务器发布任何统计数据,但是下面的指南都没有解释如何启用:是否有我缺少的配置设置? 我一直在关注OpenZipkin和Spring Sleuth的快速启动:我从docker Zipkin使用和Cassandra作为后端运行Zipkin服务器: 我已经创建并运行了Spring

  • 我使用Spring Boot开发了一条Camel路线。现在我想使用Jaeger跟踪路线。我尝试此示例使用组件跟踪路线,但我无法获取Jaeger的踪迹。 我只能在控制台中看到它。我不清楚的一件事是在哪里添加Jaeger URL?任何工作示例都会很有帮助。

  • 我有一个带有Spring Cloud Sleuth、OpenTelemetry instrumentation和OpenTelemetry exporter OTLP的Spring Boot应用程序。 以下是依赖关系的要点: > 引入OpenTelemetry instrumentation libs并提供spring自动配置 用于向apm服务器发送数据 我的中只有基本配置: 通过这个设置,我成功