google-cloud-platform - 基于 GCP 日志的指标不适用于正则表达式过滤器

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

我正在尝试在 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,而不是引用者。虽然我基本上可以使用更粗略的过滤器(即使它会破坏指标),但这会导致我的警报规则出现另一个问题,因为我无法过滤掉不匹配的内容——提取的标签没有值,甚至 label !=~ [[:space:]]* 无法在警报级别过滤掉不匹配项,因为缺少的标签值显然与空标签值不同。由于过于粗略的日志过滤器而导致的 FP 警报对我来说是个大问题。

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

最佳答案

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

日志查看器不支持特殊的通配符,如 *?

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

关于google-cloud-platform - 基于 GCP 日志的指标不适用于正则表达式过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61751554/

相关文章:

google-cloud-platform - Stackdriver webhook token 身份验证和最佳实践

python-3.x - stackdriver 日志记录客户端库缺少 python 的严重性

google-app-engine - 无法导出到监控服务,因为 3 导致 : GaxError RPC failed,

google-cloud-platform - 使用 Stackdriver 的 Google IOT 每设备心跳警报

kubernetes - 我们可以关闭 Kubernetes 集群而不删除它们吗?

.net - 使用 .NET 应用程序将数据从外部托管写入 GCP BigTable

python - 在 python 中,与 stackdriver 通信总是返回成功,不发送任何东西

google-cloud-platform - GKE 错误 : no matches for kind "BackendConfig" in version "cloud.google.com/v1"

php - 如何获取 Google Cloud Platform Stackdriver Logging API 中的 'page size' 选项以返回带有下一页 token 的分页条目

kubernetes - 使用 Google Container Engine (GKE) 和 Stackdriver 监控和提醒 Pod 状态或重启