问题标签 [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 回答
49 浏览

google-cloud-stackdriver - 如何获取跟踪的调用次数

我添加了跟踪以测量在 GCP 上运行的某些代码的执行情况。跟踪出现在 StackDriver 页面的跟踪列表中,我可以看到它们的持续时间。我找不到的是发出到达跟踪的次数。这个数字出现在哪里?

0 投票
1 回答
57 浏览

google-cloud-platform - 在适用于 Express.js 的 Google Cloud Tracer 代理中查找未跟踪时间

我将 Google Cloud 的Stackdriver Trace Agent与 Express.js 插件一起使用。

我注意到有一些路线有大量的“未追踪”时间。我可以使用什么策略来查找并开始测量这些未跟踪的路径,为什么它不会拾取某些代码路径?

0 投票
2 回答
167 浏览

python - Stackdriver Strace 使用 python 为一个请求嵌入跟踪

我正在使用 Stackdriver Trace 监控一些微服务的延迟,但是在将所有往返行程显示为一个请求时遇到了一些问题。

假设我有两个服务(为了简单起见)。为了从它们中获取跟踪,我需要在这两个服务中安装客户端库。现在在我做的第一个服务中说:

在我的第二次服务中,我会:

第二个服务对数据库进行查询,对结果进行 gts,然后将它们发送到第一个服务,该服务显示内容。

现在,当然我必须开始计算两个微服务的延迟,因为我想知道从第一个服务到第二个服务需要多长时间。而且我还必须开始计算第二个服务,因为我想知道从数据库中检索内容需要多长时间。

但是当我在 GCP 控制台上获得跟踪时,我看到了这个:

在此处输入图像描述

第一个跟踪来自数据库,第二个跟踪都是(从第一个服务到第二个 + 数据库)。

我想知道如何将第二个跟踪嵌入到 python 的第一个跟踪中。我一直在检查opencensuspython 的文档,我发现了这个:

类 opencensus.trace.span.Span(name, parent_span=None,...)

跨度是形成跟踪树节点的单个定时事件。每个跨度都有其名称、跨度 ID 和父 ID。父 id 指示单个分布式跟踪中各个跨度之间的因果关系。没有父 ID 的 Span 称为根 Span。与特定跟踪关联的所有跨度也共享一个公共跟踪 ID。跨度不需要是连续的,两个跨度之间可以有间隙。

所以,我想,我必须将span_id第一个请求的请求连同请求一起发送到第二个微服务?这里还有一个问题,这似乎需要用这些参数初始化跟踪器,但是我在第二个微服务上的跟踪器已经初始化了。发送请求时我无法初始化它,因为它已经无法正确计算延迟。

我需要问这个,因为要进行测试,我必须创建图像,将其上传到 docker hub,然后在 k8s 上进行测试。在这里盲目地做太多的工作。

Stackdriver 跟踪的 Python 客户端库处于 alpha 阶段,因此在 GCP 站点上也没有太多关于此的文档。

编辑

由于没有响应,我实际上尝试传递span_context信息,即:

...初始化时到第二个微服务,但它不起作用。当它开始计算第二个微服务上的跟踪时,它会自动生成新的trace_idspan_id忽略span_context第一个微服务。在这一点上,我没有想法。

编辑2

我想要的是整个跟踪(微服务 1 -> 微服务 2 -> 数据库)出现在同一跟踪下,具有不同的跨度。与此类似的东西:

一个新的

0 投票
1 回答
415 浏览

stackdriver - Spring-Cloud-Gateway 创建的初始 Trace 都命名为“/”,无论路径如何

我已将 sleuth 集成到我的应用程序网关及其背后的服务中。Stackdriver (GKE) 中的跟踪看起来不错,但根跨度始终命名为“/”。例如:

例如

第二个跨度也是由网关创建的,并且具有更好的名称。

如何在我的网关服务中配置 sleuth 以使用不同的命名或修复导致两个跨度的任何原因?

编辑1

我使用 spring-gateway、sleuth 和 gcp 创建了一个最小项目,并编写了一个 LoggingReporter 来打印所有报告的跨度,同时让 GCP 自动配置工作。

StackdriverHttpClientParser名称跨度基于请求 uri。第二个跨度由 TraceWebFilter 基于具有完整 uri 的请求创建。第一个跨度是由HttpClientBeanPostProcessor基于 uri "/" 创建的。

我认为这不是 gcp 问题。这可能是spring-gateway的问题。有趣的是,首先创建了 TraceWebFilter 跨度,但 PostProcessor 仍然是父级。

EDIT2:我在 spring sleuth https://github.com/spring-cloud/spring-cloud-sleuth/issues/1535中创建了一个问题

0 投票
0 回答
201 浏览

java - Cloud Run 上的 Cloud Trace 有什么限制吗?

我正在使用 Java 在 Cloud Run 上构建微服务。所以,我想为这些服务使用 CloudTrace。但它并没有像我预期的那样工作。ADeadlineExceededException被提升。

我可以在本地 PC 上运行相同的服务。而在那个时候,它是没有问题的。我可以在 CloudTrace 上确认跟踪。但是当我将它们部署在 Cloud Run 上时,Tracing 不起作用……你知道吗?

代码如下。我使用 OpenCensus 库。

错误如下。

我尝试了可扩展服务代理。有用。但我想将跟踪作为应用程序的一部分。

0 投票
1 回答
106 浏览

java - 在 Google Cloud Trace 中添加详细的请求信息

我正在构建一个部署在 Google App Engine 上的 Spring Boot 应用程序。为了找出一些奇怪的延迟问题的原因,我想我应该启用 Google Cloud Trace 来查看详细的延迟报告。

添加基本​​跟踪非常简单,因为 GAE 本身就支持这一点。但是,我很难为任何单独的跟踪添加细节。

例如; 以下代码:

我认为在 Cloud Trace UI 中,这将显示一条单独的小延迟线,以便我可以看到总请求时间的哪一部分用于数据库通信。但是,我看不到此类信息:

谷歌云追踪截图

我已经确保通过在它周围添加一些日志条目来调用这个确切的方法。所有日志条目(甚至是try块内的条目)都显示在我的日志中。

我通过将以下内容添加到我的中,将采样率设置为 100% application.ymlspring.sleuth.sampler.probability: 1.0

基本上,我希望在 Cloud Trace UI 上看到的是主要请求下方的第二个栏。像这样:

预期结果

这在 Cloud Trace 中是否可行?我希望它会是因为图表太高了,在我看来,它似乎有空间容纳额外的条形图。如果是,我做错了什么?

谢谢。

0 投票
1 回答
313 浏览

python - 谷歌云跟踪 + Gcloud 登录日志查看器

我一直在使用谷歌云 kubernetes 遇到谷歌云日志记录和谷歌云跟踪问题

我有使用 gcloud pubsub 主题的应用程序,我想统一日志以跟踪每个 pubsub 消息句柄 func 调用

我的 Gcloud 日志记录处理程序代码

我使用与 gcloud 跟踪和日志记录的 opensensus 集成,因此我可以获取 traceId 和 spanId 并将其传递到 gcloud 日志传输,它工作正常,并且日志查看器中的 LogEntry 包含正确的 traceId 和 spanId

我使用 gcloud trace 的代码看起来像

所以,我可以在 Logs Viewer 中查看这些日志,但它们不会在一个跟踪中找到,但是如果我使用 gcloud trace viewer 并通过 traceId 搜索,我会找到这个带有连接日志的跟踪。问:有什么方法可以在日志查看器中显示跟踪,因为它在任何 appengine 服务中显示为 appengine.googleapis.com/Frequest_log?

0 投票
1 回答
389 浏览

spring-boot - Google Cloud Trace 不使用 Sleuth 关联来自 Spring Boot 应用程序的日志

我最近将我的应用程序升级到 Spring Boot 2.4.2、Cloud 2020.0.0,按照迁移指南更改 Spring Cloud GCP 依赖项:https ://googlecloudplatform.github.io/spring-cloud-gcp/2.0.0/reference /html/index.html#migration-guide-from-spring-cloud-gcp-1-x-to-2-x

关于应用程序,一切似乎都运行良好。我可以看到传播 trace-id 标头的微服务之间的调用:

网关:

服务1:

在 Google Cloud Trace 控制台中,我可以看到跟踪 ID 0bc6b9664e6604e2

在此处输入图像描述

但是请注意消息“找不到此跟踪的日志”。

此外,跟踪日志查看链接投诉:

在此处输入图像描述

如果我打开链接,它只是按时间戳查看,而不是使用相关跟踪 ID。

有趣的是,如果我直接在 GCP Logging 视图中查找日志语句,跟踪 id 就在那里:

在此处输入图像描述

然后我可以运行 GCP Logging 查询以正确查找所有日志:

在此处输入图像描述

显然一切似乎都很好。您能说出为什么 GCP Trace 无法与 GCP Logging 相关联吗?

0 投票
1 回答
91 浏览

google-cloud-platform - 从同一 GCP 项目中的不同 gke 集群中过滤 Google Cloud Traces 中的信息

我有一个 GCP 项目,其中有两个 GKE 集群,一个用于开发和预生产工作负载,另一个用于生产。

我正在使用 Google Cloud Trace 来关联不同 Spring Boot 微服务调用的信息。

问题是 Trace 列表视图同时显示了来自两个集群的所有调用,因此很难将生产调用与其他集群区分开来:

在此处输入图像描述

有没有办法过滤来自不同集群的调用?

如果没有,一种解决方案是将 GKE 生产集群隔离在其自己的 GCP 项目中。这是一个好习惯吗?

0 投票
0 回答
123 浏览

node.js - 如何像跟踪 HTTP 请求一样跟踪 gcp pubsub?

我有多个用 nodejs 编写的应用程序。

我正在尝试使用google-trace监控应用程序。我能够成功获取 HTTP 请求的跟踪。但是我有一些应用程序正在从 pubsub 订阅中提取事件,所以这超出了 HTTP 请求响应。我还有一些由 firestore 集合触发的云功能,即使这些执行没有被跟踪。

google-trace 包不会自动跟踪 pubsub 的东西。它在这里说。

我想要做的是以这种方式在我的 pubsub-subscription-worker 中添加一个自定义跨度

是否可以使用 google-trace 跟踪 pubsub 事件?如果是,我错过了什么?

如果没有,是否可以通过任何其他监控/APM 来做到这一点?