Escala según las métricas de Monitoring


El ajuste de escala automático basado en las métricas de Cloud Monitoring te permite ajustar la capacidad necesaria según las mediciones de la app. Cuando realizas un ajuste de escala automático en un MIG basado en una métrica, el escalador automático crea VM cuando el valor de la métrica aumenta y las borra cuando el valor disminuye.

Por ejemplo, puedes definir cuántas VM necesitas por recuento de usuarios, latencia o la cantidad de mensajes en una suscripción de Pub/Sub. Puedes usar las métricas integradas que proporciona el servicio de Monitoring o las métricas personalizadas que exportas desde tu aplicación.

En este documento se describe cómo escalar automáticamente un grupo de instancias administrado (MIG) basado en las métricas de Monitoring.

También puedes escalar automáticamente un MIG en función del uso de CPU, la capacidad de entrega del balanceo de cargas o los programas.

Antes de comenzar

  • Lee acerca de los aspectos básicos del escalador automático.
  • Lee sobre los conceptos de las métricas de Monitoring que se usan en una configuración de ajuste de escala automático.
  • Si deseas realizar un ajuste de escala automático en función de una métrica del Agente de operaciones, instala el Agente de operaciones.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Limitaciones

La escala automática basada en las métricas de Monitoring está restringida por las limitaciones de todos los escaladores automáticos, así como por las siguientes limitaciones:

  • Puedes configurar el ajuste de escala automático en función de hasta 5 métricas de Monitoring por MIG.
  • Puedes realizar un ajuste de escala automático en función de las métricas que tienen solo tipos de valores INT64 o DOUBLE. No se admiten otros tipos de valores.
  • No puedes configurar la misma métrica más de una vez en una política de ajuste de escala automático.

Configura el ajuste de escala automático según las métricas de Monitoring

Puedes usar un valor de métrica de Monitoring para el ajuste de escala automático de dos maneras diferentes:

  • Objetivo de utilización: Si deseas que el escalador automático mantenga una métrica en un valor específico, configura un objetivo de utilización. El escalador automático crea VM cuando el valor de la métrica está por encima del objetivo y borra VM cuando el valor de la métrica está por debajo del objetivo. Esto es útil para métricas como el tráfico de red, el uso de memoria o de disco o la latencia promedio de tu aplicación. En el siguiente diagrama, se muestra cómo un escalador automático agrega y quita las VM en respuesta a un valor de la métrica para mantener un objetivo de utilización.

    El escalador automático agrega y quita VM para mantener un objetivo de utilización.

  • Asignación de instancia única: Si deseas realizar el ajuste de escala automático según la cantidad de trabajo disponible para asignar a cada VM, configura una asignación de instancia única. La asignación de instancia única que especifiques representa cuánto trabajo esperas que controle cada VM. El escalador automático divide el valor de la métrica por el valor de asignación de instancia única para calcular cuántas VM se necesitan. Por ejemplo, si la métrica es igual a 100 y la asignación de instancia única es 5, el escalador automático crea 20 VM en el MIG. Esto es útil para las métricas que reflejan la cantidad de trabajo, como la longitud de la cola de Pub/Sub o el recuento de trabajos por lotes. La asignación de una sola instancia no se aplica a las métricas que provienen de cada VM. En el siguiente diagrama, se muestra la relación proporcional entre el valor de la métrica y la cantidad de VM cuando se escala con la asignación de instancia única.

    La relación proporcional entre el valor de la métrica y la cantidad de instancias.

Ajusta la escala automáticamente para mantener una métrica en un valor objetivo

Cuando quieras mantener una métrica con un valor objetivo, especifica un objetivo de uso. El escalador automático crea VM cuando el valor de la métrica está por encima del objetivo y borra VM cuando el valor de la métrica está por debajo del objetivo.

  • Si la métrica proviene de cada VM en tu MIG, el escalador automático toma el valor de la métrica promedio en todas las VM del MIG y lo compara con el objetivo de uso. Por ejemplo, si deseas realizar el ajuste de escala automático con la métrica tcp_connections que proporciona la cantidad de conexiones TCP en una VM, el escalador automático toma un número promedio de conexiones TCP a todas las VM en el MIG para compararlas con el objetivo. Cuando usas esas métricas que se originan en una VM, el MIG no puede reducir la escala a 0 porque el escalador automático requiere que al menos una VM publique un valor de métrica.

  • Si la métrica se aplica a todo el MIG y no proviene de las VM en tu MIG, el escalador automático compara el valor de la métrica con el objetivo de uso. Por ejemplo, puedes usar una métrica personalizada que mida la latencia de tu aplicación.

Cuando tu métrica tenga varios valores, aplica un filtro para realizar un ajuste de escala automático mediante un valor individual de la métrica. Para obtener más detalles sobre los filtros de métricas y otros campos que puedes usar en tu configuración, consulta Conceptos de las métricas de Monitoring.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Si no tienes un grupo de instancias administrado, crea uno. De lo contrario, haz clic en el nombre de un MIG de la lista para abrir esa página del grupo de instancias.

  3. Haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En Ajuste de escala automático, en la sección Indicadores de ajuste de escala automático, si existe un indicador para una métrica de Cloud Monitoring, puedes hacer clic para editarlo o puedes hacer clic en Agregar un indicador para agregar un indicador nuevo.

  6. Configura el Tipo de indicador como Métrica de Cloud Monitoring.

  7. Haz clic en Configurar. En el panel Recurso y métrica que se abre, sigue estos pasos:

    1. Haz clic en Elige una métrica.
      1. Elige la métrica que deseas usar para el ajuste de escala automático. Puedes filtrar las métricas según cualquier palabra clave, como la memoria, los bytes o el disco.
      2. Haz clic en Aplicar. En el panel, se muestra un gráfico que muestra los datos de la métrica seleccionada.
    2. Si deseas usar datos específicos de la métrica, agrega un filtro según las etiquetas de la siguiente manera:

      1. En la sección Filtros, haz clic en Agregar un filtro.
      2. Elige una Etiqueta y, luego, ingresa un Valor.
      3. Haz clic en Listo. El gráfico se actualiza para mostrarte el valor filtrado de la métrica.
    3. Para ver el valor agregado de las métricas que se usarán para realizar el ajuste de escala automático en tu MIG, activa o desactiva el botón Mostrar agregación en el gráfico. El gráfico se actualiza para mostrar el valor agregado.

    4. En la sección Opciones de objetivo de métricas para el ajuste de escala automático, elige Objetivo de utilización.

    5. Proporcione lo siguiente:

      1. Objetivo de utilización: especifica el valor que el escalador automático debe mantener. Debe ser un número positivo. Por ejemplo, 24.5 y 100 son valores aceptables.
      2. Tipo de objetivo de utilización: elige un tipo de objetivo que corresponda al tipo de medición de la métrica. Para obtener comparaciones precisas, si el objetivo de uso se mide por segundos, usa delta/segundo como tipo de objetivo. Del mismo modo, usa delta/min para un objetivo de utilización medido por minuto.
        • Indicador: El escalador automático calcula el valor promedio de los datos recopilados en los últimos minutos y lo compara con el objetivo de utilización.
        • Delta/min: El escalador automático calcula la tasa de crecimiento promedio por minuto y la compara con el objetivo de utilización.
        • Delta/segundo: El escalador automático calcula la tasa de crecimiento promedio por segundo y la compara con el objetivo de utilización.
    6. Cuando termines de configurar la métrica, haz clic en Seleccionar.

  8. Revisa los detalles de la métrica y haz clic en Listo.

  9. Para completar la configuración, haz clic en Guardar.

gcloud

Para configurar el ajuste de escala automático en función de las métricas de Monitoring, usa el comando set-autoscaling.

Usa el siguiente comando para realizar un ajuste de escala automático en función de una métrica de Monitoring con un objetivo de uso.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=METRIC_URL \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

Si tu métrica tiene varios valores y deseas usar un valor individual para el ajuste de escala automático, usa la marca --stackdriver-metric-filter como se indica en el siguiente comando.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=METRIC_URL \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE \
  --stackdriver-metric-filter="METRIC_FILTER"

Reemplaza lo siguiente:

  • MIG_NAME: Es el MIG en el que deseas agregar un escalador automático.
  • MAX_INSTANCES: La cantidad máxima de VM que puede tener el MIG.
  • MIN_INSTANCES: La cantidad mínima de VM que debe tener el MIG.
  • METRIC_URL: una URL sin protocolo de una métrica de Monitoring. Por ejemplo, compute.googleapis.com/instance/uptime Si usas una métrica personalizada, debe cumplir con los requisitos de métricas personalizadas.
  • TARGET_VALUE: El valor de la métrica que el escalador automático intenta mantener
  • TARGET_TYPE: El tipo de valor de la métrica.
    • gaugeIndicador: El escalador automático calcula el valor promedio de los datos recopilados en los últimos minutos y lo compara con el objetivo de uso.
    • delta-per-minute el escalador automático calcula la tasa de crecimiento promedio por minuto y la compara con el objetivo de uso.
    • delta-per-second el escalador automático calcula la tasa de crecimiento por segundo y la compara con el objetivo de uso. Si configuras el objetivo de uso en segundos, usa delta-per-second como tipo de objetivo para obtener comparaciones precisas. Del mismo modo, usa delta-per-minute para el objetivo de uso en minutos.
  • METRIC_FILTER: aplica un filtro para usar un valor individual de una métrica que tenga varios valores y especificar el tipo de recurso supervisado. Si usas una métrica que proviene de cada VM, no tienes que especificar el tipo de recurso supervisado porque se usa gce_instance como predeterminado. Para otras métricas, usa resource.type en la expresión de filtro a fin de especificar el recurso supervisado. Para obtener más información sobre el filtro de métricas, consulta Conceptos de las métricas de Monitoring.

Si quieres ver la lista completa de comandos y marcas disponibles para la CLI de gcloud, consulta la referencia de gcloud.

REST

A fin de configurar el ajuste de escala automático en función de las métricas de Monitoring para un MIG zonal, usa el recurso autoscalers o, para un MIG regional, usa regionAutoscalers.

Realiza la siguiente llamada para realizar un ajuste de escala automático en un MIG zonal según una métrica de Monitoring con un objetivo de uso.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "utilizationTarget": TARGET_VALUE,
      "utilizationTargetType": TARGET_TYPE
    }
  ],
 }
}

Si la métrica tiene varios valores y deseas usar un valor individual para el ajuste de escala automático, usa el parámetro filter como se indica en la siguiente llamada a la API.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "utilizationTarget": TARGET_VALUE,
      "utilizationTargetType": TARGET_TYPE,
      "filter": "METRIC_FILTER"
    }
  ],
 }
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto.
  • ZONE: La zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: El nombre del escalador automático.
  • MIG_NAME: Es el MIG en el que deseas agregar un escalador automático.
  • MAX_INSTANCES: La cantidad máxima de VM que puede tener el MIG.
  • MIN_INSTANCES: La cantidad mínima de VM que debe tener el MIG.
  • METRIC_URL: una URL sin protocolo de una métrica de Monitoring. Por ejemplo, compute.googleapis.com/instance/uptime Si usas una métrica personalizada, debe cumplir con los requisitos de métricas personalizadas.
  • TARGET_VALUE: El valor de la métrica que el escalador automático intenta mantener
  • TARGET_TYPE: El tipo de valor de la métrica.
    • GAUGEIndicador: El escalador automático calcula el valor promedio de los datos recopilados en los últimos minutos y lo compara con el objetivo de uso.
    • DELTA_PER_MINUTE el escalador automático calcula la tasa de crecimiento promedio por minuto y la compara con el objetivo de uso.
    • DELTA_PER_SECOND el escalador automático calcula la tasa de crecimiento por segundo y la compara con el objetivo de uso. Si configuras el objetivo de uso en segundos, usa DELTA_PER_SECOND como tipo de objetivo para obtener comparaciones precisas. Del mismo modo, usa DELTA_PER_MINUTE para el objetivo de uso en minutos.
  • METRIC_FILTER: Aplica un filtro para usar un valor individual de una métrica que tenga varios valores y especificar el tipo de recurso supervisado. Si usas una métrica que proviene de cada VM, no tienes que especificar el tipo de recurso supervisado porque se usa gce_instance como predeterminado. Para otras métricas, debes especificar el recurso supervisado con el selector resource.type. Para obtener más información sobre el filtro de métricas, consulta Conceptos de las métricas de Monitoring.

Ajusta la escala automáticamente según el trabajo disponible para cada VM en un MIG

Cuando desees realizar el ajuste de escala automático en función de la cantidad de trabajo disponible para cada VM en un MIG, especifica una asignación de instancia única. El valor de la asignación de instancia única que estableces indica cuánto trabajo esperas que controle cada VM. El escalador automático divide el valor de la métrica por el valor de asignación de instancia única para calcular cuántas VMs se necesitan.

Un valor de la métrica de 0 indica que no hay trabajo para que complete tu MIG. Si la cantidad mínima de instancias de tu MIG se establece en 0 y el valor de la métrica disminuye a 0, el MIG escala a 0 hasta que aumente el valor de la métrica.

Cuando tu métrica tenga varios valores, aplica un filtro para realizar un ajuste de escala automático mediante un valor individual de la métrica. Para obtener más detalles sobre los filtros de métricas y otros campos que puedes usar en tu configuración, consulta Conceptos de las métricas de Monitoring.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Si no tienes un grupo de instancias administrado, crea uno. De lo contrario, haz clic en el nombre de un MIG de la lista para abrir esa página del grupo de instancias.

  3. Haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En Ajuste de escala automático, en la sección Indicadores de ajuste de escala automático, si existe un indicador para una métrica de Monitoring, puedes hacer clic para editarlo o puedes hacer clic en Agregar un indicador para agregar una métrica nueva.

  6. Configura el Tipo de indicador como Métrica de Cloud Monitoring.

  7. Haz clic en Configurar. En el panel Recurso y métrica que se abre, sigue estos pasos:

    1. Haz clic en Elige una métrica.
      1. Elige la métrica que deseas usar para el ajuste de escala automático. Puedes filtrar las métricas según cualquier palabra clave, como la memoria, los bytes o el disco.
      2. Haz clic en Aplicar. En el panel, se muestra un gráfico que muestra los datos de la métrica seleccionada.
    2. Si deseas usar datos específicos de la métrica, agrega un filtro según las etiquetas de la siguiente manera:

      1. En la sección Filtros, haz clic en Agregar un filtro.
      2. Elige una Etiqueta y, luego, ingresa un Valor.
      3. Haz clic en Listo. El gráfico se actualiza para mostrarte el valor de la métrica filtrado.
    3. Para ver el valor agregado de las métricas que se usarán para realizar el ajuste de escala automático en tu MIG, activa o desactiva el botón Mostrar agregación en el gráfico. El gráfico se actualiza para mostrar el valor agregado.

    4. En la sección Opciones de objetivo de métricas para el ajuste de escala automático, elige Asignación de instancia de VM única.

    5. Proporciona un valor de Asignación de instancia única que represente la cantidad de trabajo que se asignará a cada VM en el MIG.

    6. Cuando termines de configurar la métrica, haz clic en Seleccionar.

  8. Revisa los detalles de la métrica y haz clic en Listo.

  9. Para completar la configuración, haz clic en Guardar.

gcloud

Para configurar el ajuste de escala automático en función de las métricas de Monitoring, usa el comando set-autoscaling.

En el comando, especifica la marca --stackdriver-metric-single-instance-assignment para indicar la cantidad de trabajo que esperas que controle cada VM del grupo.

Con el siguiente comando, se crea un escalador automático basado en la asignación de trabajo para cada VM.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
    --max-num-replicas=MAX_INSTANCES \
    --min-num-replicas=MIN_INSTANCES \
    --update-stackdriver-metric=METRIC_URL \
    --stackdriver-metric-filter="METRIC_FILTER" \
    --stackdriver-metric-single-instance-assignment=INSTANCE_ASSIGNMENT

Reemplaza lo siguiente:

  • MIG_NAME: El nombre del MIG en el que deseas agregar un escalador automático
  • MAX_INSTANCES: La cantidad máxima de VM que puede tener el MIG.
  • MIN_INSTANCES: La cantidad mínima de VM que debe tener el MIG.
  • METRIC_URL: una URL sin protocolo de una métrica de Monitoring. Por ejemplo, compute.googleapis.com/instance_group/size Si usas una métrica personalizada, debe cumplir con los requisitos de métricas personalizadas.
  • METRIC_FILTER: Aplica un filtro para usar un valor individual de una métrica que tenga varios valores y especificar el tipo de recurso supervisado. Para obtener más información sobre el filtro de métricas, consulta Conceptos de las métricas de Monitoring.
  • INSTANCE_ASSIGNMENT: La cantidad de trabajo que se asignará a cada instancia de VM en el MIG.

REST

A fin de configurar el ajuste de escala automático en función de las métricas de Monitoring para un MIG zonal, usa el recurso autoscalers o, para un MIG regional, usa regionAutoscalers.

Usa el parámetro singleInstanceAssignment para especificar la cantidad de trabajo que esperas que controle cada VM.

Por ejemplo, realiza la siguiente llamada para crear un escalador automático que escale un MIG zonal según la asignación de instancia.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers

{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "filter": "METRIC_FILTER",
      "singleInstanceAssignment": INSTANCE_ASSIGNMENT
    }
  ],
 }
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto.
  • ZONE: La zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: El nombre del escalador automático.
  • MIG_NAME: El nombre del MIG en el que deseas agregar un escalador automático
  • MAX_INSTANCES: La cantidad máxima de VM que puede tener el MIG.
  • MIN_INSTANCES: La cantidad mínima de VM que debe tener el MIG.
  • METRIC_URL: una URL sin protocolo de una métrica de Monitoring. Por ejemplo, compute.googleapis.com/instance_group/size Si usas una métrica personalizada, debe cumplir con los requisitos de métricas personalizadas.
  • METRIC_FILTER: Aplica un filtro para usar un valor individual de una métrica que tenga varios valores y especificar el tipo de recurso supervisado. Para obtener más información sobre el filtro de métricas, consulta Conceptos de las métricas de Monitoring.
  • INSTANCE_ASSIGNMENT: La cantidad de trabajo que se asignará a cada instancia de VM en el MIG.

Ejemplos de ajuste de escala automático basado en métricas

En esta sección, se proporcionan algunos ejemplos de métricas que se usan para el ajuste de escala automático. Para obtener una lista completa de las métricas, consulta Métricas de Google Cloud.

Ajusta la escala automáticamente según una métrica personalizada

Quizás haya una situación en la que la métrica que proporciona una señal relevante no representa una cantidad total del trabajo disponible o de otro recurso aplicable al grupo, pero sí un promedio, un percentil u otra propiedad estadística. Para este ejemplo, supón que escalas en función de la latencia de procesamiento promedio del grupo.

Supón la siguiente configuración:

  • Se asigna un MIG zonal llamado our-instance-group para realizar una tarea en particular. El grupo está ubicado en la zona us-central1-a.
  • Tienes una métrica personalizada de Monitoring que exporta un valor que te gustaría mantener en un determinado nivel. En este ejemplo, supón que la métrica representa la latencia promedio de las consultas de procesamiento asignadas al grupo.
    • La métrica personalizada se llama custom.googleapis.com/example_average_latency.
    • La métrica personalizada tiene una etiqueta con una clave llamada group_name y un valor igual al nombre del MIG, our-instance-group.
    • Con la métrica personalizada, se exportan datos para el recurso supervisado global, es decir, no está asociada con ninguna VM específica.

Determinaste que, cuando el valor de la métrica supera un valor determinado, debes agregar más VM al grupo para controlar la carga, mientras que cuando es menor que el valor, puedes liberar algunos recursos. Querrás que el escalador automático agregue o quite de forma gradual las VM a una velocidad proporcional a la diferencia entre la métrica y el objetivo. Para este ejemplo, supongamos que determinaste que tu valor objetivo es 250 delta/sec.

Puedes configurar el ajuste de escala automático para el grupo con un objetivo de utilización de 250, que representa la tasa de cambio del valor de la métrica que el escalador automático intentará mantener:

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del MIG en la lista para abrir la página de descripción general del grupo de instancias.

  3. Haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En Ajuste de escala automático, en la sección Indicadores de ajuste de escala automático, haz clic en Agregar un indicador.

  6. Configura el Tipo de indicador como Métrica de Cloud Monitoring.

  7. Haz clic en Configurar. Se abre el panel Recurso y métrica.

    1. Haz clic en Elige una métrica.
      1. Elige tu métrica en Global > Métricas personalizadas.
      2. Haz clic en Aplicar.
    2. En la sección Filtros, sigue estos pasos:
      1. Haz clic en Agregar un filtro.
      2. En el menú desplegable Etiqueta, elige group_name.
      3. En el campo Valor, proporciona our-instance-group.
      4. Haz clic en Listo. El gráfico se actualiza para mostrar el valor filtrado de la métrica.
    3. En la sección Opciones de objetivo de métricas para ajuste de escala automático, haz lo siguiente:
      1. Elige Objetivo de utilización.
      2. Ingresa 250 como el valor objetivo de utilización.
      3. Establece el tipo de objetivo de utilización en delta/s.
    4. Después de configurar la métrica, haz clic en Seleccionar.
  8. Revisa los detalles de la métrica y, luego, haz clic en Listo.

  9. Cuando termines, haz clic en Save.

gcloud

gcloud compute instance-groups managed set-autoscaling our-instance-group \
  --zone=us-central1-a \
  --max-num-replicas=50 \
  --min-num-replicas=0 \
  --update-stackdriver-metric=custom.googleapis.com/example_average_latency \
  --stackdriver-metric-filter="metric.labels.group_name = \"our-instance-group\" AND resource.type = \"global\"" \
  --stackdriver-metric-utilization-target=250 \
  --stackdriver-metric-utilization-target-type=delta-per-second

REST

POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/autoscalers
{
"name": "our-instance-group-autoscaler",
"target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceGroupManagers/our-instance-group",
"autoscalingPolicy": {
  "maxNumReplicas": 50,
  "minNumReplicas": 0,
  "customMetricUtilizations": [
    {
      "filter": "metric.labels.group_name=\"our-instance-group\" AND resource.type = \"global\"",
      "utilizationTargetType": "delta-per-second",
      "utilizationTarget": 250.0,
      "metric": "custom.googleapis.com/example_average_latency"
    }
  ]
}
}

Ajusta la escala automáticamente en función de los mensajes no confirmados en Pub/Sub

Para configurar el ajuste de escala automático en función de los mensajes no confirmados en una suscripción de Pub/Sub, usa la métrica subscription/num_undelivered_messages que proporciona pubsub y filtra por subscription ID.

La métrica subscription/num_undelivered_messages exporta la cantidad total de mensajes en la suscripción, incluidos los mensajes que se están procesando y que aún no están confirmados. No se recomienda usar una métrica que no incluya los mensajes que se procesan, ya que esa métrica puede disminuir a 0 cuando aún hay trabajo pendiente, lo que solicita la reducción del ajuste de escala automático y tal vez interrumpa el trabajo real.

Si no tienes una suscripción, puedes crear una suscripción de extracción, envío o BigQuery antes de configurar el ajuste de escala automático.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del MIG en la lista para abrir la página de descripción general del grupo de instancias.

  3. Haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En la sección Indicadores de ajuste de escala automático, haz clic en Agregar un indicador.

  6. Configura el Tipo de indicador como Fila de Cloud Pub/Sub.

  7. Elige un tema Si deseas un tema nuevo, haz clic en Crear un tema para crear uno.

  8. Elige la suscripción en función de la que deseas realizar el ajuste de escala automático en tu MIG. Si deseas una suscripción nueva, haz clic en Crear una suscripción para crear una.

  9. En el campo Cantidad de mensajes para asignar a cada VM, especifica la cantidad de mensajes no confirmados que esperas que controle cada VM.

  10. Haz clic en Listo.

  11. Cuando termines, haz clic en Save.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=pubsub.googleapis.com/subscription/num_undelivered_messages \
  --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"" \
  --stackdriver-metric-single-instance-assignment=NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM

REST

A fin de configurar el ajuste de escala automático para un MIG zonal, usa el recurso autoscalers o, en un MIG regional, usa el recurso regionAutoscalers.

Por ejemplo, realiza la siguiente llamada a fin de crear un escalador automático para un MIG zonal.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "singleInstanceAssignment": NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM,
      "filter": "resource.type = \"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"",
      "metric": "pubsub.googleapis.com/subscription/num_undelivered_messages"
    }
  ]
}
}

Ajusta la escala automáticamente según el tráfico de red entrante

Para configurar el ajuste de escala automático en función del tráfico de red entrante a las VMs en tu MIG, usa la métrica instance/network/received_bytes_count que proporciona compute.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del MIG en la lista para abrir la página de descripción general del grupo de instancias.

  3. Haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En Ajuste de escala automático, en la sección Indicadores de ajuste de escala automático, haz clic en Agregar un indicador.

  6. Configura el Tipo de indicador como Métrica de Cloud Monitoring.

  7. Haz clic en Configurar. Se abre el panel Recurso y métrica.

    1. Haz clic en Elige una métrica.
      1. Elige Instancia de VM > Instancia > Bytes recibidos (compute.googleapis.com/instance/network/received_bytes_count).
      2. Haz clic en Aplicar.
    2. En la sección Opciones de objetivo de métricas para ajuste de escala automático, haz lo siguiente:
      1. Asegúrate de que el Objetivo de utilización esté seleccionado.
      2. Ingresa un valor objetivo de utilización.
      3. Establece un tipo de objetivo de utilización.
    3. Después de configurar la métrica, haz clic en Seleccionar.
  8. Revisa los detalles de la métrica y, luego, haz clic en Listo.

  9. Cuando termines, haz clic en Save.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=compute.googleapis.com/instance/network/received_bytes_count \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "utilizationTargetType": "TARGET_TYPE",
      "utilizationTarget": TARGET_VALUE,
      "metric": "compute.googleapis.com/instance/network/received_bytes_count"
    }
  ]
}
}

Ajusta la escala automáticamente según el uso de la memoria

Para configurar el ajuste de escala automático en función del porcentaje de memoria usada, especifica la métrica percent_used que proporcionan las métricas del Agente de operaciones de memoria. Debes filtrar la métrica por state para usar solo el estado de memoria used. Si no especificas el filtro, el escalador automático toma la suma del uso de memoria de todos los estados de memoria etiquetados como buffered, cached, free, slab y used.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del MIG en la lista para abrir la página de descripción general del grupo de instancias.

  3. En la página de descripción general del grupo de instancias, haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En Ajuste de escala automático, en la sección Indicadores de ajuste de escala automático, haz clic en Agregar un indicador.

  6. Configura el Tipo de indicador como Métrica de Cloud Monitoring.

  7. Haz clic en Configurar. Se abre el panel Recurso y métrica.

    1. Haz clic en Elige una métrica.
      1. Elige Instancia de VM > Memoria > Uso de memoria (compute.googleapis.com/instance/memory/percent_used).
      2. Haz clic en Aplicar.
    2. En la sección Filtros, sigue estos pasos:
      1. Haz clic en Agregar un filtro.
      2. En el menú desplegable Etiqueta, elige la etiqueta de métrica estado.
      3. En el campo Valor, escribe usado.
      4. Haz clic en Listo.
    3. En la sección Opciones de objetivo de métricas para ajuste de escala automático, haz lo siguiente:
      1. Asegúrate de que el Objetivo de utilización esté seleccionado.
      2. Ingresa un valor objetivo de utilización.
      3. Establece el tipo de objetivo de utilización como Indicador.
    4. Después de configurar la métrica, haz clic en Seleccionar.
  8. Revisa los detalles de la métrica y, luego, haz clic en Listo.

  9. Cuando termines, haz clic en Save.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=agent.googleapis.com/memory/percent_used \
  --stackdriver-metric-filter="metric.labels.state = \"used\""
  --stackdriver-metric-utilization-target-type=gauge \
  --stackdriver-metric-utilization-target=TARGET_VALUE  \

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "filter": "metric.labels.state=\"used\"",
    "utilizationTargetType": "GAUGE",
    "utilizationTarget": TARGET_VALUE,
    "metric": "agent.googleapis.com/memory/percent_used"
  }
  ]
}
}

Ajusta la escala automáticamente según la E/S de disco

Para configurar el ajuste de escala automático en función del recuento total de operaciones de E/S del disco, usa la métrica operation_count que proporcionan las métricas del Agente de operaciones de disco. Si deseas escalar en función de las operaciones de lectura o escritura, filtra la métrica con la etiqueta direction. Del mismo modo, para escalar en función de las operaciones del disco en un dispositivo en particular, usa la etiqueta device en el filtro de métrica.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del MIG en la lista para abrir la página de descripción general del grupo de instancias.

  3. En la página de descripción general del grupo de instancias, haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En Ajuste de escala automático, en la sección Indicadores de ajuste de escala automático, haz clic en Agregar un indicador.

  6. Configura el Tipo de indicador como Métrica de Cloud Monitoring.

  7. Haz clic en Configurar. Se abre el panel Recurso y métrica.

    1. Haz clic en Elige una métrica.
      1. Elige Instancia de VM > Disco > Operaciones del disco (agent.googleapis.com/disk/operation_count).
      2. Haz clic en Aplicar.
    2. En la sección Opciones de objetivo de métricas para ajuste de escala automático, haz lo siguiente:
      1. Asegúrate de que el Objetivo de utilización esté seleccionado.
      2. Ingresa un valor objetivo de utilización.
      3. Establece un tipo de objetivo de utilización.
    3. Después de configurar la métrica, haz clic en Seleccionar.
  8. Revisa los detalles de la métrica y, luego, haz clic en Listo.

  9. Cuando termines, haz clic en Save.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES  \
  --min-num-replicas=MIN_INSTANCES  \
  --update-stackdriver-metric=agent.googleapis.com/disk/operation_count \
  --stackdriver-metric-utilization-target=TARGET_VALUE  \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "utilizationTargetType": "TARGET_TYPE",
    "utilizationTarget": TARGET_VALUE,
    "metric": "agent.googleapis.com/disk/operation_count"
  }
  ]
}
}

Ajusta la escala automáticamente en función del tamaño de otro MIG

Puedes realizar un ajuste de escala automático en un MIG según el tamaño de otro MIG dentro del mismo proyecto. Por ejemplo, puedes tener una aplicación de varios niveles con un MIG de frontend que realice un ajuste de escala automático según un balanceador de cargas y un MIG de backend que realice un ajuste de escala automático de forma proporcional al frontend. Usa una asignación de instancia única para definir cuántas VM de backend se necesitan en cada VM de frontend. Si necesitas 1 VM de backend por cada 4 VMs de frontend, establece la asignación de instancia única en 4 en el MIG de backend.

Para realizar un ajuste de escala automático en un MIG (MIG_1) según el tamaño de otro MIG (MIG_2), usa la métrica instance_group/size que proporciona compute.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del MIG en la lista para abrir la página de descripción general del grupo de instancias.

  3. En la página de descripción general del grupo de instancias, haz clic en Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, elige Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  5. En Ajuste de escala automático, en la sección Indicadores de ajuste de escala automático, haz clic en Agregar un indicador.

  6. Configura el Tipo de indicador como Métrica de Cloud Monitoring.

  7. Haz clic en Configurar. Se abre el panel Recurso y métrica.

    1. Haz clic en Elige una métrica
      1. Elige Grupo de instancias > Instance_group > Tamaño del grupo de instancias (compute.googleapis.com/instance_group/size).
      2. Haz clic en Aplicar.
    2. En la sección Filtros, sigue estos pasos:
      1. Haz clic en Agregar un filtro.
      2. En el menú desplegable Etiqueta, elige la etiqueta de recurso instance_group_name.
      3. En el campo Valor, escribe el nombre del MIG (MIG_2) en función del que deseas que realice el ajuste de escala automático de tu MIG.
      4. Haz clic en Listo.
    3. En la sección Opciones de objetivo de métricas para ajuste de escala automático, haz lo siguiente:
      1. Elige Asignación de instancia de VM única.
      2. En el campo Asignación de instancia de VM única, ingresa 4, si deseas mantener 1 VM en tu MIG actual (MIG_1) por cada 4 VMs en MIG_2.
    4. Después de configurar la métrica, haz clic en Seleccionar.
  8. Revisa los detalles de la métrica y, luego, haz clic en Listo.

  9. Cuando termines, haz clic en Save.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_1 \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=compute.googleapis.com/instance_group/size \
  --stackdriver-metric-filter="resource.type = \"instance_group\" AND resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"" \
  --stackdriver-metric-single-instance-assignment=4

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_1",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "singleInstanceAssignment": 4,
    "filter": "resource.type = \"instance_group\" and resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"",
    "metric": "compute.googleapis.com/instance_group/size"
  }
  ]
}
}

Conceptos de métricas de Monitoring

En esta sección, se proporciona una breve descripción de los conceptos de las métricas de Monitoring que debes conocer mientras configuras el ajuste de escala automático según las métricas de Monitoring.

  • Identificador de la métrica o URL de la métrica: El nombre de la métrica en el formato de una URL sin protocolo. Puedes encontrar las URL de métricas integradas en la lista de métricas.

    Por ejemplo, la URL de una métrica de Pub/Sub que proporciona la cantidad de mensajes no confirmados es pubsub.googleapis.com/subscription/num_undelivered_messages.

  • Tipo de recurso supervisado: La fuente del valor de la métrica. Puedes encontrar el tipo de recurso supervisado de una métrica en la lista de métricas.

    Por ejemplo, el tipo de recurso supervisado de la métrica pubsub.googleapis.com/subscription/num_undelivered_messages es pubsub_subscription. Para obtener más detalles sobre cada tipo de recurso supervisado, consulta Tipos de recursos supervisados.

  • Filtro de métrica: Cuando tu métrica tiene varios valores, un filtro permite que el escalador automático identifique un valor de métrica específico del conjunto de valores de métricas posibles. Usa las etiquetas definidas en una métrica y un tipo de recurso supervisado para filtrar los valores. Si quieres explorar tus valores de métrica con diferentes filtros, puedes probarlos en el Explorador de métricas.

    Por ejemplo, en la siguiente captura de pantalla, se muestra la métrica pubsub.googleapis.com/subscription/num_undelivered_messages que indica la cantidad de mensajes no confirmados en todas las suscripciones disponibles. Cada línea del gráfico indica una suscripción.

    Explorador de métricas que muestra valores de métricas sin filtro.

    Sin un filtro, el escalador automático toma la suma de los valores de las métricas de todas las suscripciones. Para realizar un ajuste de escala automático en función de una sola suscripción, aplica un filtro en la etiqueta subscription_id definida para pubsub_subscription. En la siguiente captura de pantalla, se muestra una suscripción única después de aplicar el filtro.

    Explorador de métricas que muestra el valor de la métrica filtrada.

Requisitos del filtrado de métricas

Cuando usas una métrica que tiene varios valores (clasificados con etiquetas), puedes aplicar un filtro para realizar un ajuste de escala automático en función de los valores específicos de la métrica. Si el filtro muestra varios valores, estos se agregan juntos. Si quieres obtener los mejores resultados, crea un filtro que sea lo bastante específico a fin de mostrar un solo valor.

El filtrado del escalador automático para las métricas es compatible con la sintaxis de filtro de Monitoring. El filtro debe cumplir con los siguientes requisitos:

  • Debes incluir el valor de un filtro entre comillas dobles.
  • Debes usar el operador de comparación de igualdad directa (=).
  • Debes usar el operador AND para unir diferentes criterios de filtro.

    Por ejemplo: --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"our-subscription\""

  • Debes usar valores directos. No puedes usar comodines ni funciones en el filtro.

    Por ejemplo, no puedes usar resource.labels.zone = starts_with("us-").

  • No puedes usar etiquetas de metadatos de recursos que almacenen metadatos sobre un recurso supervisado.

Para obtener una referencia completa de las etiquetas de métricas y las etiquetas de recursos supervisados por las que puedes filtrar, consulta la lista de métricas y la lista de recursos supervisados.

Requisitos de las métricas personalizadas

Para usar métricas personalizadas, primero debes crear una métrica personalizada asociada con uno de los tipos de recursos supervisados.

Una métrica personalizada que se usa para el ajuste de escala automático debe tener las siguientes propiedades:

  • Si la configuración del ajuste de escala automático usa datos de cada VM en el grupo, configura instancias en el MIG para que cada VM exporte la métrica personalizada. Los valores exportados de cada VM deben estar asociados con un recurso supervisado gce_instance, que contiene las siguientes etiquetas:
    • zone con el nombre de la zona en la que se encuentra la instancia.
    • instance_id con el valor del ID numérico único asignado a la VM.
  • La métrica debe exportar datos al menos cada 60 segundos. Si tu frecuencia de exportación de datos es menor a 60 segundos, el escalador automático puede responder más rápido para cargar los cambios. Si tu frecuencia de exportación de datos es menor a 60 segundos, es posible que el escalador automático no responda con la rapidez suficiente para cargar los cambios.
  • La métrica debe exportar datos que sean del tipo de valor INT64 o DOUBLE.

Para obtener información sobre cómo crear una métrica personalizada, consulta Usa métricas personalizadas

¿Qué sigue?