Politique de mise à l'échelle prédictive avancée utilisant des métriques personnalisées pour Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Politique de mise à l'échelle prédictive avancée utilisant des métriques personnalisées pour Amazon ECS

Vous pouvez utiliser des métriques prédéfinies ou personnalisées dans une politique de mise à l'échelle prédictive. Les métriques personnalisées sont utiles lorsque les métriques prédéfinies (telles que la mémoireCPU, etc.) ne suffisent pas à décrire suffisamment la charge de votre application.

Lorsque vous créez une politique de mise à l'échelle prédictive avec des métriques personnalisées, vous pouvez spécifier d'autres CloudWatch métriques fournies par AWS. Vous pouvez aussi spécifier des métriques que vous définissez et publiez vous-même. Vous pouvez également utiliser les mathématiques de métriques pour agréger et transformer les métriques existantes en une nouvelle série temporelle qu' AWS ne suit pas automatiquement. Un exemple consiste à combiner des valeurs dans vos données en calculant de nouvelles sommes ou moyennes appelées agrégation. Les données résultantes sont appelées un agrégat.

La section suivante contient les bonnes pratiques et des exemples de construction de la JSON structure de la politique.

Prérequis

Pour ajouter des métriques personnalisées à votre politique de mise à l'échelle, vous devez disposer des autorisations cloudwatch:GetMetricData.

Pour spécifier vos propres métriques au lieu des métriques AWS fournies par, vous devez d'abord publier vos métriques dans CloudWatch. Pour plus d'informations, consultez la section Publication de métriques personnalisées dans le guide de CloudWatch l'utilisateur Amazon.

Si vous publiez vos propres métriques, veillez à publier les points de données à une fréquence minimale de cinq minutes. Les points de données sont extraits CloudWatch en fonction de la durée de la période dont ils ont besoin. Par exemple, la spécification de la métrique de charge utilise des métriques horaires pour mesurer la charge de votre application. CloudWatch utilise vos données métriques publiées pour fournir une seule valeur de données pour toute période d'une heure en agrégeant tous les points de données dont les horodatages se situent dans chaque période d'une heure.

Bonnes pratiques

Les bonnes pratiques suivantes peuvent vous aider à utiliser plus efficacement les métriques personnalisées :

  • La métrique la plus utile pour la spécification de la métrique de charge est une métrique qui représente la charge d'un groupe Auto Scaling dans son ensemble.

  • La métrique la plus utile pour la mise à l'échelle de la spécification de la métrique est une métrique moyenne de débit ou d'utilisation par tâche.

  • L'utilisation cible doit correspondre au type de métrique de mise à l'échelle. Pour une configuration de politique qui utilise CPU l'utilisation, il s'agit d'un pourcentage cible, par exemple.

  • Si ces recommandations ne sont pas suivies, les valeurs futures prédites des séries temporelles seront probablement incorrectes. Pour valider que les données sont correctes, vous pouvez visualiser les valeurs prédites dans la console. Sinon, après avoir créé votre politique de dimensionnement prédictif, inspectez les LoadForecast objets renvoyés par un appel au GetPredictiveScalingForecastAPI.

  • Nous vous recommandons vivement de configurer la mise à l'échelle prédictive en mode prédiction uniquement pour pouvoir évaluer la prédiction avant que la mise à l'échelle prédictive ne commence à mettre activement à l'échelle.

Limites

  • Vous pouvez interroger des points de données de 10 métriques au maximum dans une spécification métrique.

  • Dans le cadre de cette limite, une expression compte pour une métrique.

Résolution des problèmes d'une stratégie de mise à l'échelle prédictive avec des métriques personnalisées

Si un problème survient lors de l'utilisation de métriques personnalisées, nous vous recommandons d'effectuer les opérations suivantes :

  • Si vous rencontrez un problème lors d'un déploiement bleu/vert lors de l'utilisation d'une expression de recherche, assurez-vous d'avoir créé une expression de recherche qui recherche une correspondance partielle et non une correspondance exacte. Vous devez également vérifier que la requête ne trouve que les groupes Auto Scaling en cours d'exécution dans l'application spécifique. Pour plus d'informations sur la syntaxe de l'expression de recherche, consultez Syntaxe CloudWatch de l'expression de recherche dans le Guide de CloudWatch l'utilisateur Amazon.

  • La put-scaling-policycommande valide une expression lorsque vous créez votre politique de dimensionnement. Cependant, il est possible que cette commande ne parvienne pas à identifier la cause exacte des erreurs détectées. Pour résoudre ces problèmes, dépannez les erreurs que vous recevez dans la réponse d'une requête à la get-metric-datacommande. Vous pouvez également dépanner l'expression à partir de la CloudWatch console.

  • Vous devez spécifier false for ReturnData if MetricDataQueries spécifie la fonction SEARCH () seule sans une fonction mathématique telle que SUM (). Cela est dû au fait que les expressions de recherche peuvent renvoyer plusieurs séries temporelles et qu'une spécification métrique basée sur une expression ne peut renvoyer qu'une seule séries temporelles.

  • Toutes les métriques impliquées dans une expression de recherche doivent avoir la même résolution.

Exemple de politique de mise à l'échelle prédictive qui combine des métriques à l'aide des mathématiques de métriques (AWS CLI)

Parfois, au lieu de spécifier la métrique directement, vous devrez d'abord traiter ses données d'une certaine manière. Par exemple, une application peut extraire le travail d'une SQS file d'attente Amazon et vous souhaitez utiliser le nombre d'éléments dans la file d'attente comme critère de mise à l'échelle prédictive. Le nombre de messages dans la file d'attente ne définit pas uniquement le nombre d'instances dont vous avez besoin. Par conséquent, un travail supplémentaire est nécessaire pour créer une métrique qui peut être utilisée pour calculer le backlog par instance.

Ce qui suit est un exemple de politique de mise à l'échelle prédictive pour ce scénario. Il spécifie les métriques de mise à l'échelle et de charge qui sont basées sur la SQS ApproximateNumberOfMessagesVisible métrique Amazon, qui est le nombre de messages disponibles pour la récupération de la file d'attente. Il utilise également la GroupInServiceInstances métrique Amazon EC2 Auto Scaling et une expression mathématique pour calculer le backlog par instance pour la métrique de mise à l'échelle.

aws autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \ --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json --service-namespace ecs \ --resource-id service/MyCluster/test \ "MetricSpecifications": [ { "TargetValue": 100, "CustomizedScalingMetricSpecification": { "MetricDataQueries": [ { "Label": "Get the queue size (the number of messages waiting to be processed)", "Id": "queue_size", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Get the group size (the number of running instances)", "Id": "running_capacity", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "scaling_metric", "Expression": "queue_size / running_capacity", "ReturnData": true } ] }, "CustomizedLoadMetricSpecification": { "MetricDataQueries": [ { "Id": "load_metric", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ], }, "Stat": "Sum" }, "ReturnData": true } ] } } ] }

L'exemple renvoie la politiqueARN.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy", "Alarms": [] }