Escala basada en métricas de monitoreo


El escalado automático basado en métricas de Cloud Monitoring le permite ajustar la capacidad necesaria según las mediciones de su aplicación. Cuando escala automáticamente un MIG en función de una métrica, el escalador automático crea máquinas virtuales cuando el valor de la métrica aumenta y las elimina cuando el valor disminuye.

Por ejemplo, puede definir cuántas máquinas virtuales necesita por recuento de usuarios, latencia o cantidad de mensajes en una suscripción de Pub/Sub. Puede utilizar las métricas integradas proporcionadas por el servicio de Monitoreo o las métricas personalizadas que exporta desde su aplicación.

Este documento describe cómo escalar automáticamente un grupo de instancias administrado (MIG) en función de las métricas de monitoreo.

También puede escalar automáticamente un MIG según la utilización de la CPU , la capacidad de servicio de equilibrio de carga o los cronogramas .

Antes de comenzar

  • Lea acerca de los fundamentos del escalador automático.
  • Lea acerca de los conceptos de métricas de monitoreo utilizados en una configuración de escalado automático.
  • Si desea escalar automáticamente según una métrica del Ops Agent , instale el Ops Agent .
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Limitaciones

El escalado basado en métricas de monitoreo está restringido por las limitaciones de todos los escaladores automáticos , así como por las siguientes limitaciones:

  • Puede configurar el escalado automático basado en hasta 5 métricas de monitoreo por MIG.
  • Puede escalar automáticamente en función de métricas que tengan tipos de valores INT64 o DOUBLE únicamente. No se admiten otros tipos de valores .
  • No puede configurar la misma métrica más de una vez en una política de escalado automático.

Configurar el escalado automático basado en métricas de monitoreo

Puede utilizar un valor de métrica de Monitoreo para el ajuste de escala automático de dos maneras diferentes:

  • Objetivo de utilización : si desea que el escalador automático mantenga una métrica en un valor específico, configure un objetivo de utilización . El escalador automático crea máquinas virtuales cuando el valor de la métrica está por encima del objetivo y las elimina 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/disco o la latencia promedio de su aplicación. El siguiente diagrama muestra cómo un escalador automático agrega y elimina máquinas virtuales en respuesta a un valor de métrica para mantener un objetivo de utilización.

    Autoscaler agrega y elimina máquinas virtuales para mantener un objetivo de utilización.

  • Asignación de instancia única : si desea escalar automáticamente en función de la cantidad de trabajo disponible para asignar a cada VM, configure una asignación de instancia única . La asignación de instancia única que especifique representa cuánto trabajo espera que maneje 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 máquinas virtuales se necesitan. Por ejemplo, si la métrica es igual a 100 y la asignación de instancia única es 5, entonces el escalador automático crea 20 VM en el MIG. Esto es útil para 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 instancia única no se aplica a las métricas que provienen de cada VM. El siguiente diagrama muestra la relación proporcional entre el valor de la métrica y la cantidad de VM al escalar con asignación de instancia única.

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

Escalado automático para mantener una métrica en un valor objetivo

Cuando desee mantener una métrica en un valor objetivo, especifique un objetivo de utilización. El escalador automático crea máquinas virtuales cuando el valor de la métrica está por encima del objetivo y las elimina cuando el valor de la métrica está por debajo del objetivo.

  • Si la métrica proviene de cada VM en su MIG, entonces el escalador automático toma el valor de métrica promedio en todas las VM en el MIG y lo compara con el objetivo de utilización. Por ejemplo, si desea escalar automáticamente utilizando la métrica tcp_connections que proporciona la cantidad de conexiones TCP en una VM, entonces el escalador automático toma una cantidad promedio de conexiones TCP en todas las VM en el MIG para compararla con el objetivo. Cuando se utilizan métricas que se originan en una máquina virtual, el MIG no puede escalar a 0 porque el escalador automático requiere al menos una máquina virtual para publicar un valor de métrica.

  • Si la métrica se aplica a todo el MIG y no proviene de las máquinas virtuales de su MIG, entonces el escalador automático compara el valor de la métrica con el objetivo de utilización. Por ejemplo, puede utilizar una métrica personalizada que mida la latencia de su aplicación.

Cuando su métrica tenga varios valores, aplique un filtro para escalar automáticamente utilizando un valor individual de la métrica. Para obtener más detalles sobre los filtros de métricas y otros campos que puede utilizar en su configuración, consulte Supervisión de conceptos de métricas .

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

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

  3. Haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En Autoescalado , en la sección Señales de Autoescalado , si existe una señal para una métrica de Cloud Monitoring, puede hacer clic para editarla o hacer clic en Agregar una señal para agregar una nueva señal.

  6. Establezca el tipo de señal en la métrica Monitoreo de la nube .

  7. Haga clic en Configurar . En el panel Recursos y métricas que se abre, haga lo siguiente:

    1. Haga clic en Seleccionar una métrica .
      1. Seleccione la métrica que desea utilizar para el escalado automático. Puede filtrar las métricas según cualquier palabra clave (por ejemplo, memoria, bytes, disco).
      2. Haga clic en Aplicar . El panel muestra un gráfico que muestra los datos de la métrica seleccionada.
    2. Si desea utilizar datos específicos de la métrica, agregue un filtro basado en etiquetas de la siguiente manera:

      1. En la sección Filtros , haga clic en Agregar un filtro .
      2. Seleccione una etiqueta e ingrese un valor .
      3. Haga clic en Listo . El gráfico se actualiza para mostrarle el valor filtrado de la métrica.
    3. Para ver el valor agregado de la métrica que se utilizará para escalar automáticamente su MIG, active 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 destino de métricas para el escalado automático , seleccione Destino de utilización .

    5. Proporcione lo siguiente:

      1. Objetivo de utilización : especifique el valor que debe mantener el escalador automático. Este debe ser un número positivo. Por ejemplo, tanto 24,5 como 100 son valores aceptables.
      2. Tipo de objetivo de utilización : seleccione un tipo de objetivo que corresponda al tipo de medición de la métrica. Para realizar comparaciones precisas, si el objetivo de utilización se mide por segundos, utilice Delta/segundo como tipo de objetivo. Del mismo modo, utilice Delta/min para un objetivo de utilización medido en minutos.
        • Calibre : 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 promedio de crecimiento por minuto y la compara con el objetivo de utilización.
        • Delta/segundo : el escalador automático calcula la tasa promedio de crecimiento por segundo y la compara con el objetivo de utilización.
    6. Cuando haya terminado de configurar la métrica, haga clic en Seleccionar .

  8. Revise los detalles de la métrica y haga clic en Listo .

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

nube de gcloud

Para configurar el escalado automático basado en métricas de monitoreo, use el comando set-autoscaling .

Utilice el siguiente comando para escalar automáticamente en función de una métrica de supervisión con un objetivo de utilización.

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 su métrica tiene varios valores y desea utilizar un valor individual para el ajuste de escala automático, utilice el indicador --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"

Reemplace lo siguiente:

  • MIG_NAME : el MIG en el que deseas agregar un escalador automático.
  • MAX_INSTANCES : el número máximo de VM que puede tener el MIG.
  • MIN_INSTANCES : el número mínimo de VM que debe tener el MIG.
  • METRIC_URL : una URL sin protocolo de una métrica de monitoreo. Por ejemplo, compute.googleapis.com/instance/uptime . Si utiliza una métrica personalizada, debe cumplir con los requisitos de métrica personalizada .
  • 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.
    • El gauge automático calcula el valor promedio de los datos recopilados en los últimos minutos y lo compara con el objetivo de utilización.
    • delta-per-minute el escalador automático calcula la tasa promedio de crecimiento por minuto y la compara con el objetivo de utilización.
    • delta-per-second el escalador automático calcula la tasa promedio de crecimiento por segundo y la compara con el objetivo de utilización. Para realizar comparaciones precisas, si establece el objetivo de utilización en segundos, utilice delta-per-second como tipo de objetivo. Del mismo modo, utilice delta-per-minute para un objetivo de utilización en minutos.
  • METRIC_FILTER : aplica un filtro para usar un valor individual de una métrica que tiene múltiples valores y para especificar el tipo de recurso monitoreado. Si usa una métrica que proviene de cada VM, no tiene que especificar el tipo de recurso monitoreado porque gce_instance se usa de forma predeterminada. Para otras métricas, utilice resource.type en la expresión de filtro para especificar el recurso monitoreado. Para obtener más información sobre el filtro de métricas, consulte Conceptos de supervisión de métricas .

Para ver una lista completa de los comandos e indicadores disponibles para la CLI de gcloud, consulta la referencia gcloud .

DESCANSAR

Para configurar el escalado automático basado en métricas de monitoreo para un MIG zonal, use el recurso autoscalers o, para un MIG regional, use el recurso regionAutoscalers .

Realice la siguiente llamada para escalar automáticamente un MIG zonal en función de una métrica de monitoreo con un objetivo de utilización.

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 su métrica tiene varios valores y desea utilizar un valor individual para el ajuste de escala automático, utilice el parámetro filter como se indica en la siguiente llamada 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"
    }
  ],
 }
}

Reemplace lo siguiente:

  • PROJECT_ID : su ID de proyecto .
  • ZONE : la zona donde se encuentra el MIG.
  • AUTOSCALER_NAME : el nombre del escalador automático.
  • MIG_NAME : el MIG en el que deseas agregar un escalador automático.
  • MAX_INSTANCES : el número máximo de VM que puede tener el MIG.
  • MIN_INSTANCES : el número mínimo de VM que debe tener el MIG.
  • METRIC_URL : una URL sin protocolo de una métrica de monitoreo. Por ejemplo, compute.googleapis.com/instance/uptime . Si utiliza una métrica personalizada, debe cumplir con los requisitos de métrica personalizada .
  • 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.
    • GAUGE : 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_PER_MINUTE El escalador automático calcula la tasa promedio de crecimiento por minuto y la compara con el objetivo de utilización.
    • DELTA_PER_SECOND El escalador automático calcula la tasa promedio de crecimiento por segundo y la compara con el objetivo de utilización. Para realizar comparaciones precisas, si establece el objetivo de utilización en segundos, utilice DELTA_PER_SECOND como tipo de objetivo. Del mismo modo, utilice DELTA_PER_MINUTE para un objetivo de utilización en minutos.
  • METRIC_FILTER : aplica un filtro para usar un valor individual de una métrica con múltiples valores y para especificar el tipo de recurso monitoreado. Si usa una métrica que proviene de cada VM, no tiene que especificar el tipo de recurso monitoreado porque gce_instance se usa de forma predeterminada. Para otras métricas, debe especificar el recurso monitoreado mediante el selector resource.type . Para obtener más información sobre el filtro de métricas, consulte Conceptos de supervisión de métricas .

Escalado automático basado en el trabajo disponible para cada VM en un MIG

Cuando desee escalar automáticamente en función de la cantidad de trabajo disponible para cada VM en un MIG, especifique una asignación de instancia única. El valor de la asignación de instancia única que establezca indica cuánto trabajo espera que maneje 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 máquinas virtuales se necesitan.

Un valor métrico de 0 indica que no hay trabajo que su MIG deba completar. Si el número mínimo de instancias de su MIG se establece en 0 y su valor de métrica cae a 0 , entonces el MIG aumenta a 0 hasta que el valor de la métrica aumenta.

Cuando su métrica tenga varios valores, aplique un filtro para escalar automáticamente utilizando un valor individual de la métrica. Para obtener más detalles sobre los filtros de métricas y otros campos que puede utilizar en su configuración, consulte Supervisión de conceptos de métricas .

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

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

  3. Haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En Escala automática , en la sección Señales de escala automática , si existe una señal para una métrica de monitoreo, puede hacer clic para editarla o hacer clic en Agregar una señal para agregar una nueva métrica.

  6. Establezca el tipo de señal en la métrica Monitoreo de la nube .

  7. Haga clic en Configurar . En el panel Recursos y métricas que se abre, haga lo siguiente:

    1. Haga clic en Seleccionar una métrica .
      1. Seleccione la métrica que desea utilizar para el escalado automático. Puede filtrar las métricas según cualquier palabra clave (por ejemplo, memoria, bytes, disco).
      2. Haga clic en Aplicar . El panel muestra un gráfico que muestra los datos de la métrica seleccionada.
    2. Si desea utilizar datos específicos de la métrica, agregue un filtro basado en etiquetas de la siguiente manera:

      1. En la sección Filtros , haga clic en Agregar un filtro .
      2. Seleccione una etiqueta e ingrese un valor .
      3. Haga clic en Listo . El gráfico se actualiza para mostrarle el valor de la métrica filtrada.
    3. Para ver el valor agregado de la métrica que se utilizará para escalar automáticamente su MIG, active 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 destino de métricas para el escalado automático , seleccione Asignación de instancia de VM única .

    5. Proporcione 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 haya terminado de configurar la métrica, haga clic en Seleccionar .

  8. Revise los detalles de la métrica y haga clic en Listo .

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

nube de gcloud

Para configurar el escalado automático basado en métricas de monitoreo, use el comando set-autoscaling .

En el comando, especifique el indicador --stackdriver-metric-single-instance-assignment para indicar la cantidad de trabajo que espera que maneje cada VM del grupo.

El siguiente comando 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

Reemplace lo siguiente:

  • MIG_NAME : el nombre del MIG donde desea agregar un escalador automático.
  • MAX_INSTANCES : el número máximo de VM que puede tener el MIG.
  • MIN_INSTANCES : el número mínimo de VM que debe tener el MIG.
  • METRIC_URL : una URL sin protocolo de una métrica de monitoreo. Por ejemplo, compute.googleapis.com/instance_group/size . Si utiliza una métrica personalizada, debe cumplir con los requisitos de métrica personalizada .
  • METRIC_FILTER : aplica un filtro para usar un valor individual de una métrica con múltiples valores y para especificar el tipo de recurso monitoreado. Para obtener más información sobre el filtro de métricas, consulte Conceptos de supervisión de métricas .
  • INSTANCE_ASSIGNMENT : la cantidad de trabajo a asignar a cada instancia de VM en el MIG.

DESCANSAR

Para configurar el escalado automático basado en métricas de monitoreo para un MIG zonal, use el recurso autoscalers o, para un MIG regional, use el recurso regionAutoscalers .

Utilice el parámetro singleInstanceAssignment para especificar la cantidad de trabajo que espera que maneje cada VM.

Por ejemplo, realice 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
    }
  ],
 }
}

Reemplace lo siguiente:

  • PROJECT_ID : su ID de proyecto .
  • ZONE : la zona donde se encuentra el MIG.
  • AUTOSCALER_NAME : el nombre del escalador automático.
  • MIG_NAME : el nombre del MIG donde desea agregar un escalador automático.
  • MAX_INSTANCES : el número máximo de VM que puede tener el MIG.
  • MIN_INSTANCES : el número mínimo de VM que debe tener el MIG.
  • METRIC_URL : una URL sin protocolo de una métrica de monitoreo. Por ejemplo, compute.googleapis.com/instance_group/size . Si utiliza una métrica personalizada, debe cumplir con los requisitos de métrica personalizada .
  • METRIC_FILTER : aplica un filtro para usar un valor individual de una métrica con múltiples valores y para especificar el tipo de recurso monitoreado. Para obtener más información sobre el filtro de métricas, consulte Conceptos de supervisión de métricas .
  • INSTANCE_ASSIGNMENT : la cantidad de trabajo a asignar a cada instancia de VM en el MIG.

Ejemplos de escalado automático basado en métricas

Esta sección proporciona algunos ejemplos de métricas utilizadas para el escalado automático. Para obtener una lista completa de métricas, consulte Google Cloud métricas .

Escalado automático basado en una métrica personalizada

Puede darse una situación en la que la métrica que proporciona una señal relevante no represente una cantidad total de trabajo disponible u otro recurso aplicable al grupo, sino un promedio, un percentil o alguna otra propiedad estadística. Para este ejemplo, supongamos que escala según la latencia de procesamiento promedio del grupo.

Suponga la siguiente configuración:

  • Se asigna un MIG zonal llamado our-instance-group para realizar una tarea particular. El grupo está ubicado en la zona us-central1-a .
  • Tiene una métrica personalizada de Monitoreo que exporta un valor que le gustaría mantener en un nivel particular. Para este ejemplo, supongamos que la métrica representa la latencia promedio del procesamiento de consultas asignadas al grupo.
    • La métrica personalizada se denomina: custom.googleapis.com/example_average_latency .
    • La métrica personalizada tiene una etiqueta con una clave denominada group_name y un valor igual al nombre del MIG, our-instance-group .
    • La métrica personalizada exporta datos para el recurso monitoreado global , es decir, no está asociado con ninguna VM específica.

Ha determinado que cuando el valor de la métrica está por encima de algún valor específico, necesita agregar más máquinas virtuales al grupo para manejar la carga, mientras que cuando está por debajo de ese valor, puede liberar algunos recursos. Desea que el escalador automático agregue o elimine gradualmente máquinas virtuales a una velocidad proporcional a cuánto está la métrica por encima o por debajo del objetivo. Para este ejemplo, supongamos que ha determinado que su valor objetivo es 250 delta/sec .

Puede configurar el escalado automático para el grupo utilizando 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:

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

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

  3. Haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En Escala automática , en la sección Señales de escala automática , haga clic en Agregar una señal .

  6. Establezca el tipo de señal en la métrica Monitoreo de la nube .

  7. Haga clic en Configurar . Se abre el panel Recursos y métricas .

    1. Haga clic en Seleccionar una métrica .
      1. Elija su métrica en Global > Métricas personalizadas .
      2. Haga clic en Aplicar .
    2. En la sección Filtros , haga lo siguiente:
      1. Haga clic en Agregar un filtro .
      2. En el menú desplegable Etiqueta , seleccione group_name .
      3. En el campo Valor , proporcione our-instance-group .
      4. Haga clic en Listo . El gráfico se actualiza para mostrar el valor filtrado de la métrica.
    3. En la sección Opciones de destino de métricas para escalado automático , haga lo siguiente:
      1. Seleccione Objetivo de utilización .
      2. Ingrese el valor objetivo de utilización como 250.
      3. Establezca el tipo de objetivo de utilización en Delta/seg .
    4. Una vez que haya configurado la métrica, haga clic en Seleccionar .
  8. Revise los detalles de la métrica y luego haga clic en Listo .

  9. Cuando haya terminado, haga clic en Guardar .

nube de 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

DESCANSAR

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"
    }
  ]
}
}

Escalado automático basado en mensajes no reconocidos en Pub/Sub

Para configurar el ajuste de escala automático en función de mensajes no reconocidos en una suscripción de Pub/Sub , use la métrica subscription/num_undelivered_messages proporcionada por pubsub y filtre por subscription ID .

La métrica subscription/num_undelivered_messages exporta el número total de mensajes de la suscripción, incluidos los mensajes que se están procesando pero que aún no se han confirmado. No se recomienda el uso de una métrica que no incluya los mensajes que se están procesando porque dicha métrica puede caer a 0 cuando todavía hay trabajo por hacer, lo que provoca que el escalado automático aumente y posiblemente interrumpa el trabajo real.

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

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

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

  3. Haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En la sección Señales de escala automática , haga clic en Agregar una señal .

  6. Establezca el tipo de señal en Cola de Cloud Pub/Sub .

  7. Seleccione un tema . Si desea un tema nuevo, haga clic en Crear un tema para crear uno .

  8. Seleccione la suscripción según la cual desea escalar automáticamente su MIG. Si desea una nueva suscripción, haga clic en Crear una suscripción para crear una .

  9. En el campo Número de mensajes para asignar a cada VM , especifique el número de mensajes no confirmados que espera que maneje cada VM.

  10. Haga clic en Listo .

  11. Cuando haya terminado, haga clic en Guardar .

nube de 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

DESCANSAR

Para configurar el ajuste de escala automático para un MIG zonal, use el recurso autoscalers o, para un MIG regional, use el recurso regionAutoscalers .

Por ejemplo, realice la siguiente llamada para 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"
    }
  ]
}
}

Escalado automático basado en el tráfico de red entrante

Para configurar el escalado automático en función del tráfico de red entrante a las máquinas virtuales en su MIG, use la métrica instance/network/received_bytes_count proporcionada por compute .

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

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

  3. Haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En Escala automática , en la sección Señales de escala automática , haga clic en Agregar una señal .

  6. Establezca el tipo de señal en la métrica Monitoreo de la nube .

  7. Haga clic en Configurar . Se abre el panel Recursos y métricas .

    1. Haga clic en Seleccionar una métrica .
      1. Seleccione Instancia de VM > Instancia > Bytes recibidos ( compute.googleapis.com/instance/network/received_bytes_count ).
      2. Haga clic en Aplicar .
    2. En la sección Opciones de destino de métricas para escalado automático , haga lo siguiente:
      1. Asegúrese de que el objetivo de utilización esté seleccionado.
      2. Introduzca un valor objetivo de utilización.
      3. Establezca un tipo de objetivo de utilización.
    3. Una vez que haya configurado la métrica, haga clic en Seleccionar .
  8. Revise los detalles de la métrica y luego haga clic en Listo .

  9. Cuando haya terminado, haga clic en Guardar .

nube de 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

DESCANSAR

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"
    }
  ]
}
}

Escalado automático basado en el uso de memoria

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

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

  2. Haga clic en el nombre de su MIG de 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, haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En Escala automática , en la sección Señales de escala automática , haga clic en Agregar una señal .

  6. Establezca el tipo de señal en la métrica Monitoreo de la nube .

  7. Haga clic en Configurar . Se abre el panel Recursos y métricas .

    1. Haga clic en Seleccionar una métrica .
      1. Seleccione Instancia de VM > Memoria > Utilización de memoria ( compute.googleapis.com/instance/memory/percent_used ).
      2. Haga clic en Aplicar .
    2. En la sección Filtros , haga lo siguiente:
      1. Haga clic en Agregar un filtro .
      2. En el menú desplegable Etiqueta , elija la etiqueta de métrica de estado .
      3. En el campo Valor , escriba usado .
      4. Haga clic en Listo .
    3. En la sección Opciones de destino de métricas para escalado automático , haga lo siguiente:
      1. Asegúrese de que el objetivo de utilización esté seleccionado.
      2. Introduzca un valor objetivo de utilización.
      3. Establezca el tipo de objetivo de utilización en Calibre .
    4. Una vez que haya configurado la métrica, haga clic en Seleccionar .
  8. Revise los detalles de la métrica y luego haga clic en Listo .

  9. Cuando haya terminado, haga clic en Guardar .

nube de 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  \

DESCANSAR

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"
  }
  ]
}
}

Escalado automático basado en E/S de disco

Para configurar el ajuste de escala automático en función del recuento total de operaciones de E/S de disco, utilice la métrica operation_count proporcionada por las métricas del Agente de operaciones de disco . Si desea escalar en función de operaciones de lectura o escritura, filtre la métrica mediante la etiqueta direction . De manera similar, para escalar según las operaciones de disco en un dispositivo en particular, use la etiqueta device en el filtro de métricas.

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

  2. Haga clic en el nombre de su MIG de 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, haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En Escala automática , en la sección Señales de escala automática , haga clic en Agregar una señal .

  6. Establezca el tipo de señal en la métrica Monitoreo de la nube .

  7. Haga clic en Configurar . Se abre el panel Recursos y métricas .

    1. Haga clic en Seleccionar una métrica .
      1. Seleccione Instancia de VM > Disco > Operaciones de disco ( agent.googleapis.com/disk/operation_count ).
      2. Haga clic en Aplicar .
    2. En la sección Opciones de destino de métricas para escalado automático , haga lo siguiente:
      1. Asegúrese de que el objetivo de utilización esté seleccionado.
      2. Introduzca un valor objetivo de utilización.
      3. Establezca un tipo de objetivo de utilización.
    3. Una vez que haya configurado la métrica, haga clic en Seleccionar .
  8. Revise los detalles de la métrica y luego haga clic en Listo .

  9. Cuando haya terminado, haga clic en Guardar .

nube de 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

DESCANSAR

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"
  }
  ]
}
}

Escala automática basada en el tamaño de otro MIG

Puede escalar automáticamente un MIG según el tamaño de otro MIG dentro del mismo proyecto. Por ejemplo, puede tener una aplicación de varios niveles con un MIG de frontend que se escala automáticamente en función de un equilibrador de carga y un MIG de backend que se escala automáticamente proporcionalmente al frontend. Utilice una asignación de instancia única para definir cuántas VM de backend se necesitan para cada VM de frontend. Si necesita 1 VM de backend por cada 4 VM de frontend, establezca la asignación de instancia única en 4 en el MIG de backend.

Para escalar automáticamente un MIG ( MIG_1 ) en función del tamaño de otro MIG ( MIG_2 ), utilice la métrica instance_group/size proporcionada por compute .

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

  2. Haga clic en el nombre de su MIG de 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, haga clic en Editar .

  4. Si no existe ninguna configuración de escalado automático:

    1. En Escala automática , haga clic en Configurar escala automática .
    2. En Modo de escalado automático , seleccione Activado: agregar y eliminar instancias al grupo para habilitar el escalado automático.
  5. En Escala automática , en la sección Señales de escala automática , haga clic en Agregar una señal .

  6. Establezca el tipo de señal en la métrica Monitoreo de la nube .

  7. Haga clic en Configurar . Se abre el panel Recursos y métricas .

    1. Haga clic en Seleccionar una métrica
      1. Seleccione Grupo de instancias > Grupo_instancia > Tamaño del grupo de instancias ( compute.googleapis.com/instance_group/size ).
      2. Haga clic en Aplicar .
    2. En la sección Filtros , haga lo siguiente:
      1. Haga clic en Agregar un filtro .
      2. En el menú desplegable Etiqueta , elija la etiqueta de recurso nombre_grupo_instancia .
      3. En el campo Valor , escriba el nombre del MIG ( MIG_2 ) según el cual desea escalar automáticamente su MIG.
      4. Haga clic en Listo .
    3. En la sección Opciones de destino de métricas para escalado automático , haga lo siguiente:
      1. Seleccione Asignación de instancia de máquina virtual única .
      2. En el campo Asignación de instancia de VM única, ingrese 4 , si desea mantener 1 VM en su MIG actual ( MIG_1 ) por cada 4 VM en MIG_2 .
    4. Una vez que haya configurado la métrica, haga clic en Seleccionar .
  8. Revise los detalles de la métrica y luego haga clic en Listo .

  9. Cuando haya terminado, haga clic en Guardar .

nube de 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

DESCANSAR

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 seguimiento

Esta sección proporciona una breve descripción de los conceptos de métricas de monitoreo que necesita conocer al configurar el escalado automático basado en métricas de monitoreo.

  • Identificador de métrica o URL de métrica : el nombre de la métrica en forma de URL sin protocolo. Puede encontrar URL para 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 reconocidos es pubsub.googleapis.com/subscription/num_undelivered_messages .

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

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

  • Filtro de métrica : cuando su métrica tiene varios valores, un filtro permite que el escalador automático identifique un valor de métrica específico del conjunto de posibles valores de métrica. Utilice las etiquetas definidas en una métrica y un tipo de recurso monitoreado para filtrar los valores. Si desea explorar los valores de sus métricas con diferentes filtros, puede probarlos en el explorador de métricas .

    Por ejemplo, la siguiente captura de pantalla muestra la métrica pubsub.googleapis.com/subscription/num_undelivered_messages que proporciona la cantidad de mensajes no reconocidos 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 métricas de todas las suscripciones. Para escalar automáticamente en función de una única suscripción, aplique un filtro en la etiqueta subscription_id definida para pubsub_subscription . La siguiente captura de pantalla muestra una única suscripción después de aplicar el filtro.

    Explorador de métricas que muestra el valor de métrica filtrado.

Requisitos de filtrado de métricas

Cuando utiliza una métrica que tiene varios valores (clasificados mediante etiquetas ), puede aplicar un filtro para escalar automáticamente en función de valores específicos de la métrica. Si el filtro devuelve varios valores, los valores se suman. Para obtener mejores resultados, cree un filtro que sea lo suficientemente específico como para devolver un valor único.

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

  • Debe encerrar el valor de un filtro entre comillas dobles.
  • Debes utilizar el operador de comparación de igualdad directa ( = ).
  • Debe utilizar 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 utilizar valores directos. No puede utilizar comodines ni funciones en el filtro.

    Por ejemplo, no puede utilizar resource.labels.zone = starts_with("us-") .

  • No puede usar etiquetas de metadatos de recursos que almacenen metadatos sobre un recurso monitoreado.

Para obtener una referencia completa de etiquetas métricas y etiquetas de recursos monitoreadas en las que puede filtrar, consulte la lista de métricas y la lista de recursos monitoreados .

Requisitos métricos personalizados

Para usar métricas personalizadas, primero debe crear una métrica personalizada que esté asociada con uno de los tipos de recursos monitoreados .

Una métrica personalizada utilizada para el autoscalado debe tener las siguientes propiedades:

  • Si la configuración de autoscalaje utiliza datos de cada VM en el grupo, configure instancias en su MIG para que cada VM exporte la métrica personalizada. Los valores exportados de cada VM deben estar asociados con un recurso monitoreado gce_instance , que contiene las siguientes etiquetas:
    • zone con el nombre de la zona en la que está la instancia.
    • instance_id con el valor de ID numérico único asignado a la VM.
  • La métrica debe exportar datos al menos cada 60 segundos. Si exporta datos con más frecuencia de cada 60 segundos, el AutoScaler puede responder a los cambios de carga más rápidamente. Si exporta sus datos menos frecuentes que cada 60 segundos, el AutoScaler podría no responder a los cambios de carga lo suficientemente rápido.
  • La métrica debe exportar datos de tipo INT64 o DOUBLE valor.

Para obtener información sobre cómo crear una métrica personalizada, consulte el uso de métricas personalizadas .

¿Qué sigue?