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

AWS CloudWatch告警配置异常:日志组引用是否存在问题?

问题诊断与修复方案

核心问题

你的告警处于"数据不足"状态,主要原因是日志组引用错误,同时存在告警与指标过滤器的配置不匹配问题,具体如下:

1. 日志组引用错误

你的Lambda实际日志组是/aws/lambda/error-test-lambda,但Terraform配置中:

  • 新建了无关的日志组/aws/lambda/local-error-test
  • 指标过滤器绑定到了这个新建的日志组,而非Lambda实际使用的日志组

这导致指标过滤器无法捕获Lambda产生的日志,自然没有数据流入告警。

2. 告警与指标过滤器配置不匹配

  • 告警的namespace设置为IncomingLogEvents,但指标过滤器的metric_transformation.namespace是mycloudwatchalarmtest,两者不一致
  • 告警的metric_name引用指标过滤器的名称MyErrorFilter-we-care-about,但指标过滤器实际输出的指标名称是errors-found-alarm,完全不匹配

修正后的Terraform配置

# 直接引用Lambda已存在的日志组,无需新建无关日志组
resource "aws_cloudwatch_log_metric_filter" "error-we-care-about-metric-filter"{
  name            = "MyErrorFilter-we-care-about"
  log_group_name  = "/aws/lambda/error-test-lambda" # 替换为Lambda实际日志组
  pattern         = "HIPPOPOTAMUS"

  metric_transformation {
    name        = "errors-found-alarm"
    namespace   = "mycloudwatchalarmtest"
    value       = 1
  }
}

resource "aws_cloudwatch_metric_alarm" "error-we-care-about-alarm" {
    alarm_name          = "error-we-care-about"
    metric_name         = aws_cloudwatch_log_metric_filter.error-we-care-about-metric-filter.metric_transformation[0].name # 引用指标的实际名称
    threshold           = 0
    statistic           = "Sum"
    comparison_operator = "GreaterThanThreshold"
    datapoints_to_alarm = 1 # 数字类型无需加引号
    evaluation_periods  = 1
    period              = 60
    namespace           = aws_cloudwatch_log_metric_filter.error-we-care-about-metric-filter.metric_transformation[0].namespace # 保持与指标命名空间一致
    actions_enabled     = true # 布尔类型无需加引号
    alarm_description   = "This metric monitors API call errors"
}

额外注意事项

  • 确认Lambda日志中确实包含HIPPOPOTAMUS关键词,否则指标过滤器不会生成数据
  • 修正配置后执行terraform apply更新资源,等待1-2分钟让CloudWatch完成数据同步,告警状态会从"数据不足"转为正常监测状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:11:07