gpt4 book ai didi

google-cloud-platform - Stackdriver Trace 与 Google Cloud Run

转载 作者:行者123 更新时间:2023-12-03 15:47:38 25 4
gpt4 key购买 nike

我一直在深入研究 Google Cloud Run 上的 Stackdriver Trace 集成。我可以让它与代理一起工作,但我被一些问题所困扰。

鉴于

  • Stackdriver 代理将跟踪汇总在一个小缓冲区中并定期发送。
  • 当 Cloud Run 服务未处理请求时,CPU 访问受到限制。
  • Cloud Run 服务没有关闭 Hook ;您无法在关闭前清除缓冲区:容器只会得到 SIGKILL .这是您无法从应用程序中捕获的信号。
  • 运行在请求-响应周期之外发送信息的后台进程似乎违反了Knative Container Runtime contract
  • 日志数据的集合是documented并且不需要我运行代理,但遥测没有这样的解决方案。
  • 我找到了one report使用基于代理的方法在 Cloud Run 上丢失跟踪的人

  • 谷歌是如何做到的

    我进入了 Cloud Endpoints ESP 的源代码(Cloud Run 集成处于测试阶段),看看他们是否以不同的方式解决它,但使用了相同的模式:有一个带有跟踪 (1s) 的缓冲区和它会定期清除。

    问题

    虽然我的跟踪集成似乎在我的测试设置中工作,但当我在生产环境中运行它时,我担心不完整和丢失的跟踪。
  • 这是一个假设的问题还是一个真正的问题?
  • 看起来解决这个问题的正确方法是将遥测写入日志,而不是使用代理进程。 Stackdriver Trace 支持吗?
  • 最佳答案

    Is this a hypothetical problem or a real issue?



    如果您认为 Cloud Run 服务接收单个请求,那么这肯定是一个问题,因为在容器实例的 CPU 受到限制之前,库将没有时间刷新数据。

    但是,在现实生活中的用例中:
  • Cloud Run 服务经常连续或频繁地接收请求,这意味着它的容器实例将要么:持续拥有 CPU,要么不时拥有可用的 CPU。
  • 删除跟踪是可以的:如果由于实例被关闭而没有收集到一些跟踪,则很可能在此之前您已经收集了足够多样化的样本集。此外,您可能只对聚合报告感兴趣,在这种情况下,收集单个跟踪并不重要。

  • 请注意,跟踪库通常自己对要跟踪的请求进行采样,它们很少跟踪 100% 的请求。

    It looks like the right way to approach this is to write telemetry to logs, instead of using an agent process. Is that supported with Stackdriver Trace?



    不,Stackdriver Trace 从发送到其 API 的 span 中获取数据。请注意,要将数据发送到 Stackdriver Trace,您可以使用 OpenCenss 和 OpenTelemetry 等库,不再推荐使用专有的 Stackdriver Trace 库。

    关于google-cloud-platform - Stackdriver Trace 与 Google Cloud Run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59157906/

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