问题标签 [open-telemetry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
404 浏览

apache-kafka - 打开遥测收集器问题将跟踪数据导出到 Splunk 和/或 Kafka

我正在尝试将遥测信息从 .NET Core 应用程序捕获到 Kafka,然后最终捕获到 Splunk(通过 Kafka Connect 或通过 Logstash 或 Fluentd 等开源转发器)。最初,我只是查看跟踪数据,但也会在某个阶段查看日志和指标。

我热衷于测试 Open Telemetry Collector 方法,因为这是我感兴趣的东西。

我正在使用 docker 和 docker-compose,因此我可以在本地测试所有内容 - 请参阅此处了解 docker-compose 文件。

我目前面临的主要问题是让 Open Telemetry Collector 代理在 docker 中运行。我尝试导出到 Splunk 和 Kafka,但我都收到了错误:

尝试使用splunk_hec 导出器将跟踪信息直接导出到 Splunk 时,如下所示:

我收到以下错误:

酒店 | 错误:无法加载配置:未知出口商为 splunk_hec 键入“splunk_hec”

酒店 | 2021/03/04 05:47:13 应用程序运行完成但出现错误:无法加载配置:未知出口商为 splunk_hec 键入“splunk_hec”

尝试使用kafka 导出器将跟踪信息导出到 Kafka 时,如下所示:

我收到以下错误 - 请注意,我正在为 Kafka 使用landoop/fast-data-dev映像(因为我发现的前几个教程中使用了该映像)而且我对 Kafka 还是很陌生:

酒店 | 错误:无法设置管道:无法构建 builtExporters:创建 kafka 导出器时出错:kafka:客户端已用完可与之交谈的代理(您的集群是否可达?)

酒店 | 2021/03/04 05:32:08 应用程序运行完成但出现错误:无法设置管道:无法构建 builtExporters:创建 kafka 导出器时出错:kafka:客户端已用完可与之交谈的代理(您的集群是否可达?)

我的otel-agent-config.yaml(这是一个 WIP)在这里

有谁知道这些问题是什么以及如何解决它们...

0 投票
0 回答
112 浏览

monitoring - 使用 Open Telemetry Collector 代理的字节码检测

我正在探索 Open Telemetry Collector Project 以及它如何与容器化的 .NET Core 应用程序(或任何其他应用程序)一起工作。

目前我们在我工作的公司使用 DynaTrace,这需要在主机上安装 DynaTrace 'OneAgent' 代理。DynaTrace 代理以某种方式连接到 dotnet CLR 并执行字节码/MSIL 检测。基本上,这种方法允许我们将 APM 数据捕获到 DynaTrace,而无需在我们的应用程序中进行任何代码更改。

将此与 Open Telemetry 方法进行对比,后者(据我所知)需要将额外的(nuget)包安装到我们想要检测的服务中。在 .NET Core 领域,我怀疑这是在使用基于 DiagnosticSource 的检测,我将其描述为一种 AOP。也就是说,它主要是自动的并集成到各种 .NET 库/框架中,例如 ASP.NET、Entity Framework 等;所以唯一的代码更改是;a) 安装 Open Telemetry nuget 包,b) 一些基本的 Startup.cs 配置,以及 c) 如果需要/在需要时可以选择添加额外的 span。这是最少的代码,但它不像 DynaTrace 方法那样没有代码。我还假设跨度的粒度比 DynaTrace 使用的字节码/MSIL 检测方法要粗得多。

WRT 开放遥测收集器;我真的很喜欢这样一个事实,即我们可以配置导出器以将检测数据发送到任何受支持的第三方监控解决方案(例如 DataDog、Elastic、Kafka 等),而无需安装任何专有代理。IMO 这种方法意味着我们可以更轻松地更改我们可能正在使用的监控服务,从而减轻供应商锁定。

我希望我能找到一种两全其美的方法;

  1. 我想使用 Open Telemerty Collecter 代理来缓解供应商锁定。通过能够更改底层监控解决方案,我们可以通过切换到更便宜的监控解决方案来节省数十万美元(或者至少切换的威胁是真实的,我们可以协商更便宜的成本)!
  2. 我想使用字节码/MSIL 检测方法,这样我就不必在我的应用程序中进行任何代码/配置更改。

这可能吗?

我正在研究 DataDog 代理是如何工作。看起来这可能是与 DynaTrace 类似的方法。对于 DataDog,看起来您需要在应用程序容器中设置一些 CLR 环境变量 - 大概这会扩展 CLR 以将字节码/MSIL 检测数据发送到 DataDog 代理(作为 sidecar 或其他东西运行)...... 在此处输入图像描述

我们是否能够使用这种 DataDog 方法,但不是将检测数据发送到 DataDog 代理,而是将其发送到 Open Telemerty Collecter 代理?从技术上讲,如果我们愿意,Open Telemerty Collecter 代理仍然可以发送到 DataDog(即使用DataDog 导出器),但至少我们会使用这种方法减轻供应商锁定。想法...

0 投票
2 回答
359 浏览

java - 如何使用 opentelemetry java sdk 创建多个服务?

我有一个应用程序,它由以专有语言构建的多个服务组成。我想收集跟踪并摄取到 Jaeger 或 APM 解决方案中。没有仪器库。但是,这些服务以专有格式生成跟踪。我想将这些跟踪转换为 OpenTelemetry 跟踪并摄取到 Jaeger 或 APM 解决方案中。

我开始使用 OpenTelemetry-Java SDK。

配置适当的出口商。我可以按预期看到 Jeager 中的痕迹。 在此处输入图像描述

但它只显示一项服务。 在此处输入图像描述

而我想描述两种不同的服务。这可能使用 OpenTelemetry 吗?

在此处输入图像描述

0 投票
1 回答
86 浏览

collectors - 如何手动将 Java 跟踪发送到 OpenTelemetry 收集器

如何在 Java 中创建 OpenTelemetry 跟踪并手动发送到 OpenTelemetry 收集器?

0 投票
2 回答
750 浏览

zipkin - 使用 Zipkin 导出器的 Opentelemetry 未按预期工作。抛出 StatusRuntimeException: UNAVAILABLE: io 异常

我对使用 OpenTelemetry 非常陌生,并且刚刚尝试将其配置为将跟踪发送到我的 Zipkin 服务器。不幸的是,在通过指定 zipkin 导出器详细信息配置代理后,我可以在控制台中看到异常。我使用 Petclic 作为示例弹簧靴,并遵循此处的文档https://github.com/open-telemetry/opentelemetry-java-instrumentation

这是我用来启动 spring-boot 应用程序的命令(我的 zipkin 服务器在 localhost:9411 运行):

java -javaagent:opentelemetry-javaagent-all.jar -Dotel.exporter=zipkin -Dotel.exporter.zipkin.endpoint=localhost:9411 -jar spring-petclinic-2.4.2.jar

控制台中的异常(它试图连接到 gRpc 导出器而不是 Zipkins):

请你让我知道这有什么问题。

编辑: 我已经尝试通过 -Dotel.traces.exporter=zipkin 而不是 -Dotel.exporter=zipkin 但没有成功。我只是想通过将这些参数作为 jvm 参数传递来通过 Eclipse 启动我的 Spring Boot 应用程序。OpenTelemetery 上的每个教程似乎都在使用 Docker 设置。请有人帮忙

0 投票
0 回答
436 浏览

zipkin - 配置 OpenTelemetry Collector 以导出 Zipkin 跟踪

我正在尝试在 Kubernetes 中配置开放遥测收集器。我将 jaeger 全部集成到一个部署中:https : //www.jaegertracing.io/docs/1.22/opentelemetry/ 并将其移植到在我的 minikube 上运行的 kubernete。

问题是我似乎无法让开放遥测收集器接收 jaeger 跟踪并将其发送到我的代理容器。我的 jaeger all in one app 似乎在我的 minikube 实例中工作。跟踪正在通过 hot rap 应用程序发送,我可以在 jaeger UI 中查看跟踪。

在此处输入图像描述

我的开放遥测收集器如下所示:

似乎 open-tel 收集器甚至没有收到 jaeger 的踪迹。来自容器的日志如下..

即使我发送了大量的 jaeger 痕迹,收藏家似乎也没有收到任何东西。有没有办法进一步调试或我缺少的配置?任何帮助将不胜感激。

0 投票
0 回答
52 浏览

docker - 如何访问卷共享的文件

我必须在 docker-compose 文件中定义容器

和收藏家

共享卷

在 otel-collector-config.yaml 中

尝试读取该日志文件

在此处输入图像描述

但是我遇到了找不到该文件的错误 在此处输入图像描述

0 投票
1 回答
602 浏览

jaeger - opentelemetry 连接被拒绝:localhost/0:0:0:0:0:0:0:1:4317

我正在使用 opentelemtry 进行跟踪,以下是命令,但出现错误任何人都可以建议我在这里做错了什么:

0 投票
0 回答
80 浏览

java - 如何将属性添加到所有传出 Span (Java)

如果我理解正确,我应该能够使用 opentelemetry Resource 将自定义属性附加到传出 Spans。我认为语法应该类似于

问题:

如何将该 TracerProvider 设置为我的应用程序的默认提供程序?

如果我这样做,它会将该属性添加到附加到 Spans 的默认属性集中,还是会替换它们?

另外,如果我这样做,我仍然可以使用Span.current()语法来访问当前 Span,还是需要通过 Tracer 访问当前 Span?

0 投票
1 回答
160 浏览

python - 如何将 opentelmetry 与多个微服务一起使用(python)

在单个应用程序中,我可以轻松创建(嵌套)跨度,但我试图在多个服务中跟踪 http 请求,而我尝试使用上下文传播的任何方法都不起作用。所以也许我的设置是错误的。

有人可以在python中解释这个的确切要求吗?

据我了解,在每个微服务中,我必须设置我的跨度导出器、收集器和跟踪提供程序。

在我想要检测的类中完成之后,我只需导航到我想要跟踪的服务中的代码块:

当我启动我的服务时,跟踪工作完美,我可以在我的 Jaeger UI 上看到它们,但是跨度并没有聚合在单个 http 请求的单个跟踪下。

我知道那里应该有一些上下文传播来实现这一点,但我找不到任何方法可以在 python 中完成这项工作。我正在使用 W3C ContextTrace,但我无法让它工作,而且我不确定是否应该在每个服务中设置跟踪提供程序,或者到底出了什么问题。

我已经阅读了很多文档,但我仍然不知道如何让它工作。