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”作为标记

enter image description here

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

似乎每个受监视的资源都有其自己的标记集,即:BigQuery资源使用protoPayload.authenticationInfo.principalEmail作为标记。但是我找不到指定自己的资源的方法

有人有处理此类问题的经验吗?

预先感谢

解决方法

我找到的最接近的解决方案是在扩展的日志条目中,单击JSON表示形式中的一个字段。在结果面板中,选择将字段添加到摘要行enter image description here

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

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

,

我已代表您向产品团队提交了功能请求,他们将评估实现适合您的用例的功能的可能性,您可以继续进行此PIT [1],在此您可以也可以从团队那里获得更多更新。

请记住,没有ETA,也不能保证会实施。但是,请随时直接在PIT上要求更新,如果您的回答被接受,对您有帮助,我将不胜感激。

[1] https://issuetracker.google.com/172667238