配置 cloudwatch “空闲”警报

Posted

技术标签:

【中文标题】配置 cloudwatch “空闲”警报【英文标题】:Configuring a cloudwatch "idle" alarm 【发布时间】:2021-04-26 08:05:15 【问题描述】:

我想配置一个 cloudwatch 警报,当检测到自动扩缩组中的一个实例“空闲”时,该警报可以调低自动扩缩组的所需容量。空闲可以定义为,例如,CPU 利用率持续低于 1%。

我正在使用 terraform,所以现在我的警报配置如下。

resource "aws_cloudwatch_metric_alarm" "backend-x86_64" 
  alarm_name          = "backend-x86_64-is-idle"
  comparison_operator = "LessThanOrEqualToThreshold"
  evaluation_periods  = "4"
  period              = "120"
  metric_name         = "CPUUtilization"
  namespace           = "AWS/EC2"
  statistic           = "Average"
  threshold           = "1"
  treat_missing_data  = "notBreaching"

  dimensions = 
    AutoScalingGroupName = aws_autoscaling_group.backend-x86_64.name
  

  alarm_description = "This metric monitors ec2 cpu utilization"
  alarm_actions     = [aws_autoscaling_policy.backend-x86_64-shutdown.arn]

但是,它不起作用。下面是 CPU 利用率随时间变化的图表——它在 2 小时内处于 0%,但它没有触发。我怀疑这是因为我误解了“evaluation_periods”和“period”的交互方式。

谁能解释一下如何配置 terraform /cloudwatch 来做我想做的事?

【问题讨论】:

您有很多缺失的数据被视为notBreaching。我认为您需要调整此设置。 【参考方案1】:

这些差距表明您的实例仅具有基本监控功能,其中数据在 5 分钟内可用。

根据您当前的监控策略,该策略在 8 分钟内检查 4 个数据点的 CPU 利用率是否低于 1%,这意味着每 2 分钟一个数据点加上缺失的数据被视为良好,这意味着您的警报永远不会被触发.


启用Detailed Monitoring 会以 1 分钟的间隔为您获取数据,您应该能够正确获取此警报。

【讨论】:

以上是关于配置 cloudwatch “空闲”警报的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Cloudwatch 警报 - 每 30 分钟检查 5 个错误

Terraform Cloudwatch 警报 - 维度配置

如何将 CloudWatch 警报配置为每 X 分钟评估一次

CloudWatch 自定义 EC2 内存指标和带有 AutoScaling 策略的警报

针对 Auto Scaling 组的每个实例的 AWS Cloudwatch 警报

是否可以确定在 cloudwatch aws 上发送警报的时间?