/** Service autoscaling alarms */

resource "aws_cloudwatch_metric_alarm" "cpu-low" {
  alarm_name          = "ecs-${var.serviceName}-service-cpu-low"
  comparison_operator = "LessThanOrEqualToThreshold"
  evaluation_periods  = 1
  metric_name         = "CPUUtilization"
  namespace           = "AWS/ECS"
  period              = 300
  statistic           = "Average"
  threshold           = 40

  dimensions {
    ClusterName = "${local.clusterName}"
    ServiceName = "${aws_ecs_service.ecs-service-service-discovery.name}"
  }

  alarm_description = "Low CPU Utilization for ${var.serviceName} service"

  /** Will remove one task */
  alarm_actions = ["${aws_appautoscaling_policy.ecs-servicediscovery-scaling-in-policy-awsvpc.arn}"]
}

resource "aws_cloudwatch_metric_alarm" "cpu-high" {
  alarm_name          = "ecs-${var.serviceName}-service-cpu-high"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 1
  metric_name         = "CPUUtilization"
  namespace           = "AWS/ECS"
  period              = 300
  statistic           = "Average"
  threshold           = 70

  dimensions {
    ClusterName = "${local.clusterName}"
    ServiceName = "${aws_ecs_service.ecs-service-service-discovery.name}"
  }

  alarm_description = "High CPU Utilization for ${var.serviceName} service"

  /** Will add one task */
  alarm_actions = ["${aws_appautoscaling_policy.ecs-servicediscovery-scaling-out-policy-awsvpc.arn}"]
}
