awscc_cloudwatch_composite_alarm (Resource)

The AWS::CloudWatch::CompositeAlarm type specifies an alarm which aggregates the states of other Alarms (Metric or Composite Alarms) as defined by the AlarmRule expression

Example Usage

Example with 2 sub-alarms

Creates a Composite alarm that comprises 2 sub-alarms. Note that the AWS provider resource for aws_cloudwatch_metric_alarm is used.

resource "awscc_cloudwatch_composite_alarm" "example" {
  alarm_name        = "example-composite-alarm"
  alarm_description = "Example of a composite alarm with various actions"

  alarm_rule = "ALARM(${aws_cloudwatch_metric_alarm.cpu_gte_80.alarm_name}) OR ALARM(${aws_cloudwatch_metric_alarm.status_gte_1.alarm_name})"
}

resource "aws_cloudwatch_metric_alarm" "cpu_gte_80" {
  alarm_name        = "cpu-gte-80"
  alarm_description = "This metric monitors ec2 cpu utilization"

  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 2
  metric_name         = "CPUUtilization"
  namespace           = "AWS/EC2"
  period              = 120
  statistic           = "Average"
  threshold           = 80
}

resource "aws_cloudwatch_metric_alarm" "status_gte_1" {
  alarm_name        = "status-gte-1"
  alarm_description = "This metric monitors ec2 status check failed"

  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 2
  metric_name         = "StatusCheckFailed"
  namespace           = "AWS/EC2"
  period              = 120
  statistic           = "Average"
  threshold           = 1
}

Example with 2 sub-alarms and various actions

Creates a Composite alarm that comprises 2 sub-alarms. Note that AWS provider resources for aws_sns_topic and aws_cloudwatch_metric_alarm are used. It also uses different SNS topics for the various alarm actions.

resource "awscc_cloudwatch_composite_alarm" "example" {
  alarm_name        = "example-composite-alarm"
  alarm_description = "Example of a composite alarm with various actions"

  alarm_actions             = [aws_sns_topic.example_alarm_actions.arn]
  ok_actions                = [aws_sns_topic.example_ok_actions.arn]
  insufficient_data_actions = [aws_sns_topic.example_insufficient_data_actions.arn]

  alarm_rule = "ALARM(${aws_cloudwatch_metric_alarm.cpu_gte_80.alarm_name}) OR ALARM(${aws_cloudwatch_metric_alarm.status_gte_1.alarm_name})"
}

resource "aws_sns_topic" "example_alarm_actions" {
  name = "example-alarm-actions"
}

resource "aws_sns_topic" "example_ok_actions" {
  name = "example-ok-actions"
}

resource "aws_sns_topic" "example_insufficient_data_actions" {
  name = "example-insufficient-data-actions"
}

resource "aws_cloudwatch_metric_alarm" "cpu_gte_80" {
  alarm_name        = "cpu-gte-80"
  alarm_description = "This metric monitors ec2 cpu utilization"

  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 2
  metric_name         = "CPUUtilization"
  namespace           = "AWS/EC2"
  period              = 120
  statistic           = "Average"
  threshold           = 80
}

resource "aws_cloudwatch_metric_alarm" "status_gte_1" {
  alarm_name        = "status-gte-1"
  alarm_description = "This metric monitors ec2 status check failed"

  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 2
  metric_name         = "StatusCheckFailed"
  namespace           = "AWS/EC2"
  period              = 120
  statistic           = "Average"
  threshold           = 1
}

Example with actions suppressor

Creates a Composite alarm with an actions suppressor. Note that AWS provider resources for aws_sns_topic and aws_cloudwatch_metric_alarm are used.

resource "awscc_cloudwatch_composite_alarm" "example" {
  alarm_name        = "example-composite-alarm"
  alarm_description = "Example of a composite alarm with actions suppressor"

  actions_suppressor                  = aws_cloudwatch_metric_alarm.cpu_gte_80.alarm_name
  actions_suppressor_extension_period = 60
  actions_suppressor_wait_period      = 60

  alarm_actions = [aws_sns_topic.example_alarm_actions.arn]

  alarm_rule = "ALARM(${aws_cloudwatch_metric_alarm.cpu_gte_80.alarm_name}) OR ALARM(${aws_cloudwatch_metric_alarm.status_gte_1.alarm_name})"
}

resource "aws_sns_topic" "example_alarm_actions" {
  name = "example-alarm-actions"
}

resource "aws_cloudwatch_metric_alarm" "cpu_gte_80" {
  alarm_name                = "cpu-gte-80"
  comparison_operator       = "GreaterThanOrEqualToThreshold"
  evaluation_periods        = 2
  metric_name               = "CPUUtilization"
  namespace                 = "AWS/EC2"
  period                    = 120
  statistic                 = "Average"
  threshold                 = 80
  alarm_description         = "This metric monitors ec2 cpu utilization"
  insufficient_data_actions = []
}

resource "aws_cloudwatch_metric_alarm" "status_gte_1" {
  alarm_name        = "status-gte-1"
  alarm_description = "This metric monitors ec2 status check failed"

  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 2
  metric_name         = "StatusCheckFailed"
  namespace           = "AWS/EC2"
  period              = 120
  statistic           = "Average"
  threshold           = 1
}

Schema

Required

Optional

Read-Only

Nested Schema for tags

Required:

Import

Import is supported using the following syntax:

$ terraform import awscc_cloudwatch_composite_alarm.example <resource ID>