【发布时间】: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