Créer une stratégie de mise à l'échelle du suivi des cibles pour Application Auto Scaling à l'aide des mathématiques appliquées aux métriques. - Application Autoscaling

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.

Créer une stratégie de mise à l'échelle du suivi des cibles pour Application Auto Scaling à l'aide des mathématiques appliquées aux métriques.

À l'aide des mathématiques métriques, vous pouvez interroger plusieurs CloudWatch métriques et utiliser des expressions mathématiques pour créer de nouvelles séries chronologiques basées sur ces métriques. Vous pouvez visualiser les séries chronologiques obtenues dans la CloudWatch console et les ajouter aux tableaux de bord. Pour plus d'informations sur les mathématiques métriques, consultez la section Utilisation des mathématiques métriques dans le guide de CloudWatch l'utilisateur Amazon.

Les considérations suivantes s'appliquent aux expressions mathématiques appliquées aux métriques :

  • Vous pouvez interroger n'importe quelle CloudWatch métrique disponible. Chaque métrique est une combinaison unique du nom de la métrique, de l'espace de noms et de zéro dimension ou plus.

  • Vous pouvez utiliser n'importe quel opérateur arithmétique (+ - */^), fonction statistique (telle que AVG ou SUM) ou toute autre fonction compatible. CloudWatch

  • Vous pouvez utiliser à la fois des métriques et les résultats d'autres expressions mathématiques dans les formules de l'expression mathématique.

  • Toutes les expressions utilisées dans une spécification de métrique doivent finalement retourner une seule séries temporelles.

  • Vous pouvez vérifier la validité d'une expression mathématique métrique à l'aide de la CloudWatch console ou de l' CloudWatch GetMetricDataAPI.

Exemple : file Amazon SQS des éléments en attente par tâche

Pour calculer la file Amazon SQS des éléments en attente par tâche, prenez le nombre approximatif de messages disponibles à la récupération dans la file d'attente et divisez ce nombre par le nombre de tâches Amazon ECS en cours d'exécution dans le service. Pour plus d'informations, consultez Amazon Elastic Container Service (ECS) Auto Scaling using custom metrics sur le AWS Compute Blog.

La logique de l'expression est la suivante :

sum of (number of messages in the queue)/(number of tasks that are currently in the RUNNING state)

Vos informations CloudWatch métriques sont alors les suivantes.

ID CloudWatch métrique Statistique Période
m1 ApproximateNumberOfMessagesVisible Somme 1 minute
m2 RunningTaskCount Moyenne 1 minute

Votre ID de mathématiques appliquées aux métriques et votre expression sont les suivantes :

ID Expression
e1 (m1)/(m2)

Le schéma suivant illustre l'architecture de cette métrique :

Application Auto Scaling utilisant le schéma architectural des files d'attente
Pour utiliser cette expression mathématique appliquée à une métrique pour créer une politique de suivi des cibles (AWS CLI)
  1. Stockez l'expression mathématique appliquée aux métriques dans le cadre d'une spécification métrique personnalisée dans un fichier JSON nommé config.json.

    Utilisez l'exemple suivant pour vous aider à démarrer. Remplacez chaque espace réservé à la saisie de l'utilisateur par vos propres informations.

    { "CustomizedMetricSpecification": { "Metrics": [ { "Label": "Get the queue size (the number of messages waiting to be processed)", "Id": "m1", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Get the ECS running task count (the number of currently running tasks)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", "Dimensions": [ { "Name": "ClusterName", "Value": "my-cluster" }, { "Name": "ServiceName", "Value": "my-service" } ] }, "Stat": "Average" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "e1", "Expression": "m1 / m2", "ReturnData": true } ] }, "TargetValue": 100 }

    Pour plus d'informations, reportez-vous TargetTrackingScalingPolicyConfigurationà la section Application Auto Scaling API Reference.

    Note

    Voici quelques ressources supplémentaires qui peuvent vous aider à trouver des noms de métriques, des espaces de noms, des dimensions et des statistiques pour les CloudWatch métriques :

    • Pour plus d'informations sur les métriques disponibles pour les AWS services, consultez les AWS services qui publient CloudWatch des métriques dans le guide de CloudWatch l'utilisateur Amazon.

    • Pour obtenir le nom, l'espace de noms et les dimensions exacts (le cas échéant) d'une CloudWatch métrique avec le AWS CLI, consultez list-metrics.

  2. Pour créer cette politique, exécutez la put-scaling-policycommande en utilisant le fichier JSON comme entrée, comme illustré dans l'exemple suivant.

    aws application-autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service \ --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration file://config.json

    En cas de succès, cette commande renvoie le nom de ressource Amazon (ARN) de la politique et les ARN des deux CloudWatch alarmes créées en votre nom.

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy: 8784a896-b2ba-47a1-b08c-27301cc499a1:resource/ecs/service/my-cluster/my-service:policyName/sqs-backlog-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0", "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4", "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4" } ] }
    Note

    Si cette commande génère une erreur, assurez-vous d'avoir mis à jour AWS CLI localement la dernière version.

Limites

  • La taille maximum d'une requête est 50 Ko. Il s'agit de la taille totale de la charge utile pour la demande PutScalingPolicyd'API lorsque vous utilisez des mathématiques métriques dans la définition de la politique. Si vous dépassez cette limite, Application Auto Scaling rejette la demande.

  • Les services suivants ne sont pas pris en charge lors de l'utilisation des mathématiques appliquées aux métriques avec de politiques de suivi des objectifs de la mise à l'échelle :

    • Amazon Keyspaces (pour Apache Cassandra)

    • DynamoDB

    • Amazon EMR

    • Amazon MSK

    • Amazon Neptune