首页 > 解决方案 > GCP Stackdriver 自定义代码

问题描述

我正在开发一个将日志发送到 GCP StackDriver 的应用程序。我想在我的日志条目中本地放置自定义“标签”(或汇总字段)。我正在寻找一种不依赖于在控制台中定义自定义汇总字段的解决方案,因为这些字段不是永久性的,也不是项目范围的。

我意识到一些记录器显示了标签。例如,GCF 日志将显示其execution_id. 使用以下代码段,我可以验证显示的标签是否取决于记录器的名称:

from google.cloud import logging

client = logging.Client()

client.logger(name="custom").log_text("foobar", labels={"execution_id": "foo"})
client.logger(name="cloudfunctions.googleapis.com%2Fcloud-functions").log_text("foobar", labels={"execution_id": "foo"})

如果您在“foobar”上过滤日志,您会看到只有第二个条目有“foo”作为标签。 在此处输入图像描述

该标签与label.execution_id代码中指定的标签匹配。问题是,我无法添加自定义标签,如果我添加另一个标签不是execution_id,它不会显示为标签(但仍可在日志正文中找到)。

看起来每个受监控的资源都有自己的一组标签,即:BigQuery 资源protoPayload.authenticationInfo.principalEmail用作标签。但我找不到指定我自己的资源的方法。

有人对这类问题有一些经验吗?

提前致谢

标签: pythonlogginggoogle-cloud-platformstackdriver

解决方案


我找到的最接近的解决方案是在扩展的日志条目中,单击 JSON 表示中的一个字段。在结果面板中,选择将字段添加到汇总行,在此处输入图像描述

要获取有关此主题的更多信息,请参阅此链接

此外,我发现为产品团队打开了一个功能请求,在这种情况下,用户希望通过 Dataflow 作业自定义标签在 Stackdriver 中过滤掉,该参考可能对您的用例有用,没有共享 ETA,也不能保证它的实现


推荐阅读