【问题标题】:GCP Logs-based Metrics don't work with regex filterGCP 基于日志的指标不适用于正则表达式过滤器
【发布时间】:2020-08-28 06:48:53
【问题描述】:

我正在尝试在 GCP 中创建一个基于日志的指标,以用于警报规则(StackDriver,现在是 GCP 的一部分)。来源是 HTTPS (L7) LB 日志。经过大量试验和错误后,我发现如果我使用基于正则表达式的过滤器,我的指标不起作用(注意:基于正则表达式的标签提取工作,在下面描述的更改之后)。

具体来说,如果我的过滤器看起来像这样:

httpRequest.status=403
httpRequest.requestMethod="GET"
httpRequest.requestUrl=~"^.*some/regex/pattern/.*$"

单击“提交过滤器”后,我确实看到了过滤后的日志条目,当我设置基于正则表达式的标签提取器时,我还看到了示例记录/标签,但在指标资源管理器中,时间序列中没有任何数据.但是,如果我更改过滤器以进行纯全文子字符串匹配,即,

httpRequest.status=403
httpRequest.requestMethod="GET"
"some/substring/match"

它确实有效 - 我确实在指标资源管理器中看到了时间序列。

请注意,这不是时间问题,我还不够耐心。通过在两个过滤器之间切换,我可以可靠地使其工作(或不工作)。

这对我来说是个问题,因为我确实需要在请求 URL 上进行正则表达式匹配;子字符串匹配不够复杂,此外,我想确保只匹配请求 URL,而不是引用者。虽然我基本上可以使用更粗略的过滤器(即使这会破坏指标),但这会导致我的警报规则出现另一个问题,因为我无法过滤掉不匹配项——提取的标签没有值,甚至 @ 987654324@ 无法在警报级别过滤掉不匹配项,因为缺少标签值显然与空标签值不同。而且由于日志过滤器过于粗糙而导致的 FP 警报 对我来说是个大问题。

如果这是预期的行为,我将不胜感激提供一个指向突出显示此限制的文档的链接。

【问题讨论】:

  • 您好,请查看this docThe Logs Viewer does not support regular expression searches and there are no special wildcard characters such as * or ?, in either the basic or advanced query interfaces.
  • 您的问题解决了吗?如果是,您能否将您遵循的程序发布为解决方案并接受它?

标签: google-cloud-platform stackdriver google-cloud-stackdriver google-cloud-monitoring


【解决方案1】:

正如之前的评论所指出的,由于在查询中使用了正则表达式,存在与无效查询语法相关的问题。

日志查看器不支持*? 等特殊通配符。

您可以在documentation 中找到更多无效搜索示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 2014-04-12
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2013-05-04
    相关资源
    最近更新 更多