想从 Google Cloud Profiler 获取构建信息

Posted

技术标签:

【中文标题】想从 Google Cloud Profiler 获取构建信息【英文标题】:Would like to get build information from Google Cloud Profiler 【发布时间】:2020-06-25 01:06:37 【问题描述】:

我正在使用 Google Cloud Profiler(位于 https://console.cloud.google.com/profiler)并且想知道我的分析数据如何在我的应用程序的不同版本中发生变化。

一种方法是检查特定提交在生产中运行的日期范围,但这很耗时,因为我必须:

    获取发布的开始日期/时间,确定下一次发布的日期/时间 通过上面的链接在分析器界面中手动设置这些日期

这真的不可怕,但如果能够像在 Cloud Build 中那样设置 BUILD_ID 环境变量,然后能够从 UI 访问它,那就太好了。这样的事情可能吗?还是我的方法是目前最好的方法?

【问题讨论】:

您可以从此页面提交功能请求。 cloud.google.com/support/docs/issue-trackers#trackers-list 【参考方案1】:

比较不同服务版本可能是一种更简单、更精确的方法(而不是使用时间间隔来选择配置文件)。要跨服务版本进行比较,分析代理需要设置服务版本。

可以在传递给代理的配置中指定服务版本(对于 Go、Python 或 Node.js 代理)或通过-cprof_service_version 标志(对于 Java 代理)。如果使用传递给代理的配置设置服务版本(适用于 Go、Python 和 Node.js 代理),使用标志或命令行参数设置服务版本可能会很方便,以便源每个新版本都不需要更新代码。

如果在 Knative 或 App Engine 标准上运行,则服务版本应自动填充。这些环境分别设置了K_REVISIONGAE_VERSION 环境变量,并且分析代理(对于所有支持的语言)使用这些环境变量来填充服务版本。如果在另一个环境中运行并且修改源代码不方便或不可行,则可以在运行应用程序的环境中设置K_REVISIONGAE_VERSION环境变量,并启用代理以指定服务版本。

我的理解是BUILD_ID 在构建时可用,但在运行时不可用,所以我不知道代理是否可以直接使用它。

(披露:我在 Google 从事 Cloud Profiler 工作)

【讨论】:

【参考方案2】:

您可以为此设置服务版本。请参阅代理文档了解如何为支持的语言设置它。

例如,this 显示使用 ServiceVersion 表示 Go 服务。

【讨论】:

以上是关于想从 Google Cloud Profiler 获取构建信息的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Profiler Java 代理的日志记录级别

为啥@google-cloud/profiler 在 GKE 实例中运行时会抛出“permission_denied”错误?

Google Cloud Profiler 显示 [未知 - 无 Python 线程状态]

用于 Google Cloud 外部服务器的 agentPath 上的 Stackdriver GCP 多个代理

在 Docker 中安装 GCP Profiler 代理时遇到问题

在 Google Cloud 项目上启用结算功能