Skip to content

Commit

Permalink
Merge pull request #205 from ssylver93/feature/WFPREV-26
Browse files Browse the repository at this point in the history
Feature/wfprev 26
  • Loading branch information
ssylver93 authored Oct 15, 2024
2 parents ae50447 + 7148227 commit 831bf0f
Showing 1 changed file with 5 additions and 98 deletions.
103 changes: 5 additions & 98 deletions terraform/autoscaling.tf
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
resource "aws_appautoscaling_target" "wfprev_target" {
service_namespace = "ecs"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.wfprev_main.name}"
scalable_dimension = "ecs:service:DesiredCount"
min_capacity = 1
max_capacity = 10
}

resource "aws_appautoscaling_target" "wfprev_nginx_target" {
service_namespace = "ecs"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.nginx.name}"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.wfprev_server.name}"
scalable_dimension = "ecs:service:DesiredCount"
min_capacity = 1
max_capacity = 10
Expand All @@ -18,7 +10,7 @@ resource "aws_appautoscaling_target" "wfprev_nginx_target" {
resource "aws_appautoscaling_policy" "wfprev_up" {
name = "wfprev_scale_up"
service_namespace = "ecs"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.wfprev_main.name}"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.wfprev_server.name}"
scalable_dimension = "ecs:service:DesiredCount"

step_scaling_policy_configuration {
Expand All @@ -35,31 +27,11 @@ resource "aws_appautoscaling_policy" "wfprev_up" {
depends_on = [aws_appautoscaling_target.wfprev_target]
}

resource "aws_appautoscaling_policy" "wfprev_nginx_up" {
name = "wfprev_nginx_scale_up"
service_namespace = "ecs"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.nginx.name}"
scalable_dimension = "ecs:service:DesiredCount"

step_scaling_policy_configuration {
adjustment_type = "ChangeInCapacity"
cooldown = 60
metric_aggregation_type = "Maximum"

step_adjustment {
metric_interval_lower_bound = 0
scaling_adjustment = 1
}
}

depends_on = [aws_appautoscaling_target.wfprev_nginx_target]
}

# Automatically scale capacity down by one
resource "aws_appautoscaling_policy" "wfprev_down" {
name = "wfprev_scale_down"
service_namespace = "ecs"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.wfprev_main.name}"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.wfprev_server.name}"
scalable_dimension = "ecs:service:DesiredCount"

step_scaling_policy_configuration {
Expand All @@ -76,26 +48,6 @@ resource "aws_appautoscaling_policy" "wfprev_down" {
depends_on = [aws_appautoscaling_target.wfprev_target]
}

resource "aws_appautoscaling_policy" "wfprev_nginx_down" {
name = "wfprev_nginx_scale_down"
service_namespace = "ecs"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.nginx.name}"
scalable_dimension = "ecs:service:DesiredCount"

step_scaling_policy_configuration {
adjustment_type = "ChangeInCapacity"
cooldown = 60
metric_aggregation_type = "Maximum"

step_adjustment {
metric_interval_upper_bound = 0
scaling_adjustment = -1
}
}

depends_on = [aws_appautoscaling_target.wfprev_nginx_target]
}

# CloudWatch alarm that triggers the autoscaling up policy
resource "aws_cloudwatch_metric_alarm" "wfprev_service_cpu_high" {
alarm_name = "wfprev_cpu_utilization_high"
Expand All @@ -109,7 +61,7 @@ resource "aws_cloudwatch_metric_alarm" "wfprev_service_cpu_high" {

dimensions = {
ClusterName = aws_ecs_cluster.wfprev_main.name
ServiceName = aws_ecs_service.wfprev_main.name
ServiceName = aws_ecs_service.wfprev_server.name
}

alarm_actions = [aws_appautoscaling_policy.wfprev_up.arn]
Expand All @@ -120,28 +72,6 @@ resource "aws_cloudwatch_metric_alarm" "wfprev_service_cpu_high" {
}
}

resource "aws_cloudwatch_metric_alarm" "wfprev_nginx_service_cpu_high" {
alarm_name = "wfprev_nginx_cpu_utilization_high"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "1"
metric_name = "CPUUtilization"
namespace = "AWS/ECS"
period = "60"
statistic = "Average"
threshold = "50"

dimensions = {
ClusterName = aws_ecs_cluster.wfprev_main.name
ServiceName = aws_ecs_service.nginx.name
}

alarm_actions = [aws_appautoscaling_policy.wfprev_nginx_up.arn]

tags = {
Environment = "${var.TARGET_ENV}"
}
}

# CloudWatch alarm that triggers the autoscaling down policy
resource "aws_cloudwatch_metric_alarm" "wfprev_service_cpu_low" {
alarm_name = "wfprev_cpu_utilization_low"
Expand All @@ -155,7 +85,7 @@ resource "aws_cloudwatch_metric_alarm" "wfprev_service_cpu_low" {

dimensions = {
ClusterName = aws_ecs_cluster.wfprev_main.name
ServiceName = aws_ecs_service.wfprev_main.name
ServiceName = aws_ecs_service.wfprev_server.name
}

alarm_actions = [aws_appautoscaling_policy.wfprev_down.arn]
Expand All @@ -165,29 +95,6 @@ resource "aws_cloudwatch_metric_alarm" "wfprev_service_cpu_low" {
}
}

resource "aws_cloudwatch_metric_alarm" "wfprev_nginx_service_cpu_low" {
alarm_name = "wfprev_nginx_cpu_utilization_low"
comparison_operator = "LessThanOrEqualToThreshold"
evaluation_periods = "2"
metric_name = "CPUUtilization"
namespace = "AWS/ECS"
period = "60"
statistic = "Average"
threshold = "10"

dimensions = {
ClusterName = aws_ecs_cluster.wfprev_main.name
ServiceName = aws_ecs_service.nginx.name
}

alarm_actions = [aws_appautoscaling_policy.wfprev_nginx_down.arn]


tags = {
Environment = "${var.TARGET_ENV}"
}
}

resource "aws_appautoscaling_target" "wfprev_client_target" {
service_namespace = "ecs"
resource_id = "service/${aws_ecs_cluster.wfprev_main.name}/${aws_ecs_service.client.name}"
Expand Down

0 comments on commit 831bf0f

Please sign in to comment.