AWS::CloudWatch::CompositeAlarm - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::CloudWatch::CompositeAlarm

AWS::CloudWatch::CompositeAlarm 类型创建或更新复合警报。创建复合警报时,您可以为警报指定一个规则表达式,该表达式考虑您已创建的其他警报的警报状态。只有当规则的所有条件都得到满足时,复合警报才会进入 ALARM(警报)状态。

在复合警报的规则表达式中指定的警报可以包括指标警报和其他复合警报。

使用复合警报可以减少警报噪音。您可以创建多个指标警报,还可以创建复合警报并仅为复合警报设置警报。例如,您可以创建一个复合警报,只有当多个基础指标警报处于 ALARM 状态时,该复合警报才进入 ALARM 状态。

目前,复合警报可以执行的唯一警报操作是通知 SNS 主题。

此操作创建警报时,警报状态立即设置为 INSUFFICIENT_DATA。然后,将评估警报并正确设置其状态。然后执行与新状态关联的所有操作。对于复合警报,只有在创建之后的此初始时间内,警报可以处于 INSUFFICIENT_DATA 状态。

在更新现有警报时,其状态将保持不变,但更新将完全覆盖该警报之前的配置。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::CloudWatch::CompositeAlarm", "Properties" : { "ActionsEnabled" : Boolean, "AlarmActions" : [ String, ... ], "AlarmDescription" : String, "AlarmName" : String, "AlarmRule" : String, "InsufficientDataActions" : [ String, ... ], "OKActions" : [ String, ... ] } }

YAML

Type: AWS::CloudWatch::CompositeAlarm Properties: ActionsEnabled: Boolean AlarmActions: - String AlarmDescription: String AlarmName: String AlarmRule: String InsufficientDataActions: - String OKActions: - String

属性

ActionsEnabled

指示在对复合警报的警报状态进行任何更改期间是否应执行操作。默认值为 TRUE。

必需:否

类型:布尔值

Update requires: No interruption

AlarmActions

当此警报从任何其他状态转换为 ALARM 状态时,要执行的操作。每个操作都被指定为一个Amazon 资源名称 (ARN)。有关创建警报以及可指定的操作的更多信息,请参阅 Amazon CloudWatch API 参考 中的 PutCompositeAlarm

必需:否

类型:字符串列表

Update requires: No interruption

AlarmDescription

复合警报的描述。

必需:否

类型:字符串

Update requires: No interruption

AlarmName

复合警报的名称。该名称在您 AWS 账户内必须是唯一的。

必需:是

类型:字符串

Update requires: Replacement

AlarmRule

一个表达式,指定要评估哪些其他警报以确定此复合警报的状态。对于您引用的每个警报,您需要指定一个函数来指定警报是否需要处于 ALARM 状态、OK 状态或 INSUFFICIENT_DATA 状态。您可以使用运算符(AND、OR 和 NOT)在单个表达式中组合使用多个函数。您可以使用括号对表达式中的函数进行逻辑分组。

您可以使用警报名称或 ARN 引用要评估的其他警报。

函数可包含以下内容:

  • 如果指定的警报处于 ALARM 状态,则 ALARM("alarm-name or alarm-ARN") 为 TRUE。

  • 如果警报处于 OK 状态,则 OK("alarm-name or alarm-ARN") 为 TRUE。

  • 如果指定的警报处于 INSUFFICIENT_DATA 状态,则 INSUFFICIENT_DATA("alarm-name or alarm-ARN") 为 TRUE。

  • TRUE 始终计算为 TRUE。

  • FALSE 始终计算为 FALSE。

TRUE 和 FALSE 对于测试复杂的 AlarmRule 结构和测试警报操作很有用。

有关 AlarmRule 语法的更多信息,请参阅 Amazon CloudWatch API 参考 中的 PutCompositeAlarm

必需:是

类型:字符串

Update requires: No interruption

InsufficientDataActions

当此警报从任何其他状态转换为 INSUFFICIENT_DATA 状态时,要执行的操作。每个操作都被指定为一个Amazon 资源名称 (ARN)。有关创建警报以及可指定的操作的更多信息,请参阅 Amazon CloudWatch API 参考 中的 PutCompositeAlarm

必需:否

类型:字符串列表

Update requires: No interruption

OKActions

当此警报从任何其他状态转换为 OK 状态时,要执行的操作。每个操作都被指定为一个Amazon 资源名称 (ARN)。有关创建警报以及可指定的操作的更多信息,请参阅 Amazon CloudWatch API 参考 中的 PutCompositeAlarm

必需:否

类型:字符串列表

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 警报名称,例如 MyCompositeAlarm

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

复合警报的 ARN,例如 arn:aws:cloudwatch:us-west-2:123456789012:alarm/CompositeAlarmName

示例

基于两个度量警报和另一个复合警报的复合警报

此示例创建名为“HighResourceUsage”和“DeploymentInProgress”的复合警报,另外创建名为“HighCPUUsage”和“HighMemoryUsage”的指标警报。“DeploymentInProgress”是一个必须手动设置为 TRUE 或 FALSE 的警报。只有当“HighCPUUsage”和“HighMemoryUsage”均处于 ALARM 状态并且“DeploymentInProgress”为 FALSE 时,“HighResourceUsage”警报才会进入 ALARM 状态。只有“HighResourceUsage”才具有通知 SNS 的警报操作。这样可以减少警报噪音,只有在 CPU 使用率和内存使用率都很高且当前没有正在进行的部署时,您才会收到警报。

JSON

"Resources": { "HighResourceUsage": { "Type": "AWS::CloudWatch::CompositeAlarm", "Properties": { "AlarmName": "HighResourceUsage", "AlarmRule": "(ALARM(HighCPUUsage) OR ALARM(HighMemoryUsage)) AND NOT ALARM(DeploymentInProgress)", "AlarmActions": "arn:aws:sns:us-west-2:123456789012:my-sns-topic", "AlarmDescription": "Indicates that the system resource usage is high while no known deployment is in progress" }, "DependsOn": [ "DeploymentInProgress", "HighCPUUsage", "HighMemoryUsage" ] }, "DeploymentInProgress": { "Type": "AWS::CloudWatch::CompositeAlarm", "Properties": { "AlarmName": "DeploymentInProgress", "AlarmRule": "FALSE", "AlarmDescription": "Manually updated to TRUE/FALSE to disable other alarms" } }, "HighCPUUsage": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "CPUusageishigh", "AlarmName": "HighCPUUsage", "ComparisonOperator": "GreaterThanThreshold", "EvaluationPeriods": 1, "MetricName": "CPUUsage", "Namespace": "CustomNamespace", "Period": 60, "Statistic": "Average", "Threshold": 70, "TreatMissingData": "notBreaching" } }, "HighMemoryUsage": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Memoryusageishigh", "AlarmName": "HighMemoryUsage", "ComparisonOperator": "GreaterThanThreshold", "EvaluationPeriods": 1, "MetricName": "MemoryUsage", "Namespace": "CustomNamespace", "Period": 60, "Statistic": "Average", "Threshold": 65, "TreatMissingData": "breaching" } } }

YAML

Resources: HighResourceUsage: Type: AWS::CloudWatch::CompositeAlarm Properties: AlarmName: HighResourceUsage AlarmRule: (ALARM(HighCPUUsage) OR ALARM(HighMemoryUsage)) AND NOT ALARM(DeploymentInProgress) AlarmActions: arn:aws:sns:us-west-2:123456789012:my-sns-topic AlarmDescription: Indicates that the system resource usage is high while no known deployment is in progress DependsOn: - DeploymentInProgress - HighCPUUsage - HighMemoryUsage DeploymentInProgress: Type: AWS::CloudWatch::CompositeAlarm Properties: AlarmName: DeploymentInProgress AlarmRule: AlarmDescription: Manually updated to TRUE/FALSE to disable other alarms HighCPUUsage: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: CPU usage is high AlarmName: HighCPUUsage ComparisonOperator: GreaterThanThreshold EvaluationPeriods: 1 MetricName: CPUUsage Namespace: CustomNamespace Period: 60 Statistic: Average Threshold: 70 TreatMissingData: notBreaching HighMemoryUsage: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: Memory usage is high AlarmName: HighMemoryUsage ComparisonOperator: GreaterThanThreshold EvaluationPeriods: 1 MetricName: MemoryUsage Namespace: CustomNamespace Period: 60 Statistic: Average Threshold: 65 TreatMissingData: breaching