我已配置了 Amazon CloudWatch 警报来触发 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 策略。在我的 CloudWatch 警报更改状态时,为什么没有触发 Amazon EC2 Auto Scaling 策略?

当 CloudWatch 警报转换为新警报状态(OKALARMINSUFFICIENT_DATA)时,警报调用该状态的任何已配置操作。对于 Amazon EC2 Auto Scaling 操作,警报会在警报保持新状态的每个时段中继续调用配置的操作。

CloudWatch 警报状态更改未触发 Amazon EC2 Auto Scaling 策略的常见原因包括:

  • 没有为 CloudWatch 警报启用 Auto Scaling 操作,这会阻止调用扩展策略。
  • Auto Scaling 组存在冲突的简单扩展策略或步进扩展策略,这会阻止触发一些策略。
  • Auto Scaling 组的生命周期不完整,这阻止了简单扩展策略的应用。在超时或者进行 CompleteLifecycleAction API 或 AWS 命令行界面 (AWS CLI) 调用时,生命周期挂钩完成。

在启动之前,请确保 CloudWatch 警报转换为 ALARM 状态。如果警报的配置与所监控指标的阈值不匹配,则警报可能无法转换为 ALARM 状态。如果警报未更改状态,它不会触发 Amazon EC2 Auto Scaling 策略。有关如何评估 CloudWatch 警报的信息,请参阅评估警报

在达到预期值时,通过检查警报的阈值,验证您的 CloudWatch 警报是否已进入 ALARM 状态。增加或减少阈值以匹配您所需的值。此外,检查警报的周期评估周期。您可能需要编辑警报周期评估周期以按预期触发 Amazon EC2 Auto Scaling 策略。有关如何确保警报触发操作的更多信息,请参阅我如何确保 CloudWatch 警报触发操作?​。

重要说明:请确保您未暂停 Amazon EC2 Auto Scaling 组的扩展过程(AlarmNotificationLaunchTerminate)。如果已暂停,请确保恢复这些扩展过程

检查是否为 CloudWatch 警报启用了 Amazon EC2 Auto Scaling 操作

如需让 CloudWatch 警报调用 Amazon EC2 Auto Scaling 策略,必须在警报的配置中启用 ActionsEnabled 参数。请确保警报配置中的 ActionsEnabled 参数为 true

注意:如果您使用 CloudWatch 控制台创建或更新警报,默认情况下 ActionsEnabled 参数设置为 true

使用 AWS CLI 检查和启用警报操作:

1.    使用 describe-alarms 检查当前配置,如下所示。请确保将 myalarm 替换为您警报的 ID。

aws cloudwatch describe-alarms --alarm-names "myalarm" --query 'MetricAlarms[].ActionsEnabled'

2.    检查输出。如果 ActionsEnabled 参数未设置为 true,请使用 enable-alarm-actions 启用警报操作,如下所示。请确保将 myalarm 替换为您警报的 ID。

aws cloudwatch enable-alarm-actions --alarm-names myalarm

使用 CloudWatch API 检查和启用警报操作:

1.    使用 DescribeAlarms 检查当前配置。

2.    如果没有为警报启用操作,请使用 EnableAlarmActions 启用操作。

检查您 Amazon EC2 Auto Scaling 组的简单扩展和步进扩展策略

使用 Amazon EC2 控制台检查组的扩展策略:

1.    登录 Amazon EC2 控制台

2.    在导航窗格的 Auto Scaling 下,选择 Auto Scaling 组

3.    在内容窗格中,选择您的 Auto Scaling 组。

4.    选择扩展策略视图。

5.    记录策略类型步进扩展简单扩展)。

如需使用 AWS CLI 检查扩展策略,请对您的 Auto Scaling 组的 ID 使用命令 describe-policies--policy-types 参数。输出中列出每种类型(SimpleScaling StepScaling)的策略。

如需使用 API 检查扩展策略,请调用 DescribePolicies 并使用参数 PolicyTypes。输出中列出每种类型(SimpleScalingStepScaling)的策略。

如果您有一个生效的简单扩展策略,则除非满足以下条件,否则不会调用任何其他简单扩展策略:

  • 当前生效的简单扩展策略已完成。
  • Amazon EC2 Auto Scaling 策略的冷却时间已过。简单扩展策略遵循 Amazon EC2 Auto Scaling 策略的默认或指定冷却时间。

注意:简单扩展策略的执行不会影响任何步进扩展策略的执行。确保不会同时应用有冲突的策略。

检查您 Amazon EC2 Auto Scaling 策略中的 Auto Scaling 生命周期挂钩

Auto Scaling 生命周期挂钩生效时,不执行简单扩展策略。如果您在 Auto Scaling 组中使用简单扩展策略,请确保停止任何生命周期挂钩。

注意:如果有生命周期挂钩在进行中,步进扩展策略仍会触发。

确保所有生命周期挂钩在其全局超时时段或检测信号超时时段到期之后已完成,其结果为 CONTINUEABANDON

使用 Amazon EC2 控制台检查生命周期挂钩操作:

1.    登录 Amazon EC2 控制台

2.    在导航窗格的 Auto Scaling 下,选择 Auto Scaling 组

3.    在内容窗格中,选择您的 Auto Scaling 组。

4.    选择 Activity History (活动历史记录) 视图。

5.    检查任何正在进行的生命周期挂钩操作的活动。

6.    如需了解结束生命周期挂钩的步骤,请参阅完成生命周期挂钩。如需使用 AWS CLI 完成生命周期挂钩操作,请使用命令 complete-lifecycle-action。如需使用 API 完成生命周期挂钩操作,请进行 CompleteLifecycleAction 调用。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 12 月 26 日