#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!