|
| 1 | + |
| 2 | +// CloudWatch Alarms |
| 3 | +resource "aws_cloudwatch_metric_alarm" "high_cpu" { |
| 4 | + count = "${var.enable_scaling_policies}" |
| 5 | + alarm_name = "${title("ec2-asg-${var.name}-high-cpu-utilization")}" |
| 6 | + comparison_operator = "GreaterThanOrEqualToThreshold" |
| 7 | + evaluation_periods = "${var.scaling_policy_high_cpu_evaluation_periods}" |
| 8 | + metric_name = "CPUUtilization" |
| 9 | + namespace = "AWS/EC2" |
| 10 | + period = "${var.scaling_policy_high_cpu_period}" |
| 11 | + statistic = "Average" |
| 12 | + threshold = "${var.scaling_policy_high_cpu_threshold}" |
| 13 | + alarm_description = "This metric monitor ec2 high cpu utilization" |
| 14 | + alarm_actions = ["${aws_autoscaling_policy.cpu_scaling_out.arn}"] |
| 15 | + dimensions { |
| 16 | + AutoScalingGroupName = "${aws_autoscaling_group.this.name}" |
| 17 | + } |
| 18 | +} |
| 19 | + |
| 20 | +resource "aws_cloudwatch_metric_alarm" "low_cpu" { |
| 21 | + count = "${var.enable_scaling_policies}" |
| 22 | + alarm_name = "${title("ec2-asg-${var.name}-low-cpu-utilization")}" |
| 23 | + comparison_operator = "LessThanThreshold" |
| 24 | + evaluation_periods = "${var.scaling_policy_low_cpu_evaluation_periods}" |
| 25 | + metric_name = "CPUUtilization" |
| 26 | + namespace = "AWS/EC2" |
| 27 | + period = "${var.scaling_policy_low_cpu_period}" |
| 28 | + statistic = "Average" |
| 29 | + threshold = "${var.scaling_policy_low_cpu_threshold}" |
| 30 | + alarm_description = "This metric monitor ec2 low cpu utilization" |
| 31 | + alarm_actions = ["${aws_autoscaling_policy.cpu_scaling_in.arn}"] |
| 32 | + dimensions { |
| 33 | + AutoScalingGroupName = "${aws_autoscaling_group.this.name}" |
| 34 | + } |
| 35 | +} |
| 36 | + |
| 37 | +// Auto Scaling Policy |
| 38 | +resource "aws_autoscaling_policy" "cpu_scaling_out" { |
| 39 | + count = "${var.enable_scaling_policies}" |
| 40 | + name = "cpu-scaling-out" |
| 41 | + scaling_adjustment = "${length(var.vpc_zone_identifier)}" |
| 42 | + adjustment_type = "ChangeInCapacity" |
| 43 | + cooldown = "${var.scaling_policy_scaling_out_cooldown}" |
| 44 | + autoscaling_group_name = "${aws_autoscaling_group.this.name}" |
| 45 | +} |
| 46 | + |
| 47 | +resource "aws_autoscaling_policy" "cpu_scaling_in" { |
| 48 | + count = "${var.enable_scaling_policies}" |
| 49 | + name = "cpu-scaling-in" |
| 50 | + scaling_adjustment = -1 |
| 51 | + adjustment_type = "ChangeInCapacity" |
| 52 | + cooldown = "${var.scaling_policy_scaling_in_cooldown}" |
| 53 | + autoscaling_group_name = "${aws_autoscaling_group.this.name}" |
| 54 | +} |
0 commit comments