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

Posted

技术标签:

【中文标题】如何手动指定 X-Cloud-Trace-Context 标头值以关联和跟踪单独的 Cloud Run 请求中的日志?【英文标题】:How can I manually specify a X-Cloud-Trace-Context header value to and correlate and trace logs in separate Cloud Run requests? 【发布时间】:2021-06-24 23:40:13 【问题描述】:

我正在使用 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 自动生成的日志)的推荐解决方案是什么?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我认为您无法覆盖 Cloud Tasks 设置的 HTTP 标头,但您可以覆盖发送到 Stack Driver 的日志记录中的 trace 成员。

因此,您可以在任务负载中包含原始跟踪 ID,然后覆盖执行实际工作的 Cloud Run 端点生成的日志中的 trace

【讨论】:

可以设置标题 - cloud.google.com/tasks/docs/reference/rest/v2/… - 只是不能 X-Google-X-AppEngine-。至少根据文档!

以上是关于如何手动指定 X-Cloud-Trace-Context 标头值以关联和跟踪单独的 Cloud Run 请求中的日志?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 keras flow_from_directory 中手动指定类标签?

Springboot系列(三十三):Springboot如何手动连接库并获取指定表结构|超级详细,建议收藏

手动指定火花执行器的数量

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

Springboot系列(三十三):Springboot如何手动连接库并获取指定表结构|超级详细,建议收藏

Springboot系列(三十三):Springboot如何手动连接库并获取指定表结构|超级详细,建议收藏