Terraform配置AWS CloudWatch日志指标过滤器的无效模式错误排查
解决AWS CloudWatch日志指标过滤器「Invalid metric filter pattern」错误
你的错误根源在于CloudWatch日志过滤器的语法不符合AWS规范,以下是修正后的配置和语法说明:
修正后的Terraform配置
resource "aws_cloudwatch_log_metric_filter" "log_count_metric_filter" { name = "logGroupCount" // 正确的过滤器模式:单大括号包裹,多条件空格分隔,通配符用* pattern = "{ $.level = * $.logger = * }" log_group_name = "myLogGroup" metric_transformation { name = "logErrorCount" namespace = "logSpace" value = "1" dimensions = { level = "$.level" logger = "$.logger" } } }
语法错误解析与规则说明
- 大括号结构错误:你原来用了两个独立的
{},CloudWatch要求所有JSON过滤条件必须放在单个大括号内,多个条件用空格分隔表示逻辑AND。 - 通配符写法错误:
<*>不是CloudWatch的合法通配符,匹配任意值直接用*即可。 - 字段匹配规则:
- 匹配任意非空值:
$.字段名 = * - 匹配特定字符串值:
$.level = "ERROR"(注意要加双引号) - 忽略字段值只检查存在性:
$.level(仅当日志中存在该字段时匹配)
- 匹配任意非空值:
扩展场景示例
如果要仅捕获level为ERROR的日志,模式可以写成:
{ $.level = "ERROR" $.logger = * }
内容的提问来源于stack exchange,提问作者Sarangan
相关产品推荐
相关产品推荐

