Creación de una política de escalado de seguimiento de destino con cálculos métricos - Amazon EC2 Auto Scaling

Creación de una política de escalado de seguimiento de destino con cálculos métricos

La calculadora de métricas le permiten consultar varias métricas de CloudWatch y usar expresiones matemáticas para crear nuevas series temporales basadas en estas métricas. Puede visualizar las series temporales resultantes en la consola de CloudWatch y agregarlas a los paneles. Para obtener más información, consulte Using metric math (Uso de cálculo de métricas) en Amazon CloudWatch User Guide (Guía del usuario de Amazon CloudWatch).

Las siguientes consideraciones se aplican a las expresiones de la calculadora de métricas:

  • Puede consultar cualquier métrica de CloudWatch disponible. Cada métrica es una combinación única de nombre de métrica, espacio de nombres y cero o más dimensiones.

  • Puede utilizar cualquier operador aritmético (+ - * / ^), función estadística (como PROM o SUM) u otra función que sea compatible con CloudWatch.

  • Puede utilizar tanto las métricas como los resultados de otras expresiones matemáticas en las fórmulas de la expresión matemática.

  • Todas las expresiones utilizadas en la especificación de una métrica deben devolver en última instancia una única serie temporal.

  • Puede comprobar que la expresión de la calculadora de métricas sea válida mediante el uso de la consola de CloudWatch o la API GetMetricData de CloudWatch.

Ejemplo: cola de tareas pendientes de Amazon SQS por instancia

Para calcular la cola de tareas pendientes de Amazon SQS por instancia, se toma el número aproximado de mensajes disponibles para recuperar de la cola y se divide por la capacidad de ejecución del grupo de escalado automático, que es el número de instancias con estado InService. Para obtener más información, consulte Política de escalado basada en Amazon SQS.

La lógica de la expresión es la siguiente:

sum of (number of messages in the queue)/(number of InService instances)

A continuación, la información de las métricas de CloudWatch es la siguiente.

ID Métrica de CloudWatch Estadística Periodo
m1 ApproximateNumberOfMessagesVisible Sum 1 minuto
m2 GroupInServiceInstances Media 1 minuto

Su ID de cálculo de métrica y expresión son los siguientes.

ID Expresión
e1 (m1)/(m2)

El siguiente diagrama ilustra la arquitectura de esta métrica:

Diagrama de arquitectura de Amazon EC2 Auto Scaling que utiliza colas
Para utilizar esta calculadora de métricas para crear una política de escalado de seguimiento de destino (AWS CLI)
  1. Guarde la expresión de la calculadora de métricas como parte de una especificación métrica personalizada en un archivo JSON denominado config.json.

    Utilice el siguiente ejemplo como ayuda para comenzar. Reemplace cada marcador de posición de entrada del usuario con información propia.

    { "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 group size (the number of InService instances)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Average" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "e1", "Expression": "m1 / m2", "ReturnData": true } ] }, "TargetValue": 100 }

    Para obtener más información, consulte TargetTrackingConfiguration en la Referencia de la API de Amazon EC2 Auto Scaling.

    nota

    Los siguientes son algunos de los recursos adicionales que pueden ayudarle a encontrar nombres de métricas, espacios de nombres, dimensiones y estadísticas para las métricas de CloudWatch:

    • Para obtener más información sobre las métricas disponibles en los servicios de AWS, consulte Servicios de AWS que publican métricas de CloudWatch en la Guía del usuario de Amazon CloudWatch.

    • Para obtener el nombre exacto de la métrica, el espacio de nombres y las dimensiones (si corresponde) de una métrica de CloudWatch con la AWS CLI, consulte list-metrics.

  2. Para crear esta política, ejecute el comando put-scaling-policy con el archivo de JSON como entrada, tal y como se muestra en el ejemplo siguiente.

    aws autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

    Si tiene éxito, este comando devuelve los nombres de recurso de Amazon (ARN) de la política y los ARN de las dos alarmas de CloudWatch creadas en su nombre.

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/sqs-backlog-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }
    nota

    Si este comando produce un error, asegúrese de haber actualizado la AWS CLI localmente a la versión más reciente.