Skip to content

cookielab/terraform-aws-ec2-cloudwatch-alarms

Repository files navigation

Terraform module for EC2 cloudwatch alarms

This module will create AWS Cloudwatch metric alarms for instance and system, SNS topic and SNS topic subscription.

Instance reboot alarm has higher default evaluation_periods and datapoints_to_alarm to allow remediation using recover on system check failure when both alarms firing. Once a cloudwatch alarm gets into alarm state, the configured action is performed and message sent to SNS topic.

Alarms have alarm_actions configured as follows:

Instance check System check Action
none
reboot
recover
recover

See Requirements for enabling CloudWatch action based recovery

Usage

module "ec2_alarm" {
  source  = "cookielab/ec2-cloudwatch-alarms/aws"
  version = "~> 0.0"

  ec2_instance_id = "i-08bdd64b00da931ed"

  sns_topic_subscription_email_address = "monitoring@example.com"
}

Requirements

Name Version
terraform >= 1.9, < 2.0
aws ~> 6.0

Providers

Name Version
aws ~> 6.0

Modules

No modules.

Resources

Name Type
aws_cloudwatch_metric_alarm.instance_check resource
aws_cloudwatch_metric_alarm.system_check resource
aws_sns_topic.this resource
aws_sns_topic_subscription.this resource
aws_instance.this data source
aws_region.current data source
aws_sns_topic.this data source

Inputs

Name Description Type Default Required
cloudwatch_alarm_options Cloudwatch Alarms options
object({
instance = optional(object({
actions_enabled = optional(bool, true)
comparison_operator = optional(string, "GreaterThanOrEqualToThreshold")
evaluation_periods = optional(number, 2)
datapoints_to_alarm = optional(number, 2)
period = optional(number, 60)
statistic = optional(string, "Maximum")
threshold = optional(number, 1)
treat_missing_data = optional(string, "notBreaching")
}), {})

system = optional(object({
actions_enabled = optional(bool, true)
comparison_operator = optional(string, "GreaterThanOrEqualToThreshold")
evaluation_periods = optional(number, 6)
datapoints_to_alarm = optional(number, 6)
period = optional(number, 60)
statistic = optional(string, "Maximum")
threshold = optional(number, 1)
treat_missing_data = optional(string, "notBreaching")
}), {})
})
{} no
create_sns_topic Toggle creation of SNS topic for Cloudwatch alarms bool true no
create_sns_topic_subscription Toggle creation of SNS Topic subscription bool true no
ec2_instance_id EC2 Instance ID to create Cloudwatch alarms for string n/a yes
sns_topic_name SNS Topic name to use for alarms string "ec2-cloudwatch-alarm" no
sns_topic_subscription_email_address E-mail address for SNS Topic subscribtion string null no
tags Map of tags to be set on resources map(string) {} no

Outputs

Name Description
sns_topic_name Name of the created SNS Topic

About

Cookielab AWS EC2 Cloudwatch Alarms terraform module

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages