Политика отслеживания целей ASG, основанная на СУММЕ двух (пользовательских) показателей?

#amazon-web-services #terraform #amazon-cloudwatch #autoscaling

Вопрос:

Я хочу, чтобы моя политика отслеживания целей основывалась на загрузке процессора моего ASG. Я знаю, что EC2 обеспечивает базовый мониторинг, включая CPUUtilization метрику, но только с частотой 5 минут. Я также знаю, что мог бы включить подробный мониторинг для всех экземпляров, чтобы включить показатели с интервалом в 1 минуту, но, насколько я понимаю, это тип «все или ничего», Когда я должен платить за ВСЕ показатели EC2 (сеть и т. Д.) В качестве пользовательских показателей (для моего типа экземпляра есть 16 показателей, что означает 16 * 0,3 доллара = 4,8 доллара дополнительных затрат / месяц / экземпляр. пожалуйста, поправьте меня, если мое предположение неверно).

Поэтому вместо этого я использую агент CloudWatch, работающий на экземплярах ASG со следующей amazon-cloudwatch-agent.json конфигурацией:

 ... "metrics": {  "namespace": "AWS/EC2",  "append_dimensions": {  "AutoScalingGroupName": "${aws:AutoScalingGroupName}",  "InstanceId": "${aws:InstanceId}"  },  "aggregation_dimensions": [  ["AutoScalingGroupName"]  ],  "metrics_collected": {  ...  "cpu": {  "measurement": [  {  "name": "cpu_usage_user",  "rename": "CPUUtilizationUser"  },  {  "name": "cpu_usage_system",  "rename": "CPUUtilizationSystem"  }  ],  "metrics_collection_interval": 60,  "resources": ["*"],  "totalcpu": true  }  } }  

Сумма CPUUtilizationUser и CPUUtilizationSystem близко соответствует фактической загрузке процессора, и я плачу только за 2 дополнительных пользовательских показателя за экземпляр вместо 16 (опять же, пожалуйста, поправьте меня, если предположение неверно).

Вопрос в том, как использовать сумму этих двух пользовательских показателей для политики отслеживания целей моей ASG? Я знаю, что вы можете использовать математические выражения для сигналов тревоги CloudWatch, но я не вижу этого для политик масштабирования.

Обратите внимание, что я использую Terraform для предоставления всех своих ресурсов AWS, включая политику масштабирования. В настоящее время это выглядит так:

 resource "aws_autoscaling_policy" "target_tracking" {  ...  policy_type = "TargetTrackingScaling"   target_tracking_configuration {  customized_metric_specification {  metric_name = // here I want CPUUtilizationUser   CPUUtilizationSystem basically  namespace = "AWS/EC2"  statistic = "Average"  metric_dimension {  name = "AutoScalingGroupName"  value = aws_autoscaling_group.application.name  }  }  } }  

Any ideas on how to do this? Many thanks!