如何在 Google Stackdriver 日志中制作“不包含”过滤器

Posted

技术标签:

【中文标题】如何在 Google Stackdriver 日志中制作“不包含”过滤器【英文标题】:How make a filter "does not contain" in Google Stackdriver logs 【发布时间】:2018-05-20 02:48:39 【问题描述】:

在 Google Stackdriver 高级过滤器中,我可以插入如下内容:

resource.type="container"
resource.labels.cluster_name="mycluster"
textPayload!="Metric stackdriver_sink_successfully_sent_entry_count was not found in the cache."
severity="INFO"
textPayload:(helloworld)

最后一条规则意味着字段 textPayload 应该包含字符串 helloworld。 但我无法找到添加 NOT 运算符的方法。

我会使用类似的东西:

textPayload:!(helloworld)

但不起作用

【问题讨论】:

【参考方案1】:

只需在两行之间添加 AND NOT:

resource.type="container"
resource.labels.cluster_name="mycluster"
textPayload!="Metric stackdriver_sink_successfully_sent_entry_count was not found in the cache."
severity="INFO" AND NOT
textPayload:(helloworld)

【讨论】:

我不确定有什么区别,但对我来说,我必须在 textPayload 前面加上 ~textPayload:" text I dont want" 这样的波浪号才能正常工作【参考方案2】:

顺便说一句,有时会在末尾出现\n

您也可以点击日志,点击子条目并点击隐藏。

【讨论】:

【参考方案3】:

如果您想排除包含“独角兽”一词的条目,可以使用过滤器-text:unicorn

来源:https://cloud.google.com/logging/docs/view/basic-filters

【讨论】:

仅供参考,这行得通。但是,如果您尝试使用相同的查询创建一个指标,然后在指标资源管理器中查看它,则会显示“所选指标无效”。错误。所以@suikoy 的答案可能对那些使用基于日志的指标的人更有效

以上是关于如何在 Google Stackdriver 日志中制作“不包含”过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Stackdriver 日志中制作“不包含”过滤器

如何将本地 Kubernetes 日志发送到 Stackdriver

使用新的 Google Cloud 日志记录 jar 时,日志未显示在 Google Cloud Platform Stackdriver 中

sh 使用google stackdriver日志记录Log Bash命令

在 Kubernetes Engine 上使用 Google Cloud Stackdriver 记录 Python 代码的重复日志条目

Google Log Stackdriver 接收器/路由器