gpt4 book ai didi

node.js - Google Cloud Run 上的 Stackdriver-trace 失败,但在本地主机上工作正常

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:44 25 4
gpt4 key购买 nike

我有一个在 Google Cloud Run 上运行的 Node 服务器。现在我想启用堆栈驱动程序跟踪。当我在本地运行该服务时,我能够在 GCP 中获取跟踪信息。但是,当我作为 Google Cloud Run 运行该服务时,出现错误:

"@google-cloud/trace-agent ERROR TraceWriter#publish: Received error with status code 403 while publishing traces to cloudtrace.googleapis.com: Error: The request is missing a valid API key." 

我确保服务帐户具有跟踪代理角色。

我的 app.js 中的第一行

require('@google-cloud/trace-agent').start();

在本地运行我正在使用包含的 .env 文件

GOOGLE_APPLICATION_CREDENTIALS=<path to credentials.json>

根据https://github.com/googleapis/cloud-trace-nodejs 如果应用程序在 Google Cloud Platform 上运行,系统会自动检测这些值,因此我在 gcp 镜像上没有此凭据

最佳答案

将此库与 Cloud Run 结合使用存在两个挑战:

  1. 尽管有关于自动检测的说明,但 Cloud Run 是一个异常(exception)。尚未自动检测到。 现在可以通过一些显式配置来解决这个问题。
  2. 由于 Cloud Run 服务只有在响应请求之前才拥有资源,因此在撤回 CPU 资源之前可能不会发送排队的跟踪数据。 现在可以通过将跟踪代理配置为尽快刷新来解决此问题
const tracer = require('@google-cloud/trace-agent').start({
serviceContext: {
service: process.env.K_SERVICE || "unknown-service",
version: process.env.K_REVISION || "unknown-revision"
},
flushDelaySeconds: 1,
});

快速查看后,我不知道如何触发跟踪刷新,但较短的超时应该有助于避免在看到 Stackdriver 中出现的跟踪数据时出现一些延迟。

编辑:虽然理论上很好,但实际上,CPU 撤回仍然存在明显的竞争条件。已提交 https://github.com/googleapis/cloud-trace-nodejs/issues/1161看看我们是否可以找到更一致的解决方案。

关于node.js - Google Cloud Run 上的 Stackdriver-trace 失败,但在本地主机上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com