创建含字段存在检查过滤的google_monitoring_alert_policy遇400错误
解决Terraform创建Google Monitoring告警策略时
:*语法报错的问题 问题原因
虽然Google Logs Explorer支持用myField:*这种简写语法检查字段是否存在,但Google Monitoring API(Terraform调用的底层接口)对告警策略的日志过滤器有更严格的语法要求,不支持这种简写形式,因此返回400参数无效错误。
解决方案
把过滤器里的myField:*替换为标准的exists()函数语法,这是Google日志查询语言的官方标准写法,同时兼容Monitoring API:
修改后的Terraform配置片段:
resource "google_monitoring_alert_policy" "my-alert-policy" { ... conditions { ... condition_matched_log { filter = <<-EOT exists(myField) EOT ... } } ... }
验证说明
exists(myField)的作用和myField:*完全一致,都是检查LogEntry中是否存在指定字段- 这个语法同时兼容Logs Explorer和Monitoring API,既能在UI中正常查询,也能通过Terraform成功创建告警策略
内容的提问来源于stack exchange,提问作者joe
相关产品推荐
相关产品推荐

