【问题标题】:AWS CloudWatch Alarm, Help Solving Error - Unchecked: Initial alarm creationAWS CloudWatch 警报,帮助解决错误 - 未选中:初始警报创建
【发布时间】:2018-10-18 21:42:04
【问题描述】:

对于我的按比例缩小的 cloudwatch 警报,我一直处于 INSUFFICENT_DATA 状态。 cloudwatch 警报附加到我的自动缩放组。在过去的 3 天里,我的缩小警报一直处于这种状态,所以它肯定已经完成了初始化。

在我的警报中,它给出了原因

未选中:初始警报创建

这是来自 aws 文档: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html

INSUFFICIENT_DATA - 警报刚刚开始,指标不可用,或者指标没有足够的数据来确定警报状态

这是我的 cloudformation 模板中的一个 sn-p,它可以让 cloudwatch 发出警报。它采用对流层语法,但应该很容易阅读:

template.add_resource(Alarm(
    "CPUUtilizationLowAlarm",
    ActionsEnabled=True,
    AlarmDescription="Scale down for average CPUUtilization <= 30%",
    Namespace="AWS/EC2",
    MetricName="CPUUtilization",
    Statistic="Average",
    Period="300",
    EvaluationPeriods="3",
    Threshold="30",
    Unit="Percent",
    ComparisonOperator="LessThanOrEqualToThreshold",
    AlarmActions=[Ref("ScaleDownPolicy")],
    Dimensions=[
        MetricDimension(
            Name="AutoscalingGroupName",
            Value=Ref("AutoScalingGroup")
        )
    ]
))
template.add_resource(ScalingPolicy(
    "ScaleDownPolicy",                                                      #Simple reference value, nothing special
    AdjustmentType="ChangeInCapacity",                                      #Modify the asg capacity
    AutoScalingGroupName=Ref("AutoScalingGroup"),                           #What asg to modify capacity
    PolicyType="SimpleScaling",                                             #Read about it here: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html
    Cooldown="1700",                                                        #How long to wait before checking status' again
    ScalingAdjustment=Ref("DownscalingCount")                               #(Must be a negative number!!) How much to scale down
))

如您所见,我正在根据 CPUUtilization Amazon EC2 AutoScaling CPUUtilization Alarm- INSUFFICIENT DATA

我做了几乎完全相同的事情,但使用“Step Scaling”而不是“Simple Scaling”,就像上面一样,但它实际上对我有用。这是我的 cloudformation 模板中的一个 sn-p,用于我的步进缩放警报(Scale up):

template.add_resource(Alarm(
    "CPUUtilizationHighAlarm",
    ActionsEnabled=True,
    AlarmDescription="Scale up for average CPUUtilization >= 50%",
    MetricName="CPUUtilization",
    Namespace="AWS/EC2",
    Statistic="Average",
    Period="300",
    EvaluationPeriods="1",
    Threshold="50",
    Unit="Percent",
    ComparisonOperator="GreaterThanOrEqualToThreshold",
    AlarmActions=[Ref("ScaleUpPolicy")],
    Dimensions=[
        MetricDimension(
            Name="AutoScalingGroupName",
            Value=Ref("AutoScalingGroup")
        )
    ]
))
template.add_resource(ScalingPolicy(
    "ScaleUpPolicy",
    AdjustmentType="ChangeInCapacity",
    AutoScalingGroupName=Ref("AutoScalingGroup"),                           #What group to attach this to
    EstimatedInstanceWarmup="1700",                                         #How long it will take before instance is ready for traffic
    MetricAggregationType="Average",                                        #Breach if average is above threshold
    PolicyType="StepScaling",                                               #Read above step scaling here: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html
    StepAdjustments=[                                                       
        StepAdjustments(
            MetricIntervalLowerBound="0",                                   #From 50 (Defined in alarm as 50% CPU)
            MetricIntervalUpperBound="20",                                  #To 70%
            ScalingAdjustment="1"                                           #Scale up 1 instance
        ),
        StepAdjustments(
            MetricIntervalLowerBound="20",                                  #from 70%
            MetricIntervalUpperBound="40",                                  #to 90%
            ScalingAdjustment="2"                                           #Scale up 2 instances
        ),
        StepAdjustments(
            MetricIntervalLowerBound="40",                                  #From 90% or above (Defined in alarm)
            ScalingAdjustment="3"                                           #Scale up 2 instances
        )
    ]
))

我对我在缩小警报中的配置错误感到迷茫。如果有人有任何建议或帮助,那就太好了。

【问题讨论】:

  • 我运行了 cli 命令:“aws cloudwatch list-metrics --namespace=AWS/EC2”并且在该列表中找到了“CPUUtilization”。
  • 我尝试将简单缩放缩减策略切换为逐步缩放,但它没有解决任何问题。看起来也没有任何指标被发送到我的警报。 CPU 利用率的预览窗口没有显示任何活动。

标签: amazon-web-services amazon-cloudwatch autoscaling


【解决方案1】:

我发现了问题...

错误就在这里:

MetricDimension(
        Name="AutoscalingGroupName",
        Value=Ref("AutoScalingGroup")
    )

Name 应该是 AutoScalingGroupName 而不是 AutoscalingGroupName。它将尝试生成一个新维度,并且不会正确地从自动缩放组中拉取。所以它不会抛出错误,并且会旋转一切正常它只是没有数据可以提取。因此将保持INSUFFICENT_DATA 状态直到时间结束。

大写“S”...

【讨论】:

    【解决方案2】:

    谢谢,实际上我在 Terraform 的维度字段中使用 InstanceID 而不是 InstanceId 时遇到了这个问题。从故障排除的角度来看,我创建了一个类似于 Terraform 参数的手动警报,然后使用 AWS CLI 命令(例如以下命令)来比较 JSON 输出的工作警报和非工作警报。

    aws cloudwatch describe-alarms --alarm-names &lt;ALARM_NAME&gt; --region=us-east-1

    另外使用诸如

    之类的命令

    aws cloudwatch list-metrics --namespace AWS/ElasticMapReduce --metric-name CoreNodesRunning --query 'Metrics[0].Dimensions[].Name' --region=us-east-1

    有助于确定可以使用哪些指标维度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-25
      • 2019-07-14
      • 1970-01-01
      • 2021-10-19
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多