You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS日志错误过滤配置疑问:告警始终显示数据不足

问题分析与修复方案

你的配置不完全正确,核心问题有两个:

  1. 日志指标过滤器默认只在匹配到error日志时才生成指标数据,没匹配到的话不会输出0值,导致CloudWatch告警在无错误时没法判定为OK,只能显示Insufficient data。
  2. 日志过滤器代码里metricNamespace: 'my-dev-log这行少了闭合引号,属于语法错误,部署的时候会报错。

修复步骤

1. 先补全语法错误

把metricNamespace的引号补上:

const adminErrorFilter = new logs.MetricFilter(this, 'admin-metric-error-filter', {
  logGroup: props!.adminLogGroup,
  metricNamespace: 'my-dev-log', // 补上闭合引号
  metricName: 'admin-error',
  filterPattern: logs.FilterPattern.anyTerm("error","Error","ERROR"),
  metricValue: "1",
});

2. 让指标始终有数据输出

要让告警在无错误时显示OK,得让指标在没有匹配日志时也输出0值,有两种实现方式:

方式一:在告警里配置零填充

修改告警的metric配置,指定统计方式并开启零填充,同时设置无数据时视为OK:

const adminErrorAlarm = new cloudwatch.Alarm(this, 'admin-error-alarm', {
  alarmName: 'my-alarm',
  metric: adminErrorFilter.metric()
    .withStatistic('Sum')
    .withPeriod(cdk.Duration.minutes(1))
    .withFill(0), // 无数据时填充0
  threshold: 1,
  evaluationPeriods: 1,
  treatMissingData: cloudwatch.TreatMissingData.NOT_BREACHING, // 无数据时视为OK状态
});

方式二:在MetricFilter里直接配置默认值(部分区域支持)

如果你的AWS区域支持,可以在MetricFilter中添加defaultValue,让无匹配时自动输出0:

const adminErrorFilter = new logs.MetricFilter(this, 'admin-metric-error-filter', {
  logGroup: props!.adminLogGroup,
  metricNamespace: 'my-dev-log',
  metricName: 'admin-error',
  filterPattern: logs.FilterPattern.anyTerm("error","Error","ERROR"),
  metricValue: "1",
  defaultValue: 0, // 无匹配日志时输出0
});

关键说明

  • treatMissingData.NOT_BREACHING:告诉CloudWatch,当指标没有数据时,把告警状态判定为未触发(也就是OK),而不是Insufficient data。
  • 零值填充保证指标周期内总有数据,让告警能正常评估状态。

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:12:15