繁体   English   中英

通过 Terraform 在 EC2 Auto Scaling Group Target Tracking 中指定多个指标

[英]Specifying multiple metrics in EC2 Auto Scaling Group Target Tracking thru Terraform

我正在尝试在 Terraform 中的 AWS 文档中对 SQS 队列大小示例实施 EC2 缩放。使用来自 terraform-aws-modules 的自动缩放模块。 我已经在没有策略的情况下成功创建了 ASG(自动缩放组)。

我尝试添加示例中指定的三个指标:

  scaling_policies = {
    scale_on_sqs_queue_policy = {
      policy_type = "TargetTrackingScaling"
      target_tracking_configuration = {
        target_value = 100
        metric_data_queries = {
          expression = "m1 / m2"
          id = "e1"
          label = "Calculate the backlog per instance"
          return_data = true
        }
        customized_metric_specification = {
          metric_dimension = {
            name = "QueueName"
            value = "my-sqs-queue"
          }
          metric_name = "ApproximateNumberOfMessagesVisible"
          namespace = "AWS/SQS"
          statistic = "Sum"
        }
        customized_metric_specification = {
          metric_dimension = {
            name = "AutoScalingGroupName"
            value = "my_autoscaling_group_name"
          }
          metric_name = "GroupInServiceInstances"
          namespace = "AWS/Autoscaling"
          statistic = "Average"
        }
      }
    }
  }

但是,Terraform 仅添加了第一个customized_metric_specification

module.my_autoscaling_group.aws_autoscaling_policy.this["scale_on_sqs_queue_policy"] 将被创建

resource "aws_autoscaling_policy" "this" { arn = (known after apply) autoscaling_group_name = "my_autoscaling_group_name" enabled = true id = (known after apply) metric_aggregation_type = (known after apply) name = "scale_on_sqs_queue_policy" policy_type = "TargetTrackingScaling" target_tracking_configuration { disable_scale_in = false target_value = 100 customized_metric_specification { metric_name = "GroupInServiceInstances" namespace = "AWS/Autoscaling" statistic = "Average" metric_dimension { name = "AutoScalingGroupName" value = "my_autoscaling_group_name" } } } }

计划:1增加,0改变,0破坏。

度量数学查询也被完全忽略。 这也反映在 AWS 控制台中:

foo 自动缩放 EC2 组页面的自动缩放页面的屏幕截图。页面上的一个框反映仅使用了一个 GroupInServiceInstances 指标。

我的问题是,在 Terraform 中为 EC2 ASG 定义动态策略时如何使用多个指标? 它似乎在规范中作为多个 TargetTrackingMetricDataQuery 对象。

我还尝试将customized_metric_specification设为数组或 object,这会导致如下错误:

// [...]
target_tracking_configuration = {
  target_value = 100
  customized_metric_specification = {
    m1 = {
      metric_dimension = {
        name  = "QueueName"
        value = "my-sqs-queue"
      }
      metric_name = "ApproximateNumberOfMessagesVisible"
      namespace   = "AWS/SQS"
      statistic   = "Sum"
    },
    m2 = {
      metric_dimension = {
        name  = "AutoScalingGroupName"
        value = "my_autoscaling_group_name"
      }
      metric_name = "GroupInServiceInstances"
      namespace   = "AWS/Autoscaling"
      statistic   = "Average"
    }
  }
}
// [...]

错误:不支持的属性
on.terraform/modules/my_autoscaling_group/main.tf 第 723 行,在资源“aws_autoscaling_policy”“this”中:
723:
metric_name = customized_metric_specification.value。 指标名称
customized_metric_specification.value是 object,有 2 个属性
这个 object 没有名为“metric_name”的属性。

我在发布之前咨询了这些来源:

底层 Terraform 资源尚不支持此功能,这些资源是为应用程序自动缩放而不是 EC2 ASG 制作的。 但是,建议将其添加 到此 PR中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM