【问题标题】:Understanding Open Telemetry Integration to google cloud pub sub in python了解 Open Telemetry Integration to google cloud pub sub in python
【发布时间】:2023-01-08 13:36:02
【问题描述】:
我很好奇如何为来自发布者的消息提供分布式跟踪,以及如何在订阅者部分接收到它,以便有可能跟踪在发送消息时出现问题时可能发生的情况(发布者)和消息被接收(订阅者)。这在 python gcp pubsub 客户端下。
我看到这个 PR 并且它似乎在追求那个,因为它也有点解释了 PR 的作者拥有的 in this article。
但对于gcp python client pub-sub,似乎还没有开放遥测支持来跟踪发布-订阅消息的流向
我想提到这个前言只是为了在我的问题中提出以下问题:
另一方面,我在 OTEL 收集器项目中看到 Google Cloud Pub Sub exporter 和 Google Cloud Pub Sub Receiver 模块,这与上面提到的 PR 的目的有何不同?
我想在收集器的角度下,这些模块用于从应用程序角度向发布子主题(导出器)发送跟踪(已经在 OTEL 收集器中),并用于从订阅(接收器)获取 OTEL 消息,但不跟踪消息发布者发送和订阅者接收?
我想更好地理解将跟踪发送到发布子主题或从订阅接收 OTEL 消息,以及从发布者生成跟踪以查看这些消息在到达订阅者之前的行为的想法
【问题讨论】:
标签:
python
publish-subscribe
google-cloud-pubsub
open-telemetry
【解决方案1】:
我想在收集器的角度下,这些模块用于从应用程序角度向发布子主题(导出器)发送跟踪(已经在 OTEL 收集器中),并用于从订阅(接收器)获取 OTEL 消息,但不跟踪消息发布者发送和订阅者接收?
是的,这是正确的理解。
我想更好地理解将跟踪发送到发布子主题或从订阅接收 OTEL 消息,以及从发布者生成跟踪以查看这些消息在到达订阅者之前的行为的想法
我不清楚。您是想问如何跟踪发送/接收到 pubsub 主题的消息,还是想知道如何将跟踪发送到主题?
根据您之前的描述,我假设您想了解前者。这与人们希望如何在其他消息传递/队列系统(例如 Celery、Kafka 等)中获得 e22 可见性略有相关。这是通过在入口/出口点创建跨度并通过消息头或类似的东西传播上下文来实现的。该库本身支持 OpenTelemetry(例如,google pub-sub 正在尝试做的事情),或者 OpenTelemetry 提供了一个检测库来实现该目标。检测通常包装原始库 API 方法并通过拦截原始调用来生成跟踪。您可以在此处查看当前可用仪器列表https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation。这也应该让你知道如何写一个。我不确定这是否能回答您的问题,但我希望它能给您一些总体思路。