Dimensione com base nas métricas de monitoramento


O escalonamento automático baseado nas métricas do Cloud Monitoring permite ajustar a capacidade necessária de acordo com as medições do seu aplicativo. Quando você dimensiona automaticamente um MIG com base em uma métrica, o escalonador automático cria VMs quando o valor da métrica aumenta e exclui VMs quando o valor diminui.

Por exemplo, você pode definir quantas VMs são necessárias por contagem de usuários, latência ou número de mensagens em uma assinatura do Pub/Sub. Você pode usar as métricas integradas fornecidas pelo serviço Monitoring ou as métricas customizadas que você exporta do seu aplicativo.

Este documento descreve como dimensionar automaticamente um grupo gerenciado de instâncias (MIG) com base nas métricas do Monitoring.

Você também pode dimensionar automaticamente um MIG com base na utilização da CPU , capacidade de serviço de balanceamento de carga ou agendamentos .

Antes de começar

  • Leia sobre os fundamentos do escalonador automático.
  • Leia sobre os conceitos de métricas de monitoramento usados ​​em uma configuração de escalonamento automático.
  • Se você quiser fazer o escalonamento automático com base em uma métrica do Ops Agent , instale o Ops Agent .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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 as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        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 mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Limitações

O escalonamento baseado em métricas de monitoramento é restrito pelas limitações de todos os escalonadores automáticos , bem como pelas seguintes limitações:

  • Você pode configurar o escalonamento automático com base em até cinco métricas de monitoramento por MIG.
  • Você pode dimensionar automaticamente com base em métricas que possuem apenas tipos de valor INT64 ou DOUBLE . Outros tipos de valor não são suportados.
  • Não é possível configurar a mesma métrica mais de uma vez em uma política de escalonamento automático.

Configurar o escalonamento automático com base nas métricas do Monitoring

Você pode usar um valor de métrica do Monitoring para escalonamento automático de duas maneiras diferentes:

  • Meta de utilização : se você deseja que o escalonador automático mantenha uma métrica em um valor específico, configure uma meta de utilização . O escalonador automático cria VMs quando o valor da métrica está acima da meta e exclui VMs quando o valor da métrica está abaixo da meta. Isso é útil para métricas como tráfego de rede, uso de memória/disco ou latência média do seu aplicativo. O diagrama a seguir mostra como um escalonador automático adiciona e remove VMs em resposta a um valor de métrica para manter uma meta de utilização.

    Autoescalador adicionando e removendo VMs para manter uma meta de utilização.

  • Atribuição de instância única : se você quiser fazer o escalonamento automático com base na quantidade de trabalho disponível para atribuir a cada VM, configure uma atribuição de instância única . A atribuição de instância única especificada representa quanto trabalho você espera que cada VM lide. O escalonador automático divide o valor da métrica pelo valor de atribuição de instância única para calcular quantas VMs são necessárias. Por exemplo, se a métrica for igual a 100 e a atribuição de instância única for 5, o autoescalador criará 20 VMs no MIG. Isso é útil para métricas que refletem a quantidade de trabalho, como comprimento da fila do Pub/Sub ou contagem de jobs em lote. A atribuição de instância única não se aplica a métricas provenientes de cada VM. O diagrama a seguir mostra a relação proporcional entre o valor da métrica e o número de VMs ao escalar com atribuição de instância única.

    A relação proporcional entre o valor da métrica e o número de instâncias.

Dimensionamento automático para manter uma métrica em um valor desejado

Quando você quiser manter uma métrica em um valor alvo, especifique uma meta de utilização. O escalonador automático cria VMs quando o valor da métrica está acima da meta e exclui VMs quando o valor da métrica está abaixo da meta.

  • Se a métrica vier de cada VM no seu MIG, o autoescalador pegará o valor médio da métrica em todas as VMs no MIG e o comparará com a meta de utilização. Por exemplo, se você quiser fazer o escalonamento automático usando a métrica tcp_connections que fornece o número de conexões TCP em uma VM, o escalonador automático usará um número médio de conexões TCP em todas as VMs no MIG para comparar com o destino. Quando você usa essas métricas originadas de uma VM, o MIG não pode ser dimensionado para 0 porque o escalonador automático exige pelo menos uma VM para publicar um valor de métrica.

  • Se a métrica se aplicar a todo o MIG e não vier das VMs do seu MIG, o escalonador automático comparará o valor da métrica com a meta de utilização. Por exemplo, você pode usar uma métrica personalizada que mede a latência do seu aplicativo.

Quando sua métrica tiver vários valores, aplique um filtro ao dimensionamento automático usando um valor individual da métrica. Para obter mais detalhes sobre filtros de métrica e outros campos que podem ser usados ​​em sua configuração, consulte Conceitos de métricas de monitoramento .

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Se você não tiver um grupo de instâncias gerenciadas, crie um . Caso contrário, clique no nome de um MIG na lista para abrir a página do grupo de instâncias.

  3. Clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Em Escalonamento automático , na seção Sinais de escalonamento automático , se existir um sinal para uma métrica do Cloud Monitoring, você poderá clicar para editá-lo ou clicar em Adicionar um sinal para adicionar um novo sinal.

  6. Defina o tipo de sinal como métrica do Cloud Monitoring .

  7. Clique em Configurar . No painel Recurso e métrica que é aberto, faça o seguinte:

    1. Clique em Selecionar uma métrica .
      1. Selecione a métrica que deseja usar para escalonamento automático. Você pode filtrar as métricas com base em qualquer palavra-chave, por exemplo, memória, bytes, disco.
      2. Clique em Aplicar . O painel exibe um gráfico que mostra os dados da métrica selecionada.
    2. Se quiser usar dados específicos da métrica, adicione um filtro baseado em rótulos da seguinte maneira:

      1. Na seção Filtros , clique em Adicionar um filtro .
      2. Selecione um rótulo e insira um valor .
      3. Clique em Concluído . O gráfico é atualizado para mostrar o valor filtrado da métrica.
    3. Para visualizar o valor agregado da métrica que será usada para dimensionar automaticamente seu MIG, alterne o botão Mostrar agregação no gráfico . O gráfico é atualizado para mostrar o valor agregado.

    4. Na seção Opções de meta de métrica para escalonamento automático , selecione Meta de utilização .

    5. Forneça o seguinte:

      1. Meta de utilização : Especifique o valor que o escalonador automático deve manter. Este deve ser um número positivo. Por exemplo, 24,5 e 100 são valores aceitáveis.
      2. Tipo de meta de utilização : selecione um tipo de meta que corresponda ao tipo de medição da métrica. Para comparações precisas, se a meta de utilização for medida por segundos, use Delta/segundo como tipo de meta. Da mesma forma, use Delta/min para uma meta de utilização medida por minutos.
        • Medidor : o escalonador automático calcula o valor médio dos dados coletados nos últimos minutos e compara-o com a meta de utilização.
        • Delta/min : o escalonador automático calcula a taxa média de crescimento por minuto e a compara com a meta de utilização.
        • Delta/segundo : o escalonador automático calcula a taxa média de crescimento por segundo e a compara com a meta de utilização.
    6. Quando terminar de configurar a métrica, clique em Selecionar .

  8. Revise os detalhes da métrica e clique em Concluído .

  9. Para concluir a configuração, clique em Salvar .

gcloud

Para configurar o escalonamento automático com base nas métricas do Monitoring, use o comando set-autoscaling .

Use o comando a seguir para dimensionar automaticamente com base em uma métrica do Monitoring com uma meta de utilização.

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

Se sua métrica tiver vários valores e você quiser usar um valor individual para escalonamento automático, use o sinalizador --stackdriver-metric-filter conforme fornecido no comando a seguir.

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"

Substitua o seguinte:

  • MIG_NAME : o MIG no qual você deseja adicionar um escalonador automático.
  • MAX_INSTANCES : o número máximo de VMs que o MIG pode ter.
  • MIN_INSTANCES : o número mínimo de VMs que o MIG precisa ter.
  • METRIC_URL : uma URL sem protocolo de uma métrica do Monitoring. Por exemplo, compute.googleapis.com/instance/uptime . Se você usar uma métrica personalizada, ela deverá atender aos requisitos de métrica personalizada .
  • TARGET_VALUE : o valor da métrica que o escalonador automático tenta manter.
  • TARGET_TYPE : o tipo de valor da métrica.
    • gauge o escalonador automático calcula o valor médio dos dados coletados nos últimos minutos e compara isso com a meta de utilização.
    • delta-per-minute o escalonador automático calcula a taxa média de crescimento por minuto e a compara com a meta de utilização.
    • delta-per-second o escalonador automático calcula a taxa média de crescimento por segundo e a compara com a meta de utilização. Para comparações precisas, se você definir a meta de utilização em segundos, use delta-per-second como tipo de meta. Da mesma forma, use delta-per-minute para uma meta de utilização em minutos.
  • METRIC_FILTER : aplique um filtro para usar um valor individual de uma métrica com vários valores e para especificar o tipo de recurso monitorado. Se você usar uma métrica proveniente de cada VM, não será necessário especificar o tipo de recurso monitorado porque gce_instance é usado como padrão. Para outras métricas, use resource.type na expressão de filtro para especificar o recurso monitorado. Para saber mais sobre filtro de métrica, consulte Conceitos de métricas de monitoramento .

Para ver uma lista completa de comandos e sinalizações disponíveis para a CLI gcloud, consulte a referência gcloud .

DESCANSAR

Para configurar o escalonamento automático com base nas métricas de monitoramento para um MIG zonal, use o recurso autoscalers ou, para um MIG regional, use o recurso regionAutoscalers .

Faça a chamada a seguir para dimensionar automaticamente um MIG zonal com base em uma métrica de monitoramento com uma meta de utilização.

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

Se sua métrica tiver vários valores e você quiser usar um valor individual para escalonamento automático, use o parâmetro filter conforme fornecido na chamada de API a seguir.

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

Substitua o seguinte:

  • PROJECT_ID : seu ID do projeto .
  • ZONE : a zona onde o MIG está localizado.
  • AUTOSCALER_NAME : o nome do escalonador automático.
  • MIG_NAME : o MIG no qual você deseja adicionar um escalonador automático.
  • MAX_INSTANCES : o número máximo de VMs que o MIG pode ter.
  • MIN_INSTANCES : o número mínimo de VMs que o MIG precisa ter.
  • METRIC_URL : uma URL sem protocolo de uma métrica do Monitoring. Por exemplo, compute.googleapis.com/instance/uptime . Se você usar uma métrica personalizada, ela deverá atender aos requisitos de métrica personalizada .
  • TARGET_VALUE : o valor da métrica que o escalonador automático tenta manter.
  • TARGET_TYPE : o tipo de valor da métrica.
    • GAUGE : O autoescalador calcula o valor médio dos dados coletados nos últimos minutos e compara-o com a meta de utilização.
    • DELTA_PER_MINUTE O escalonador automático calcula a taxa média de crescimento por minuto e a compara com a meta de utilização.
    • DELTA_PER_SECOND O autoescalador calcula a taxa média de crescimento por segundo e a compara com a meta de utilização. Para comparações precisas, se você definir a meta de utilização em segundos, use DELTA_PER_SECOND como tipo de meta. Da mesma forma, use DELTA_PER_MINUTE para uma meta de utilização em minutos.
  • METRIC_FILTER : aplique um filtro para usar um valor individual de uma métrica com vários valores e para especificar o tipo de recurso monitorado. Se você usar uma métrica proveniente de cada VM, não será necessário especificar o tipo de recurso monitorado porque gce_instance é usado como padrão. Para outras métricas, você deve especificar o recurso monitorado usando o seletor resource.type . Para saber mais sobre filtro de métrica, consulte Conceitos de métricas de monitoramento .

Dimensionamento automático com base no trabalho disponível para cada VM em um MIG

Quando você quiser dimensionar automaticamente com base na quantidade de trabalho disponível para cada VM em um MIG, especifique uma atribuição de instância única. O valor da atribuição de instância única que você define indica quanto trabalho você espera que cada VM lide. O escalonador automático divide o valor da métrica pelo valor de atribuição de instância única para calcular quantas VMs são necessárias.

Um valor de métrica 0 indica que não há trabalho a ser concluído pelo MIG. Se o número mínimo de instâncias do seu MIG estiver definido como 0 e o valor da sua métrica cair para 0 , o MIG será dimensionado para 0 até que o valor da métrica aumente.

Quando sua métrica tiver vários valores, aplique um filtro ao dimensionamento automático usando um valor individual da métrica. Para obter mais detalhes sobre filtros de métrica e outros campos que podem ser usados ​​em sua configuração, consulte Conceitos de métricas de monitoramento .

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Se você não tiver um grupo de instâncias gerenciadas, crie um . Caso contrário, clique no nome de um MIG na lista para abrir a página do grupo de instâncias.

  3. Clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Em Escalonamento automático , na seção Sinais de escalonamento automático , se existir um sinal para uma métrica do Monitoring, você poderá clicar para editá-lo ou clicar em Adicionar um sinal para adicionar uma nova métrica.

  6. Defina o tipo de sinal como métrica do Cloud Monitoring .

  7. Clique em Configurar . No painel Recurso e métrica que é aberto, faça o seguinte:

    1. Clique em Selecionar uma métrica .
      1. Selecione a métrica que deseja usar para escalonamento automático. Você pode filtrar as métricas com base em qualquer palavra-chave, por exemplo, memória, bytes, disco.
      2. Clique em Aplicar . O painel exibe um gráfico que mostra os dados da métrica selecionada.
    2. Se quiser usar dados específicos da métrica, adicione um filtro baseado em rótulos da seguinte forma:

      1. Na seção Filtros , clique em Adicionar um filtro .
      2. Selecione um rótulo e insira um valor .
      3. Clique em Concluído . O gráfico é atualizado para mostrar o valor da métrica filtrado.
    3. Para visualizar o valor agregado da métrica que será usada para dimensionar automaticamente seu MIG, alterne o botão Mostrar agregação no gráfico . O gráfico é atualizado para mostrar o valor agregado.

    4. Na seção Opções de meta de métrica para escalonamento automático , selecione Atribuição de instância de VM única .

    5. Forneça um valor de atribuição de instância única que represente a quantidade de trabalho a ser atribuída a cada VM no MIG.

    6. Quando terminar de configurar a métrica, clique em Selecionar .

  8. Revise os detalhes da métrica e clique em Concluído .

  9. Para concluir a configuração, clique em Salvar .

gcloud

Para configurar o escalonamento automático com base nas métricas do Monitoring, use o comando set-autoscaling .

No comando, especifique o sinalizador --stackdriver-metric-single-instance-assignment para indicar a quantidade de trabalho que você espera que cada VM do grupo lide.

O comando a seguir cria um escalonador automático com base na atribuição de trabalho 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

Substitua o seguinte:

  • MIG_NAME : o nome do MIG onde você deseja adicionar um escalonador automático.
  • MAX_INSTANCES : o número máximo de VMs que o MIG pode ter.
  • MIN_INSTANCES : o número mínimo de VMs que o MIG precisa ter.
  • METRIC_URL : uma URL sem protocolo de uma métrica do Monitoring. Por exemplo, compute.googleapis.com/instance_group/size . Se você usar uma métrica personalizada, ela deverá atender aos requisitos de métrica personalizada .
  • METRIC_FILTER : aplique um filtro para usar um valor individual de uma métrica com vários valores e para especificar o tipo de recurso monitorado. Para saber mais sobre filtro de métrica, consulte Conceitos de métricas de monitoramento .
  • INSTANCE_ASSIGNMENT : a quantidade de trabalho a ser atribuída a cada instância de VM no MIG.

DESCANSAR

Para configurar o escalonamento automático com base nas métricas de monitoramento para um MIG zonal, use o recurso autoscalers ou, para um MIG regional, use o recurso regionAutoscalers .

Use o parâmetro singleInstanceAssignment para especificar a quantidade de trabalho que você espera que cada VM lide.

Por exemplo, faça a chamada a seguir para criar um escalonador automático que escale um MIG zonal com base na atribuição da instância.

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

Substitua o seguinte:

  • PROJECT_ID : seu ID do projeto .
  • ZONE : a zona onde o MIG está localizado.
  • AUTOSCALER_NAME : o nome do escalonador automático.
  • MIG_NAME : o nome do MIG onde você deseja adicionar um escalonador automático.
  • MAX_INSTANCES : o número máximo de VMs que o MIG pode ter.
  • MIN_INSTANCES : o número mínimo de VMs que o MIG precisa ter.
  • METRIC_URL : uma URL sem protocolo de uma métrica do Monitoring. Por exemplo, compute.googleapis.com/instance_group/size . Se você usar uma métrica personalizada, ela deverá atender aos requisitos de métrica personalizada .
  • METRIC_FILTER : aplique um filtro para usar um valor individual de uma métrica com vários valores e para especificar o tipo de recurso monitorado. Para saber mais sobre filtro de métrica, consulte Conceitos de métricas de monitoramento .
  • INSTANCE_ASSIGNMENT : a quantidade de trabalho a ser atribuída a cada instância de VM no MIG.

Exemplos de escalonamento automático com base em métricas

Esta seção fornece alguns exemplos de métricas usadas para escalonamento automático. Para obter uma lista completa de métricas, consulte Google Cloud métricas .

Dimensionamento automático com base em uma métrica personalizada

Pode haver uma situação em que a métrica que fornece um sinal relevante não represente uma quantidade total de trabalho disponível ou outro recurso aplicável ao grupo, mas sim uma média, um percentil ou alguma outra propriedade estatística. Neste exemplo, suponha que você dimensione com base na latência média de processamento do grupo.

Suponha a seguinte configuração:

  • Um MIG zonal denominado our-instance-group é designado para executar uma tarefa específica. O grupo está localizado na zona us-central1-a .
  • Você tem uma métrica personalizada do Monitoring que exporta um valor que você gostaria de manter em um nível específico. Neste exemplo, suponha que a métrica represente a latência média de processamento de consultas atribuídas ao grupo.
    • A métrica personalizada é chamada: custom.googleapis.com/example_average_latency .
    • A métrica personalizada possui um rótulo com uma chave chamada group_name e valor igual ao nome do MIG, our-instance-group .
    • A métrica customizada exporta dados para o recurso global monitorado , ou seja, não está associada a nenhuma VM específica.

Você determinou que quando o valor da métrica estiver acima de algum valor específico, será necessário adicionar mais VMs ao grupo para lidar com a carga, enquanto quando estiver abaixo desse valor, você poderá liberar alguns recursos. Você deseja que o escalonador automático adicione ou remova VMs gradualmente a uma taxa proporcional ao quanto a métrica está acima ou abaixo da meta. Para este exemplo, suponha que você tenha determinado seu valor alvo como 250 delta/sec .

Você pode configurar o escalonamento automático para o grupo usando uma meta de utilização de 250 , que representa a taxa de alteração do valor da métrica que o escalonador automático tentará manter:

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.

  3. Clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Em Escalonamento automático , na seção Sinais de escalonamento automático , clique em Adicionar um sinal .

  6. Defina o tipo de sinal como métrica do Cloud Monitoring .

  7. Clique em Configurar . O painel Recurso e métrica é aberto.

    1. Clique em Selecionar uma métrica .
      1. Escolha sua métrica em Global > Métricas personalizadas .
      2. Clique em Aplicar .
    2. Na seção Filtros , faça o seguinte:
      1. Clique em Adicionar um filtro .
      2. No menu suspenso Rótulo, selecione group_name .
      3. No campo Valor , forneça our-instance-group .
      4. Clique em Concluído . O gráfico é atualizado para mostrar o valor filtrado da métrica.
    3. Na seção Opções de meta de métrica para escalonamento automático , faça o seguinte:
      1. Selecione Meta de utilização .
      2. Insira o valor da meta de utilização como 250.
      3. Defina o tipo de meta de utilização como Delta/seg .
    4. Depois de configurar a métrica, clique em Selecionar .
  8. Revise os detalhes da métrica e clique em Concluído .

  9. Quando terminar, clique em Salvar .

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

Escalonamento automático com base em mensagens não confirmadas no Pub/Sub

Para configurar o escalonamento automático com base em mensagens não confirmadas em uma assinatura do Pub/Sub , use a métrica subscription/num_undelivered_messages fornecida pelo pubsub e filtre pelo subscription ID .

A métrica subscription/num_undelivered_messages exporta o número total de mensagens na assinatura, incluindo mensagens que estão sendo processadas, mas que ainda não foram reconhecidas. Não é recomendado usar uma métrica que não inclua as mensagens que estão sendo processadas porque essa métrica pode cair para 0 quando ainda há trabalho sendo feito, o que solicita que o escalonamento automático aumente e possivelmente interrompa o trabalho real.

Se você não tiver uma assinatura, poderá criar uma assinatura pull , push ou BigQuery antes de configurar o escalonamento automático.

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.

  3. Clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Na seção Sinais de escalonamento automático , clique em Adicionar um sinal .

  6. Defina o tipo de sinal como Cloud Pub/Sub queue .

  7. Selecione um tópico . Se desejar um novo tópico, clique em Criar um tópico para criar um .

  8. Selecione a assinatura com base na qual você deseja dimensionar automaticamente seu MIG. Se desejar uma nova assinatura, clique em Criar uma assinatura para criar uma .

  9. No campo Número de mensagens a serem atribuídas a cada VM , especifique o número de mensagens não confirmadas que você espera que cada VM manipule.

  10. Clique em Concluído .

  11. Quando terminar, clique em Salvar .

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 o escalonamento automático para um MIG zonal, use o recurso autoscalers ou, para um MIG regional, use o recurso regionAutoscalers .

Por exemplo, faça a chamada a seguir para criar um escalonador automático para um 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"
    }
  ]
}
}

Dimensionamento automático com base no tráfego de rede de entrada

Para configurar o escalonamento automático com base no tráfego de rede de entrada para VMs em seu MIG, use a métrica instance/network/received_bytes_count fornecida por compute .

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.

  3. Clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Em Escalonamento automático , na seção Sinais de escalonamento automático , clique em Adicionar um sinal .

  6. Defina o tipo de sinal como métrica do Cloud Monitoring .

  7. Clique em Configurar . O painel Recurso e métrica é aberto.

    1. Clique em Selecionar uma métrica .
      1. Selecione Instância de VM > Instância > Bytes recebidos ( compute.googleapis.com/instance/network/received_bytes_count ).
      2. Clique em Aplicar .
    2. Na seção Opções de meta de métrica para escalonamento automático , faça o seguinte:
      1. Certifique-se de que a meta de utilização esteja selecionada.
      2. Insira um valor de meta de utilização.
      3. Defina um tipo de meta de utilização.
    3. Depois de configurar a métrica, clique em Selecionar .
  8. Revise os detalhes da métrica e clique em Concluído .

  9. Quando terminar, clique em Salvar .

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

Dimensionamento automático com base no uso de memória

Para configurar o escalonamento automático com base na porcentagem de memória usada, especifique a métrica percent_used fornecida pelas métricas do agente de operações de memória . Você deve filtrar a métrica por state para usar apenas o estado de memória used . Se você não especificar o filtro, o escalonador automático obterá a soma do uso de memória por todos os estados de memória rotulados como buffered , cached , free , slab e used .

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.

  3. Na página de visão geral do grupo de instâncias, clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Em Escalonamento automático , na seção Sinais de escalonamento automático , clique em Adicionar um sinal .

  6. Defina o tipo de sinal como métrica do Cloud Monitoring .

  7. Clique em Configurar . O painel Recurso e métrica é aberto.

    1. Clique em Selecionar uma métrica .
      1. Selecione Instância de VM > Memória > Utilização de memória ( compute.googleapis.com/instance/memory/percent_used ).
      2. Clique em Aplicar .
    2. Na seção Filtros , faça o seguinte:
      1. Clique em Adicionar um filtro .
      2. No menu suspenso Rótulo, escolha o rótulo da métrica de estado .
      3. No campo Valor , digite used .
      4. Clique em Concluído .
    3. Na seção Opções de meta de métrica para escalonamento automático , faça o seguinte:
      1. Certifique-se de que a meta de utilização esteja selecionada.
      2. Insira um valor de meta de utilização.
      3. Defina o tipo de meta de utilização como Gauge .
    4. Depois de configurar a métrica, clique em Selecionar .
  8. Revise os detalhes da métrica e clique em Concluído .

  9. Quando terminar, clique em Salvar .

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

Dimensionamento automático baseado em E/S de disco

Para configurar o escalonamento automático com base na contagem total de operações de E/S de disco, use a métrica operation_count fornecida pelas métricas do agente de operações de disco . Se você quiser dimensionar com base em operações de leitura ou gravação, filtre a métrica usando o rótulo direction . Da mesma forma, para dimensionar com base nas operações de disco em um dispositivo específico, use o rótulo device no filtro métrico.

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.

  3. Na página de visão geral do grupo de instâncias, clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Em Escalonamento automático , na seção Sinais de escalonamento automático , clique em Adicionar um sinal .

  6. Defina o tipo de sinal como métrica do Cloud Monitoring .

  7. Clique em Configurar . O painel Recurso e métrica é aberto.

    1. Clique em Selecionar uma métrica .
      1. Selecione Instância de VM > Disco > Operações de disco ( agent.googleapis.com/disk/operation_count ).
      2. Clique em Aplicar .
    2. Na seção Opções de meta de métrica para escalonamento automático , faça o seguinte:
      1. Certifique-se de que a meta de utilização esteja selecionada.
      2. Insira um valor de meta de utilização.
      3. Defina um tipo de meta de utilização.
    3. Depois de configurar a métrica, clique em Selecionar .
  8. Revise os detalhes da métrica e clique em Concluído .

  9. Quando terminar, clique em Salvar .

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

Dimensionamento automático com base no tamanho de outro MIG

Você pode dimensionar automaticamente um MIG com base no tamanho de outro MIG no mesmo projeto. Por exemplo, você pode ter um aplicativo multicamadas com um MIG de front-end que é escalonado automaticamente com base em um balanceador de carga e um MIG de back-end que é escalonado automaticamente proporcionalmente ao front-end. Use uma atribuição de instância única para definir quantas VMs de back-end são necessárias para cada VM de front-end. Se você precisar de 1 VM de back-end para cada 4 VMs de front-end, defina a atribuição de instância única como 4 no MIG de back-end.

Para dimensionar automaticamente um MIG ( MIG_1 ) com base no tamanho de outro MIG ( MIG_2 ), use a métrica instance_group/size fornecida por compute .

Console

  1. No console do Google Cloud, acesse a página Grupos de instâncias .

    Vá para grupos de instâncias

  2. Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.

  3. Na página de visão geral do grupo de instâncias, clique em Editar .

  4. Se não existir nenhuma configuração de escalonamento automático:

    1. Em Dimensionamento automático , clique em Configurar dimensionamento automático .
    2. Em Modo de escalonamento automático , selecione Ativado: adicione e remova instâncias do grupo para ativar o escalonamento automático.
  5. Em Escalonamento automático , na seção Sinais de escalonamento automático , clique em Adicionar um sinal .

  6. Defina o tipo de sinal como métrica do Cloud Monitoring .

  7. Clique em Configurar . O painel Recurso e métrica é aberto.

    1. Clique em Selecionar uma métrica
      1. Selecione Grupo de instâncias > Instance_group > Tamanho do grupo de instâncias ( compute.googleapis.com/instance_group/size ).
      2. Clique em Aplicar .
    2. Na seção Filtros , faça o seguinte:
      1. Clique em Adicionar um filtro .
      2. Na lista suspensa Rótulo, escolha o rótulo do recurso instance_group_name .
      3. No campo Valor , digite o nome do MIG ( MIG_2 ) com base no qual você deseja dimensionar automaticamente seu MIG.
      4. Clique em Concluído .
    3. Na seção Opções de meta de métrica para escalonamento automático , faça o seguinte:
      1. Selecione Atribuição de instância de VM única .
      2. No campo Atribuição de instância de VM única, insira 4 , se desejar manter 1 VM em seu MIG atual ( MIG_1 ) para cada 4 VMs em MIG_2 .
    4. Depois de configurar a métrica, clique em Selecionar .
  8. Revise os detalhes da métrica e clique em Concluído .

  9. Quando terminar, clique em Salvar .

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

Conceitos de métricas de monitoramento

Esta seção fornece uma breve descrição dos conceitos de métricas do Monitoring que você precisa conhecer ao configurar o escalonamento automático com base nas métricas do Monitoring.

  • Identificador de métrica ou URL de métrica : o nome da métrica na forma de um URL sem protocolo. Você pode encontrar URLs para métricas integradas na lista de métricas .

    Por exemplo, o URL de uma métrica do Pub/Sub que fornece o número de mensagens não confirmadas é pubsub.googleapis.com/subscription/num_undelivered_messages .

  • Tipo de recurso monitorado : a origem do valor da métrica. Você pode encontrar o tipo de recurso monitorado de uma métrica na lista de métricas .

    Por exemplo, o tipo de recurso monitorado da métrica pubsub.googleapis.com/subscription/num_undelivered_messages é pubsub_subscription . Para obter mais detalhes sobre cada tipo de recurso monitorado, consulte Tipos de recursos monitorados .

  • Filtro de métrica : quando sua métrica tem vários valores, um filtro permite que o escalonador automático identifique um valor de métrica específico no conjunto de valores de métrica possíveis. Use os rótulos definidos em uma métrica e em um tipo de recurso monitorado para filtrar os valores. Se quiser explorar seus valores de métrica com filtros diferentes, você pode experimentá-los no explorador de métricas .

    Por exemplo, a captura de tela a seguir mostra a métrica pubsub.googleapis.com/subscription/num_undelivered_messages que fornece o número de mensagens não confirmadas em todas as assinaturas disponíveis. Cada linha no gráfico indica uma assinatura.

    Explorador de métricas mostrando valores de métricas sem filtro.

    Sem filtro, o escalonador automático obtém a soma dos valores métricos de todas as assinaturas. Para dimensionar automaticamente com base em uma única assinatura, aplique um filtro no rótulo subscription_id definido para pubsub_subscription . A captura de tela a seguir mostra uma única assinatura após a aplicação do filtro.

    Explorador de métricas mostrando o valor da métrica filtrado.

Requisitos de filtragem de métricas

Ao usar uma métrica que possui vários valores (categorizados usando rótulos ), você pode aplicar um filtro ao dimensionamento automático com base em valores específicos da métrica. Se o filtro retornar vários valores, os valores serão somados. Para obter melhores resultados, crie um filtro específico o suficiente para retornar um único valor.

A filtragem do escalonador automático para métricas é compatível com a sintaxe do filtro do Monitoring . O filtro deve atender aos seguintes requisitos:

  • Você deve envolver o valor de um filtro em cotações duplas.
  • Você deve usar o operador de comparação de igualdade direta ( = ).
  • Você deve usar o operador AND para participar de diferentes critérios de filtro.

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

  • Você deve usar valores diretos. Você não pode usar curingas ou funções no filtro.

    Por exemplo, você não pode usar resource.labels.zone = starts_with("us-") .

  • Você não pode usar os rótulos de metadados de recursos que armazenam metadados sobre um recurso monitorado.

Para uma referência completa dos rótulos métricos e dos rótulos de recursos monitorados que você pode filtrar, consulte a lista de métricas e a lista de recursos monitorados .

Requisitos de métricas personalizadas

Para usar métricas personalizadas, você deve primeiro criar uma métrica personalizada associada a um dos tipos de recursos monitorados .

Uma métrica personalizada usada para autocaling deve ter as seguintes propriedades:

  • Se a configuração automática usar dados de cada VM no grupo, configure instâncias no seu MIG, para que cada VM exporte a métrica personalizada. Os valores exportados de cada VM devem estar associados a um recurso monitorado gce_instance , que contém os seguintes rótulos:
    • zone com o nome da zona em que a instância está.
    • instance_id com o valor do ID numérico exclusivo atribuído à VM.
  • A métrica deve exportar dados pelo menos a cada 60 segundos. Se você exportar dados com mais frequência do que a cada 60 segundos, o automóvel poderá responder para carregar as alterações mais rapidamente. Se você exportar seus dados menos frequentes que a cada 60 segundos, o automóvel poderá não responder para carregar alterações com rapidez suficiente.
  • A métrica deve exportar dados do tipo INT64 ou de valor DOUBLE .

Para obter informações sobre como criar uma métrica personalizada, consulte o uso de métricas personalizadas .

O que vem a seguir