问题标签 [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.
javascript - 如何使用 lightstep/otel-launcher-node 作为 OpenTelemetry 导出器?
在我使用lightstep/opentelemetry-exporter-js之前,我可以同时使用自己的导出器和 Lightstep 导出器。
但是,刚刚看到 lightstep/opentelemetry-exporter-js 已被弃用并被lightstep/otel-launcher-node取代。
我检查了它的源代码和演示,它看起来像是 OpenTelemetry 之上的一个“框架”。
是否可以简单地将其用作 OpenTelemetry 导出器之一?
java - 从 0.5.0 到 0.8.0 的 opentelemetry-api 迁移问题
将opentelemetry-api从0.5.0升级到0.8.0时,我遇到了这个问题。
考虑以下代码片段,
使用0.5.0,我得到的输出为: -
使用0.8.0,我得到的输出为: -
我认为对于0.8.0,我的代码中缺少一些东西,因为它没有按预期正常工作。
有人可以让我知道我需要对我的代码进行哪些更改,以便获得正确的Span而不是像0.5.0一样的无效Span吗?
注意:- 我正在使用:- scala -> 2.13.3,jvm -> 14,sbt -> 1.3.13
fastapi - 如何为 FastAPI 路由设置 OpenTelemetry 跨度属性?
将标签添加到跟踪的跨度对于稍后分析跟踪数据并按所需标签对其进行切片和切块非常有用。
阅读OpenTelemetry 文档后,我想不出一种将自定义标签添加到跨度的方法。
这是我的示例 FastAPI 应用程序,已经使用 OpenTelemetry 进行了检测:
你可以运行它uvicorn main:app --reload
如何将用户 ID 添加到跨度?
node.js - 在 Docker Compose 下将 OpenTelemetry 跟踪信息从我的应用程序获取到 jaeger 时遇到问题
我有一个简单的 Node.js 应用程序,它使用 Open Telemetry Jaeger 导出器将跟踪信息发送到 Jaeger。当我将 Jaeger 作为 Docker 容器启动然后从我机器的命令行针对localhost
. 但是,当我尝试在 Docker Compose 网络中的 Docker Compose 下运行应用程序和 jaeger 时,服务会注册并且在 Jaeger UI 中很明显,但跟踪/跨度信息永远不会被 Jaeger 接收。
这是代码:https ://github.com/reselbob/simpletracing/tree/releases/v1.0
我附上了一个屏幕截图,以证明该服务似乎正在注册,但跨度没有通过。
java - Opentememetry Zuul 集成
我正在尝试使用 Spring Boot 将 Opentelemetry 与 Zuul 集成,但没有成功。我想要做的是将 Opentelemetry 上下文从 Zuul 传递到链中的其他微服务,当响应进入 Zuul 时关闭跟踪
(创建跟踪) Zuul --call--> (new Span)微服务 A --call--> (new Span)微服务 B
(关闭跟踪)Zuul <--response-- 微服务A <-response-- 微服务B
有人做过类似的东西吗?
c# - WCF 如何在 WCF 中传播 DiagnosticSource.Activity 上下文?
我尝试在使用 WCF 的应用程序中将 OpenTelemetry 与控制台导出器集成。问题是,我当前的跟踪 idSystem.Diagnostics.DiagnosticSource.Activity
没有传播到另一端。因此,另一方面,父信息丢失并且跟踪被破坏。
我确实在检查日志时打开了 WCF 中的 ActivityPropagation。
问题是,我在另一边的活动没有/错误的活动 ID。
目前我不知道我还能做些什么来传播 System.Diagnostics.DiagnosticSource.Activity.Id
WCF
- 如何正确设置 OpenTelemetry 或 WCF 以传播 Activity Id/Context?
代码基本上只有 microsoft WCF Calculator Tutorial。我尝试将 OpenTelemetry 集成到其中。
这些是我用于 OpenTelemetry 的部分
客户:
服务:
这就是我在项目中激活活动传播的方式(主机相同)
go - OpenTelemetry 缺少包
我的 Go 项目出现以下错误。我go mod
用来管理依赖项。看起来最新版本的opentelemetry
不特定软件包。但是我应该如何修复它们
java - 如何拦截 Kotlin 协程?
我正在尝试检测 Kotlin 协程,类似于这里使用 Javaagent 所做的。我不想要Javaagent。
第一步是拦截 DebugProbes 中定义的Coroutines的创建、暂停和恢复。代码如下:
JUnit5测试触发拦截:
但是,不会发生拦截(通过没有日志语句和使用调试器来确认)。我是 Byte Buddy 的新手,所以我可能遗漏了一些东西。有任何想法吗?
Kotlin v1.4.10,Kotlin Coroutines v1.3.9,Byte Buddy v1.10.17。
open-telemetry - 从隐式上下文中获取当前活动范围
我在opentelemetry/specification/trace/api中找到了这个:
如果语言支持隐式传播
Context
(参见此处),API 还应该提供以下功能:
- 从隐式上下文中获取当前活动的跨度。这相当于获取隐式上下文,然后
Span
从上下文中提取。- 将当前活动范围设置为隐式上下文。这相当于获取隐式上下文,然后将 插入
Span
到上下文中。
但是我没有找到在java或go中获取当前活动跨度的方法。是否有任何语言支持此功能?
任何帮助将不胜感激!
node.js - 由 opentelemetry https 插件引起的错误 aws 请求签名
在NodeJS 应用程序中同时使用@opentelemetry/plugin-https
和时,opentelemetry 插件会将标头添加到每个 AWS 请求。如果不需要在. 当 aws-sdk 重试请求时,可能会发生以下错误:aws-sdk
traceparent
aws-sdk
InvalidSignatureException: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method.
第一个 AWS 请求包含以下标头:
traceparent: '00-32c9b7adee1da37fad593ee38e9e479b-875169606368a166-01'
Authorization: 'AWS4-HMAC-SHA256 Credential=<credential>, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token;x-amz-target, Signature=<signature>'
请注意,SignedHeaders
不包括traceparent
.
重试请求包含以下标头:
traceparent: '00-c573e391a455a207469ffa4fb75b3cab-6f20c315628cfcc0-01'
Authorization: AWS4-HMAC-SHA256 Credential=<credential>, SignedHeaders=host;traceparent;x-amz-content-sha256;x-amz-date;x-amz-security-token;x-amz-target, Signature=<signature>
请注意,SignedHeaders
确实包括traceparent
.
在发送重试请求之前,会@opentelemetry/plugin-https
设置新的traceparent
标头,这会使 AWS 请求的签名无效。
这是重现问题的代码(您可能需要运行脚本几次才能达到导致重试的速率限制):
可能的解决方案:
- 忽略所有对 aws 的调用
@opentelemetry/plugin-https
。- 忽略对 aws 的调用将导致丢失所有对 aws 请求的跨度。
- 将
traceparent
标题添加unsignableHeaders
到aws-sdk
-AWS.Signers.V4.prototype.unsignableHeaders.push("traceparent");
- 更改原型似乎是一种 hack,并且如果另一个节点模块使用不同版本的
aws-sdk
.
- 更改原型似乎是一种 hack,并且如果另一个节点模块使用不同版本的
是否有另一种解决方案可以让我保留 aws 请求的跨度并保证所有 aws 请求的签名都是正确的?
更新(16.12.2020):
该问题似乎已在aws sdk v3中得到解决
以下代码会引发正确的错误 (ThrottlingException):