Dimensione com base nas métricas de monitorização


A criação de uma escala automática com base nas métricas do Cloud Monitoring permite ajustar a capacidade necessária de acordo com as medições da sua app. Quando cria uma escala automática de um GIG com base numa métrica, o criador de escala automática cria VMs quando o valor da métrica aumenta e elimina VMs quando o valor diminui.

Por exemplo, pode definir quantas VMs precisa por número de utilizadores, latência ou número de mensagens numa subscrição do Pub/Sub. Pode usar as métricas incorporadas fornecidas pelo serviço de monitorização ou as métricas personalizadas que exporta da sua aplicação.

Este documento descreve como criar uma escala automática de um grupo de instâncias geridas (GIG) com base nas métricas do Monitoring.

Também pode criar uma escala automática de um GIG com base na utilização da CPU, capacidade de fornecimento do balanceamento de carga ou agendas.

Antes de começar

  • Leia acerca dos princípios básicos do escalamento automático.
  • Leia acerca dos conceitos de métricas de monitorização usados numa configuração de escalamento automático.
  • Se quiser dimensionar automaticamente com base numa métrica do agente de operações, instale o agente de operações.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Limitações

O escalamento com base nas métricas de monitorização está restrito pelas limitações de todos os escaladores automáticos, bem como pelas seguintes limitações:

  • Pode configurar a escala automática com base em até 5 métricas de monitorização por GIG.
  • Pode ajustar a escala automaticamente com base em métricas que tenham apenas tipos de valores INT64 ou DOUBLE. Outros tipos de valores não são suportados.
  • Não pode configurar a mesma métrica mais do que uma vez numa política de escalabilidade automática.

Configure a escala automática com base nas métricas de monitorização

Pode usar um valor de métrica de monitorização para o ajuste automático de duas formas diferentes:

  • Alvo de utilização: se quiser que o dimensionamento automático mantenha uma métrica a um valor específico, configure um alvo de utilização. O dimensionamento automático cria VMs quando o valor da métrica está acima do destino e elimina VMs quando o valor da métrica está abaixo do destino. Isto é útil para métricas como o tráfego de rede, a utilização de memória ou disco, ou a latência média da sua aplicação. O diagrama seguinte mostra como um escalador automático adiciona e remove VMs em resposta ao valor de uma métrica para manter um objetivo de utilização.

    O escalador automático adiciona e remove VMs para manter um objetivo de utilização.

  • Atribuição de instância única: se quiser usar a escala automática com base na quantidade de trabalho disponível para atribuição a cada VM, configure uma atribuição de instância única. A atribuição de instância única que especificar representa a quantidade de trabalho que espera que cada MV processe. O escalador automático divide o valor da métrica pelo valor de atribuição de instância única para calcular o número de VMs necessárias. Por exemplo, se a métrica for igual a 100 e a atribuição de instância única for 5, o escalador automático cria 20 VMs no MIG. Isto é útil para métricas que refletem a quantidade de trabalho, como o comprimento da fila do Pub/Sub ou a contagem de trabalhos em lote. A atribuição de instância única não se aplica a métricas que provêm de cada VM. O diagrama seguinte mostra a relação proporcional entre o valor da métrica e o número de VMs quando a escalabilidade é feita com a atribuição de uma única instância.

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

Ajuste automático da escala para manter uma métrica num valor de destino

Quando quiser manter uma métrica num valor alvo, especifique um alvo de utilização. O dimensionamento automático cria VMs quando o valor da métrica está acima do destino e elimina VMs quando o valor da métrica está abaixo do destino.

  • Se a métrica provém de cada VM no MIG, o escalador automático considera o valor médio da métrica em todas as VMs no MIG e compara-o com o objetivo de utilização. Por exemplo, se quiser usar a escalabilidade automática com a métrica tcp_connections que indica o número de ligações TCP numa VM, o escalador automático calcula a média do número de ligações TCP em todas as VMs no MIG para comparar com o alvo. Quando usa métricas que têm origem numa VM, o GIG não pode ser reduzido para zero porque o escalador automático requer, pelo menos, uma VM para publicar um valor de métrica.

  • Se a métrica se aplicar a todo o MIG e não for proveniente das VMs no seu MIG, o escalador automático compara o valor da métrica com o objetivo de utilização. Por exemplo, pode usar uma métrica personalizada que mede a latência da sua aplicação. Quando usa essas métricas que se aplicam a todo o MIG, o MIG pode ser reduzido para zero, desde que defina o número mínimo de instâncias como 0 e não especifique outros sinais que exijam dados de VMs individuais.

Quando a métrica tem vários valores, aplique um filtro para dimensionar automaticamente usando um valor individual da métrica. Para mais detalhes sobre os filtros de métricas e outros campos que pode usar na sua configuração, consulte o artigo Conceitos de métricas de monitorização.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

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

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Métrica do Cloud Monitoring.

  8. Clique em Configurar. No painel Recurso e métrica apresentado, faça o seguinte:

    1. Clique em Selecionar uma métrica.
      1. Selecione a métrica que quer usar para o ajuste de escala automático. Pode filtrar as métricas com base em quaisquer palavras-chave, por exemplo, memória, bytes e disco.
      2. Clique em Aplicar. O painel apresenta um gráfico que mostra os dados da métrica selecionada.
    2. Se quiser usar dados específicos da métrica, adicione um filtro com base em etiquetas da seguinte forma:

      1. Na secção Filtros, clique em Adicionar um filtro.
      2. Selecione uma etiqueta e introduza um valor.
      3. Clique em Concluído. O gráfico é atualizado para mostrar o valor filtrado da métrica.
    3. Para ver o valor agregado da métrica que vai ser usada para o ajuste de escala automático do MIG, ative/desative o botão Mostrar agregação no gráfico. O gráfico é atualizado para mostrar o valor agregado.

    4. Na secção Opções de objetivo de métricas para o dimensionamento automático, selecione Objetivo de utilização.

    5. Forneça os seguintes dados:

      1. Objetivo de utilização: especifique o valor que o escalador automático tem de manter. Tem de ser um número positivo. Por exemplo, 24,5 e 100 são valores aceitáveis.
      2. Tipo de objetivo de utilização: selecione um tipo de objetivo que corresponda ao tipo de medição da métrica. Para fazer comparações precisas, se o objetivo de utilização for medido por segundos, use Delta / segundo como o tipo de objetivo. Da mesma forma, use Delta / min para um objetivo de utilização medido por minutos.
        • Indicador: o dimensionamento automático calcula o valor médio dos dados recolhidos nos últimos minutos e compara-o com o objetivo de utilização.
        • Variação / minuto: o ajuste automático calcula a taxa média de crescimento por minuto e compara-a com o objetivo de utilização.
        • Delta / segundo: o dimensionamento automático calcula a taxa média de crescimento por segundo e compara-a com o alvo de utilização.
    6. Quando terminar de configurar a métrica, clique em Selecionar.

  9. Reveja os detalhes da métrica e clique em Concluído.

  10. Para concluir a configuração, clique em Guardar.

gcloud

Para configurar a escala automática com base nas métricas de monitorização, use o comando set-autoscaling.

Use o seguinte comando para criar uma escala automática com base numa métrica de monitorização com um objetivo 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 a sua métrica tiver vários valores e quiser usar um valor individual para o ajuste de escala automático, use a flag --stackdriver-metric-filter, conforme indicado no comando seguinte.

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 quer adicionar um escalador 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 tem de ter.
  • METRIC_URL: um URL sem protocolo de uma métrica de monitorização. Por exemplo, compute.googleapis.com/instance/uptime. Se usar uma métrica personalizada, tem de cumprir os requisitos das métricas personalizadas.
  • TARGET_VALUE: o valor da métrica que o escalador automático tenta manter.
  • TARGET_TYPE: o tipo de valor da métrica.
    • gauge o dimensionamento automático calcula o valor médio dos dados recolhidos nos últimos minutos e compara-o com o objetivo de utilização.
    • delta-per-minute o dimensionamento automático calcula a taxa média de crescimento por minuto e compara-a com o objetivo de utilização.
    • delta-per-second o dimensionamento automático calcula a taxa média de crescimento por segundo e compara-a com o objetivo de utilização. Para fazer comparações precisas, se definir o objetivo de utilização em segundos, use delta-per-second como o tipo de objetivo. Da mesma forma, use delta-per-minute para um objetivo 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 monitorizado. Se usar uma métrica proveniente de cada VM, não tem de especificar o tipo de recurso monitorizado porque gce_instance é usado como predefinição. Para outras métricas, use resource.type na expressão de filtro para especificar o recurso monitorizado. Para saber mais acerca do filtro de métricas, consulte o artigo Conceitos de métricas de monitorização.

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

REST

Para configurar a escala automática com base nas métricas de monitorização para um GIG zonal, use o recurso autoscalers ou, para um GIG regional, use o recurso regionAutoscalers.

Faça a seguinte chamada para criar uma escala automática de um GIG zonal com base numa métrica de monitorização com um objetivo 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 a sua métrica tiver vários valores e quiser usar um valor individual para o ajuste automático de escala, use o parâmetro filter, conforme indicado na seguinte chamada 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"
    }
  ],
 }
}

Substitua o seguinte:

  • PROJECT_ID: o seu ID do projeto.
  • ZONE: a zona onde o MIG está localizado.
  • AUTOSCALER_NAME: o nome do redimensionador automático.
  • MIG_NAME: o MIG no qual quer adicionar um escalador 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 tem de ter.
  • METRIC_URL: um URL sem protocolo de uma métrica de monitorização. Por exemplo, compute.googleapis.com/instance/uptime. Se usar uma métrica personalizada, tem de cumprir os requisitos das métricas personalizadas.
  • TARGET_VALUE: o valor da métrica que o escalador automático tenta manter.
  • TARGET_TYPE: o tipo de valor da métrica.
    • GAUGE: o dimensionamento automático calcula o valor médio dos dados recolhidos nos últimos minutos e compara-o com o objetivo de utilização.
    • DELTA_PER_MINUTE O dimensionamento automático calcula a taxa média de crescimento por minuto e compara-a com o objetivo de utilização.
    • DELTA_PER_SECOND O dimensionador automático calcula a taxa média de crescimento por segundo e compara-a com o objetivo de utilização. Para fazer comparações precisas, se definir o objetivo de utilização em segundos, use DELTA_PER_SECOND como o tipo de objetivo. Da mesma forma, use DELTA_PER_MINUTE para um objetivo 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 monitorizado. Se usar uma métrica proveniente de cada VM, não tem de especificar o tipo de recurso monitorizado porque gce_instance é usado como predefinição. Para outras métricas, tem de especificar o recurso monitorizado através do seletor resource.type. Para saber mais acerca do filtro de métricas, consulte o artigo Conceitos de métricas de monitorização.

Crie uma escala automática com base no trabalho disponível para cada VM num GIG

Quando quiser criar uma escala automática com base na quantidade de trabalho disponível para cada VM num GIG, especifique uma atribuição de instância única. O valor da atribuição de instância única que define indica a quantidade de trabalho que espera que cada MV processe. O dimensionamento automático divide o valor da métrica pelo valor de atribuição de instância única para calcular o número de VMs necessárias.

Um valor da métrica de 0 indica que não existe trabalho para o seu MIG concluir. Se o número mínimo de instâncias do MIG estiver definido como 0 e o valor da métrica descer para 0, o MIG é reduzido para 0 até o valor da métrica aumentar.

Quando a métrica tem vários valores, aplique um filtro para dimensionar automaticamente usando um valor individual da métrica. Para mais detalhes sobre os filtros de métricas e outros campos que pode usar na sua configuração, consulte o artigo Conceitos de métricas de monitorização.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Se não tiver um grupo de instâncias gerido, 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 Edit.

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Métrica do Cloud Monitoring.

  8. Clique em Configurar. No painel Recurso e métrica apresentado, faça o seguinte:

    1. Clique em Selecionar uma métrica.
      1. Selecione a métrica que quer usar para o ajuste de escala automático. Pode filtrar as métricas com base em quaisquer palavras-chave, por exemplo, memória, bytes e disco.
      2. Clique em Aplicar. O painel apresenta um gráfico que mostra os dados da métrica selecionada.
    2. Se quiser usar dados específicos da métrica, adicione um filtro com base em etiquetas da seguinte forma:

      1. Na secção Filtros, clique em Adicionar um filtro.
      2. Selecione uma etiqueta e introduza um valor.
      3. Clique em Concluído. O gráfico é atualizado para mostrar o valor da métrica filtrada.
    3. Para ver o valor agregado da métrica que vai ser usada para o ajuste de escala automático do MIG, ative/desative o botão Mostrar agregação no gráfico. O gráfico é atualizado para mostrar o valor agregado.

    4. Na secção Opções de destino de métricas para o dimensionamento automático, selecione Atribuição de instância de VM única.

    5. Forneça um valor de Single instance assignment que represente a quantidade de trabalho a atribuir a cada VM no MIG.

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

  9. Reveja os detalhes da métrica e clique em Concluído.

  10. Para concluir a configuração, clique em Guardar.

gcloud

Para configurar a escala automática com base nas métricas de monitorização, use o comando set-autoscaling.

No comando, especifique a flag --stackdriver-metric-single-instance-assignment para indicar a quantidade de trabalho que espera que cada MV no grupo processe.

O comando seguinte cria um escalador 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 quer adicionar um redimensionador 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 tem de ter.
  • METRIC_URL: um URL sem protocolo de uma métrica de monitorização. Por exemplo, compute.googleapis.com/instance_group/size. Se usar uma métrica personalizada, tem de cumprir os requisitos das métricas personalizadas.
  • 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 monitorizado. Para saber mais sobre o filtro de métricas, consulte o artigo Conceitos de métricas de monitorização.
  • INSTANCE_ASSIGNMENT: a quantidade de trabalho a atribuir a cada instância de VM no GIG.

REST

Para configurar a escala automática com base nas métricas de monitorização para um GIG zonal, use o recurso autoscalers ou, para um GIG regional, use o recurso regionAutoscalers.

Use o parâmetro singleInstanceAssignment para especificar a quantidade de trabalho que espera que cada MV processe.

Por exemplo, faça a seguinte chamada para criar um redimensionador automático que redimensione um MIG zonal com base na atribuição de instâncias.

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: o seu ID do projeto.
  • ZONE: a zona onde o MIG está localizado.
  • AUTOSCALER_NAME: o nome do redimensionador automático.
  • MIG_NAME: o nome do MIG onde quer adicionar um redimensionador 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 tem de ter.
  • METRIC_URL: um URL sem protocolo de uma métrica de monitorização. Por exemplo, compute.googleapis.com/instance_group/size. Se usar uma métrica personalizada, tem de cumprir os requisitos das métricas personalizadas.
  • 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 monitorizado. Para saber mais sobre o filtro de métricas, consulte o artigo Conceitos de métricas de monitorização.
  • INSTANCE_ASSIGNMENT: a quantidade de trabalho a atribuir a cada instância de VM no GIG.

Exemplos de escala automática com base em métricas

Esta secção apresenta alguns exemplos de métricas usadas para o dimensionamento automático. Para ver uma lista completa de métricas, consulte as Google Cloud métricas.

Ajuste automaticamente a escala com base numa métrica personalizada

Pode haver uma situação em que a métrica que fornece um sinal relevante não representa um valor total de trabalho disponível ou outro recurso aplicável ao grupo, mas sim uma média, um percentil ou outra propriedade estatística. Para este exemplo, vamos assumir que faz o escalonamento com base na latência de processamento média do grupo.

Suponha a seguinte configuração:

  • Um MIG zonal denominado our-instance-group é atribuído para realizar uma tarefa específica. O grupo está localizado na zona us-central1-a.
  • Tem uma métrica personalizada de monitorização que exporta um valor que quer manter a um nível específico. Para este exemplo, vamos assumir que a métrica representa a latência média do processamento de consultas atribuídas ao grupo.
    • A métrica personalizada chama-se: custom.googleapis.com/example_average_latency.
    • A métrica personalizada tem uma etiqueta com uma chave denominada group_name e um valor igual ao nome do MIG, our-instance-group.
    • A métrica personalizada exporta dados para o recurso monitorizado global, ou seja, não está associada a nenhuma VM específica.

Determinou que, quando o valor da métrica está acima de um valor específico, tem de adicionar mais VMs ao grupo para processar a carga. No entanto, quando está abaixo desse valor, pode libertar alguns recursos. Quer que o escalador automático adicione ou remova VMs gradualmente a uma taxa proporcional à quantidade em que a métrica está acima ou abaixo do objetivo. Para este exemplo, suponha que determinou que o valor alvo é 250 delta/sec.

Pode configurar o dimensionamento automático para o grupo usando um objetivo de utilização de 250, que representa a taxa de variação do valor da métrica que o dimensionador automático vai tentar manter:

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

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

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Métrica do Cloud Monitoring.

  8. Clique em Configurar. É aberto o painel Recurso e métrica.

    1. Clique em Selecionar uma métrica.
      1. Escolha a métrica em Global > Métricas personalizadas.
      2. Clique em Aplicar.
    2. Na secção Filtros, faça o seguinte:
      1. Clique em Adicionar um filtro.
      2. No menu pendente Etiqueta, selecione group_name.
      3. No campo Valor, indique our-instance-group.
      4. Clique em Concluído. O gráfico é atualizado para mostrar o valor filtrado da métrica.
    3. Na secção Opções de objetivo de métricas para a escala automática, faça o seguinte:
      1. Selecione Objetivo de utilização.
      2. Introduza o valor do objetivo de utilização como 250.
      3. Defina o tipo de objetivo de utilização como Delta / seg..
    4. Depois de configurar a métrica, clique em Selecionar.
  9. Reveja os detalhes da métrica e, de seguida, clique em Concluído.

  10. Quando terminar, clique em Guardar.

gcloud

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

REST

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

Ajuste automático da escala com base nas mensagens não reconhecidas no Pub/Sub

Para configurar o escalamento automático com base em mensagens não reconhecidas numa subscrição 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 subscrição, incluindo as mensagens que estão a ser processadas, mas que ainda não foram confirmadas. Não é recomendável usar uma métrica que não inclua as mensagens que estão a ser processadas, porque essa métrica pode diminuir para 0 quando ainda estiver a ser feito trabalho, o que leva a que o ajuste automático seja reduzido e possa interromper o trabalho real.

Se não tiver uma subscrição, pode criar uma subscrição pull, push ou BigQuery antes de configurar o escalamento automático.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

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

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Fila do Cloud Pub/Sub.

  8. Selecione um tópico. Se quiser um novo tópico, clique em Criar um tópico para criar um.

  9. Selecione a subscrição com base na qual quer ajustar automaticamente a escala do MIG. Se quiser uma nova subscrição, clique em Criar uma subscrição para criar uma.

  10. No campo Número de mensagens a atribuir a cada VM, especifique o número de mensagens não reconhecidas que espera que cada VM processe.

  11. Clique em Concluído.

  12. Quando terminar, clique em Guardar.

gcloud

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

REST

Para configurar a escala automática para um GIG zonal, use o recurso autoscalers ou, para um GIG regional, use o recurso regionAutoscalers.

Por exemplo, faça a seguinte chamada para criar um escalador 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"
    }
  ]
}
}

Ajuste automático da escala com base no tráfego de rede recebido

Para configurar a escala automática com base no tráfego de rede recebido para VMs no seu GIG, use a métrica instance/network/received_bytes_count fornecida pela compute.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

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

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Métrica do Cloud Monitoring.

  8. Clique em Configurar. É aberto o painel Recurso e métrica.

    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 secção Opções de objetivo de métricas para a escala automática, faça o seguinte:
      1. Certifique-se de que a opção Objetivo de utilização está selecionada.
      2. Introduza um valor de objetivo de utilização.
      3. Defina um tipo de objetivo de utilização.
    3. Depois de configurar a métrica, clique em Selecionar.
  9. Reveja os detalhes da métrica e, de seguida, clique em Concluído.

  10. Quando terminar, clique em Guardar.

gcloud

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

REST

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

Crie uma escala automática com base na utilização da memória

Para configurar a escala automática com base na percentagem de memória usada, especifique a métrica percent_used fornecida pelas métricas do agente de operações memory. Deve filtrar a métrica por state para usar apenas o used estado da memória. Se não especificar o filtro, o escalador automático considera a soma da utilização de memória por todos os estados de memória etiquetados como buffered, cached, free, slab e used.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

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

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

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Métrica do Cloud Monitoring.

  8. Clique em Configurar. É aberto o painel Recurso e métrica.

    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 secção Filtros, faça o seguinte:
      1. Clique em Adicionar um filtro.
      2. No menu pendente Etiqueta, escolha a etiqueta de métrica estado.
      3. No campo Valor, escreva usado.
      4. Clique em Concluído.
    3. Na secção Opções de objetivo de métricas para a escala automática, faça o seguinte:
      1. Certifique-se de que a opção Objetivo de utilização está selecionada.
      2. Introduza um valor de objetivo de utilização.
      3. Defina o tipo de objetivo de utilização como Indicador.
    4. Depois de configurar a métrica, clique em Selecionar.
  9. Reveja os detalhes da métrica e, de seguida, clique em Concluído.

  10. Quando terminar, clique em Guardar.

gcloud

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

REST

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

Crie uma escala automática com base na E/S do disco

Para configurar a criação de uma escala automática 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 quiser dimensionar com base em operações de leitura ou gravação, filtre a métrica usando a etiqueta direction. Da mesma forma, para dimensionar com base nas operações de disco num dispositivo específico, use a etiqueta device no filtro de métricas.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

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

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

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Métrica do Cloud Monitoring.

  8. Clique em Configurar. É aberto o painel Recurso e métrica.

    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 secção Opções de objetivo de métricas para a escala automática, faça o seguinte:
      1. Certifique-se de que a opção Objetivo de utilização está selecionada.
      2. Introduza um valor de objetivo de utilização.
      3. Defina um tipo de objetivo de utilização.
    3. Depois de configurar a métrica, clique em Selecionar.
  9. Reveja os detalhes da métrica e, de seguida, clique em Concluído.

  10. Quando terminar, clique em Guardar.

gcloud

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

REST

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

Crie uma escala automática com base no tamanho de outro GIG

Pode criar uma escala automática de um GIG com base no tamanho de outro GIG no mesmo projeto. Por exemplo, pode ter uma aplicação de vários níveis com um GIG de front-end que cria uma escala automática com base num equilibrador de carga e um GIG de back-end que cria uma escala automática proporcionalmente ao front-end. Use uma atribuição de instância única para definir o número de VMs de back-end necessárias para cada VM de front-end. Se 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 criar uma escala automática de um GIG (MIG_1) com base no tamanho de outro GIG (MIG_2), use a métrica instance_group/size fornecida pela compute.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

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

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

  4. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  5. Se a configuração do ajuste de escala automático não existir, clique em Configurar ajuste de escala automático.

    Por predefinição, a configuração do dimensionamento automático adiciona um sinal com base na utilização da CPU. Se não precisar deste sinal, pode editá-lo para alterar o tipo de sinal.

  6. Na secção Sinais de dimensionamento automático, se existir um sinal para uma métrica de monitorização, pode clicar para o editar ou clicar em Adicionar um sinal para adicionar um.
  7. Defina o Tipo de sinal como Métrica do Cloud Monitoring.

  8. Clique em Configurar. É aberto o painel Recurso e métrica.

    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 secção Filtros, faça o seguinte:
      1. Clique em Adicionar um filtro.
      2. No menu pendente Etiqueta, escolha a etiqueta de recurso instance_group_name.
      3. No campo Valor, escreva o nome do GIG (MIG_2) com base no qual quer criar uma escala automática do GIG.
      4. Clique em Concluído.
    3. Na secção Opções de objetivo de métricas para a escala automática, 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, introduza 4 se quiser manter 1 VM no seu GIG atual (MIG_1) para cada 4 VMs em MIG_2.
    4. Depois de configurar a métrica, clique em Selecionar.
  9. Reveja os detalhes da métrica e, de seguida, clique em Concluído.

  10. Quando terminar, clique em Guardar.

gcloud

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

REST

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

Conceitos de métricas de monitorização

Esta secção fornece uma breve descrição dos conceitos de métricas de monitorização que tem de conhecer enquanto configura o dimensionamento automático com base nas métricas de monitorização.

  • Identificador de métricas ou URL de métricas: o nome da métrica no formato de um URL sem protocolo. Pode encontrar URLs para métricas incorporadas na lista de métricas.

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

  • Tipo de recurso monitorizado: a origem do valor da métrica. Pode encontrar o tipo de recurso monitorizado de uma métrica na lista de métricas.

    Por exemplo, o tipo de recurso monitorizado da métrica pubsub.googleapis.com/subscription/num_undelivered_messages é pubsub_subscription. Para ver mais detalhes sobre cada tipo de recurso monitorizado, consulte o artigo Tipos de recursos monitorizados.

  • Filtro de métricas: quando a métrica tem vários valores, um filtro permite que o escalador automático identifique um valor de métrica específico a partir do conjunto de valores de métricas possíveis. Use as etiquetas definidas numa métrica e num tipo de recurso monitorizado para filtrar os valores. Se quiser explorar os valores das métricas com filtros diferentes, pode experimentá-los no explorador de métricas.

    Por exemplo, a captura de ecrã seguinte mostra a métrica pubsub.googleapis.com/subscription/num_undelivered_messages que indica o número de mensagens não reconhecidas em todas as subscrições disponíveis. Cada linha no gráfico indica uma subscrição.

    Explorador de métricas a apresentar valores de métricas sem filtro.

    Sem um filtro, o escalamento automático usa a soma dos valores das métricas de todas as subscrições. Para ajustar automaticamente a escala com base numa única subscrição, aplique um filtro na etiqueta definida para o pubsub_subscription.subscription_id A captura de ecrã seguinte mostra uma única subscrição após a aplicação do filtro.

    Explorador de métricas que mostra o valor da métrica filtrada.

Requisitos de filtragem de métricas

Quando usa uma métrica com vários valores (categorizados através de etiquetas), pode aplicar um filtro para ajustar automaticamente a escala com base em valores específicos da métrica. Se o filtro devolver vários valores, estes são adicionados. Para receber os melhores resultados, crie um filtro suficientemente específico para devolver um único valor.

A filtragem do escalador automático para métricas é compatível com a sintaxe de filtro de monitorização. O filtro tem de cumprir os seguintes requisitos:

  • Tem de colocar o valor de um filtro entre aspas duplas.
  • Tem de usar o operador de comparação de igualdade direta (=).
  • Tem de usar o operador AND para juntar diferentes critérios de filtro.

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

  • Tem de usar valores diretos. Não pode usar carateres universais nem funções no filtro.

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

  • Não pode usar etiquetas de metadados de recursos que armazenam metadados sobre um recurso monitorizado.

Para uma referência completa de etiquetas de métricas e etiquetas de recursos monitorizados que pode filtrar, consulte a lista de métricas e a lista de recursos monitorizados.

Requisitos de métricas personalizadas

Para usar métricas personalizadas, primeiro tem de criar uma métrica personalizada associada a um dos tipos de recursos monitorizados.

Uma métrica personalizada usada para o dimensionamento automático tem de ter as seguintes propriedades:

  • Se a configuração do dimensionamento automático usar dados de cada MV no grupo, configure instâncias no MIG para que cada MV exporte a métrica personalizada. Os valores exportados de cada MV têm de estar associados a um recurso monitorizado, que contém as seguintes etiquetas:
      gce_instance
    • zone com o nome da zona em que a instância se encontra.
    • instance_id com o valor do ID numérico exclusivo atribuído à MV.
  • A métrica tem de exportar dados, pelo menos, a cada 60 segundos. Se exportar dados com uma frequência superior a cada 60 segundos, o ajuste automático pode responder às alterações de carga mais rapidamente. Se exportar os dados com uma frequência inferior a cada 60 segundos, o dimensionamento automático pode não responder às alterações de carga com rapidez suficiente.
  • A métrica tem de exportar dados do tipo de valor INT64 ou DOUBLE.

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

O que se segue?