问题标签 [google-cloud-trace]

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 投票
1 回答
615 浏览

google-cloud-run - 使用 OpenTelemetry 在 Google Cloud Run 上跟踪传播

我有一个 Flask 应用程序与 Python gRPC 服务通信,两者都部署在 Google Cloud Run 上。检测应用程序后,我可以在 Google Trace 上看到跟踪,但它们似乎都有不同的跟踪 ID,这意味着跟踪没有在两个服务之间链接在一起。这是我的设置代码,用于在每侧设置 grpc/Flask 仪器跟踪两个服务:

在本地,我可以使用 ConsoleSpanExporter 看到两个服务上的跟踪 ID 匹配,但是在 Google Cloud Run 上,它们显然不会在 Google Trace 上产生单独的跟踪,所以我想知道网络是否删除了服务之间的标头或其他东西正在发生,这意味着跟踪 ID 没有被传播?

作为额外说明,我还注意到 Cloud Run 的 Trace/Span ID 前面的负载均衡器没有使用 CloudTraceSpanFormatPropagator() 进行传播,这也使我的日志变得混乱,因为日志没有嵌套在一起用于请求。

0 投票
2 回答
425 浏览

node.js - 如何在启用了工作负载身份的 GKE 上将 Cloud Trace 与 Nodejs 结合使用?

我正在尝试在启用了工作负载身份的 GKE 集群上设置 Cloud Trace。我的 pod 使用具有Cloud Trace Agent角色的服务帐户。(我也尝试赋予它Owner角色,以排除权限问题,但这并没有改变错误。)

我遵循了Node.js quickstart,它说将以下代码段添加到我的代码中:

当我尝试添加跟踪时,出现以下错误:

@google-cloud/trace-agent DEBUG TraceWriter#publish:将跟踪发布到 cloudtrace.googleapis.com 时收到错误:错误:无法刷新访问令牌:尝试检索构建的计算引擎的访问令牌时返回了禁止错误-在服务帐户中。这可能是因为 Compute Engine 实例未指定正确的权限范围:无法刷新访问令牌:不成功的响应状态代码。请求失败,状态码 403

(如何)我可以将库配置为在这种情况下工作吗?

0 投票
2 回答
346 浏览

google-cloud-platform - 如何手动指定 X-Cloud-Trace-Context 标头值以关联和跟踪单独 Cloud Run 请求中的日志?

我正在使用 Cloud Run 和 Cloud Tasks 对 webhook 进行一些异步处理。当我收到对我的 Cloud Run 服务的请求时,我会在我的 Cloud Tasks 队列中排队一个任务,并立即从我的服务返回响应。然后,Cloud Tasks 将再次触发我的服务(不同的端点)并进行一些处理。我想通过使用相同的跟踪 ID 来关联这些步骤中的所有日志,但它不起作用。

在 Cloud Tasks 中创建任务时,我请求它发送标头并用原始请求的标头值X-Cloud-Trace-Context填充它。X-Cloud-Trace-Context从理论上讲,当请求来自 Cloud Tasks 到我的 Cloud Run 服务时,它应该具有此标头值,并且我的所有日​​志都将正确关联。但是,当第二个请求到来时,Cloud Run 似乎正在使用新的跟踪 ID 覆盖标头。

有没有办法防止这种情况发生?如果不是,在上述步骤中关联所有日志(由服务代码生成以及由 GCP 自动生成的日志)的推荐解决方案是什么?

谢谢您的帮助!

0 投票
1 回答
272 浏览

grpc - 如何在 gRPC 服务器存根中从 ctx 创建 OpenTelemetry span

我的 Go gRPC 服务器配备了

  1. 谷歌追踪跨度导出器:

  2. otelgrpc 拦截器在 gRPC 服务器上注册。

现在我正在尝试在 RPC 实现中创建一个跟踪跨度,以便我可以为该方法创建子跨度,例如:

然而,从 OpenTelemetry 文档中却非常不清楚如何做到这一点。

我得到的最接近的是otel.GetTracerProvider().Tracer("some string here???")提供一个Start(ctx)(ctx,Span). 但是我不清楚在这里提供什么字符串(我的出口商没有像文档所示的网址),这似乎很不方便。

我在想otelgrpc.SpanFromCtx(ctx)某处有某种方法可以拉动示踪剂+用我没有找到的 rpc ctx 创建一个跨度。遗憾的是,OT+gRPC+Go 上的文档非常缺乏。

0 投票
1 回答
187 浏览

datadog - 如何选择 Opentelemetry 后端供应商?

随着 Opentelemetry 成为跟踪的新标准,并且它与供应商无关,那么我们如何为 Opentelemetry 选择后端供应商?

例如,目前支持 Opentelemetry 的厂商有很多,如 GCP Cloudtrace、Datadog、Dynatrace、Lightstep、Instana。您如何为 opentelemtry 选择供应商?或者这根本不重要,因为 opentelemetry 与云无关,我们可以选择最便宜的一个来存储我们的踪迹

0 投票
0 回答
208 浏览

spring-boot - 跟踪未从 Spring Boot 应用程序传播到 GCP Cloud Trace

我有一个 Spring Boot 微服务,它从 PubSub 消费和发布消息,并部署在 GKE 上。我使用 Spring Stream binder 进行 pubsub 集成,使用 Cloud Sleuth 生成 traceId 和 spanId。TraceId 和 spanId 会传播到 Stackdriver 日志记录。现在我想将跟踪数据发送到 Cloud trace。根据 Spring GCP 跟踪文档,我添加了 gcp 跟踪启动器依赖项,但跟踪数据没有发送到云跟踪。

我还尝试添加此属性 spring.cloud.gcp.trace.enabled=true。应用程序没有抛出错误/异常。我是否缺少配置中的某些内容,如何调试此问题?任何帮助,将不胜感激。

0 投票
2 回答
876 浏览

python - OpenTelemetry Python - 如何将新跨度实例化为给定trace_id的子跨度

我的目标是通过几个组件来跟踪我的应用程序的整个过程。我正在使用 GCP 和 Pub/Sub 消息队列在组件之间传递信息(用 Python 开发)。

我目前正试图通过创建一个新跨度作为我的根跟踪的子跨度来在组件 A 和组件 B 之间保持相同的根跟踪。

这是一个小图:

我有一个给定的trace_idspan_id我的父母,我可以通过 Pub/Sub 传输,但我不知道如何将一个新的跨度声明为最后一个子级。我设法做的就是将一个新的跟踪链接到父跟踪,但这不是我正在寻找的行为。

有人已经尝试过这样做吗?

问候,

0 投票
0 回答
22 浏览

google-cloud-firestore - Firestore 触发器函数的跟踪上下文(分布式跟踪)

是否可以将跟踪上下文附加到 firestore 触发器,以便轻松找出应用程序流程?

目前,我们正在触发一些关于 Firestore 触发器中数据更改的 pubsub 事件。

想知道是否有一种方法可以传递上下文,以便我们可以对动作的所有跨度进行分组。

0 投票
0 回答
39 浏览

google-cloud-trace - Google Cloud TRACE 未显示自定义时间范围和某些项目的 TRACE 报告

我的团队正在 Kotlin spring-boot App 中使用 Cloud Trace。我们在随机的日子里收到了跟踪,并且能够追踪数据。但是当我尝试使用自定义时间范围和数据进行搜索时,跟踪不是来自微服务。无法理解跟踪数据是如何实际生成的,以及它将如何显示请求的完整跟踪。谁能帮我解决这个问题?

谢谢。

0 投票
1 回答
245 浏览

java - Google Cloud Trace Opentelemetry Java 示例代码未显示在 Google Cloud Trace 仪表板上

我按照 Google Cloud 的 Java 和 OpenTelemetry 站点 ( https://cloud.google.com/trace/docs/setup/java-ot ) 上的步骤,在本地制作了一个简单的 hello world Java 应用程序,并试图让我的踪迹显示出来使用他们的跟踪导出器在 Google Cloud Trace 上运行。

所有设置代码都是一样的,程序编译运行成功。但是,我在 Trace 仪表板上看不到任何内容。我知道这不是 IAM 或我的服务帐户密钥的问题,因为我运行了 Python 示例,它很好地显示在 Cloud Trace 仪表板中。

任何人都对为什么 Java 版本可能会默默失败有任何指导吗?

谢谢