问题标签 [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.
python - Python Open Telemtry - 获取跟踪 ID
假设我有一个使用 Open Telemtry 分布式跟踪的 Python 应用程序:
在这种情况下如何获取跟踪 ID?我想将它记录到日志文件中。
谢谢
java - 如何将多个 OpenTelemetry 跟踪合并为一个原始跟踪?
下面是我们的 SpringBoot 微服务如何与远程区块链应用程序通信的粗略草图,该应用程序根据发送给它的请求触发事件。区块链可以为单个请求生成多个事件,这会触发在自动检测事件侦听服务“ C ”上生成多个跟踪
请建议我们如何将接收端的这些多条跟踪与流程开始时生成的原始跟踪结合起来。关于我们的服务的几点可能会更清楚:
- 在流程开始时,我们会生成一个唯一的 msg-id,用于关联日志,它会流经所有微服务。
- 也许我们在服务“ B ”中序列化上下文,就在到达区块链之前,然后当服务“ C ”接收到来自区块链的事件时,我们使用 msg-id 从 DB/File 获取相关的跨度上下文并创建一个子跨出那个?这会“统一”这些痕迹吗?
open-telemetry - 将 opentelemetry 收集器自己的日志写入文件
有没有办法将自己的收集器日志写入文件?我的意思不是出口商日志,而是服务。像这样
java - Opentelemetry:如何将日志添加到跨度
我在我的 Spring Boot 应用程序中使用 OpenTelemetry java 自动检测。有没有办法让应用程序日志成为创建的跨度的一部分?
我的自动配置设置如下:
grpc - 如何在 gRPC 服务器存根中从 ctx 创建 OpenTelemetry span
我的 Go gRPC 服务器配备了
谷歌追踪跨度导出器:
otelgrpc 拦截器在 gRPC 服务器上注册。
现在我正在尝试在 RPC 实现中创建一个跟踪跨度,以便我可以为该方法创建子跨度,例如:
然而,从 OpenTelemetry 文档中却非常不清楚如何做到这一点。
我得到的最接近的是otel.GetTracerProvider().Tracer("some string here???")
提供一个Start(ctx)(ctx,Span)
. 但是我不清楚在这里提供什么字符串(我的出口商没有像文档所示的网址),这似乎很不方便。
我在想otelgrpc.SpanFromCtx(ctx)
某处有某种方法可以拉动示踪剂+用我没有找到的 rpc ctx 创建一个跨度。遗憾的是,OT+gRPC+Go 上的文档非常缺乏。
node.js - 使用 OpenTelemetry,我们如何将跟踪详细信息自动注入到用 Nodejs / Go 编写的应用程序日志中
在 python 中,有一个选项可以使用环境变量(export OTEL_PYTHON_LOG_CORRELATION=true)将跟踪详细信息(traacid,spanid)注入应用程序日志。Nodejs 或 Go 中是否有类似的东西。我在 Go 中找不到任何用于跟踪的自动仪器(我们可以通过为处理程序创建跨度和包装器来手动检测)。所以我不期待 Go 语言的答案,但可能 Node 可能有一个解决方案
serilog - 是否可以将 Serilog 与 OpenTelemetry 一起使用?
是否可以将 Serilog 与 OpenTelemetry 一起使用?
https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/docs/logs/getting-started/README.md
reactjs - 反应组件的自动仪表
我想将自动检测添加到我的反应应用程序的重定向组件中。我正在使用opentelemetry,所以他们有一个可以扩展的基本组件,然后将跟踪所有特定于反应的加载,但我想找到一种方法来覆盖或包装项目中的所有现有渲染组件,而不是必须包装每一个。我还需要检测文件是可重用的,并且我不希望将任何包装器添加到主文件中,它需要自动完成,因此只需要一个初始化调用来设置所有内容。
所以我看到它的方式,我需要一些方法来修改原来导入的组件:import { Redirect } from "react-router-dom";
通过强制它扩展baseopentelemetrycomponent
而不是React.component
,或者我需要能够自动替换原始组件,无论它被调用我将创建的 HOC。我无法弄清楚如何做这些事情,接受任何和所有建议!
redis - 水平扩展物联网传感器收集器服务器
我正在尝试水平扩展 IOT 传感器收集器服务器(直接从设备导入数据)
有数以万计的 IOT 传感器每 5 秒或 1 小时发送一次数据(取决于传感器是否处于活动状态)
来自传感器的每条新遥测消息都必须与之前的数据进行比较,要么是最后 1 条消息,要么是最后 5/10/20 条消息(用于平均)
如果满足状态变化或长时间超过阈值参数,则会发送事件/警报。
我看过:
负载平衡 - 使用粘性会话(仅适用于 IP/端口)
redis缓存 - 最后的记录(我扩展的网络流量太多)
我得出的结论是,真正完成这项工作的唯一方法是始终将相同的 IOT 设备发送到相同的 GatewayB(如下所述)
从服务器的角度来看,我有 2 个处理级别
- gatewayA(一切都先到这里)
- gatewayB(这从 gatewayA 接收数据)
GatewayA 服务器简单地处理建立 tcp 连接,并将十六进制数据转换为标准化的 json 对象。有 6 个 gatewayA 服务器并使用 DNS 负载平衡(这很好用)
在此之后,所有数据都被发送到单个 gatewayB 服务器以处理阈值违规等
我每 1 秒将多个传感器的 JSON 批次从网关 A 发送到单个网关 B。
我想水平缩放 gatewayB,但是我需要确保每个传感器 id 都粘在同一个 gatewayB 上
我在想 gatewayA 服务器会知道将每个传感器 ID 发送到哪里,并且它们将共享以下缓存:
传感器 ID
MessageCountInLastHour
服务器BToSendTo
然后,我不会转发到单个网关 B,而是发送到多个网关 B,但要确保传感器 ID 始终发送到同一个网关 B
需要考虑的问题是
- 均匀分配负载(一些传感器比其他传感器更活跃,因此它不能只在传感器 ID 上,它也有负载)
- 如果我有 3xGatewayB,其中一个出现故障,它需要在 2 个活动的之间平均分配负载
- 当停机服务器再次启动时,能够在网关 B 之间重新分配负载
- 所有 gatewayA 都需要共享/更新他们的本地缓存,以便他们知道将传感器数据发送到哪个 gatewayB(即,当新传感器报告时,它不在缓存中,或者当服务器出现故障时,它需要将 sensorId 均匀分布到不同的网关B)
我想知道是否有支持这一点的现有技术。我研究了HAproxy,但它并没有真正满足我的需要,特别是因为它需要一条消息然后发送它,我一次批处理100多条消息,它们都有不同的传感器ID
真的,我需要在网关A服务器上运行一些东西,这些服务器将消息发送到网关B
在我重新发明轮子并从头开始写一些东西之前,我想知道这类问题是否已经解决,以及存在哪些技术可以提供开箱即用的解决方案
我已经搜索了几个星期,但找不到解决方案。
opentracing - 如何在正在运行的应用程序中启用和禁用跟踪
我们可以通过在 Go 中设置NewNoopTracerProvider来使用代码(而不是通过自动检测)禁用 OpenTelemetry 。稍后可以通过设置一个 NewTracerProvider 来启用其他语言(Java、Python、Node)中是否有类似的选项,其中自动检测是为 http 和 gRPC 调用完成的。我对向环境变量添加新值(如 NewNoopTracerProvider)更感兴趣(也欢迎其他方法),以便自动检测会注意剩余。