O escalonamento automático baseado em métricas do Cloud Monitoring permite ajustar a capacidade necessária de acordo com as medições do aplicativo. Quando você escalona 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, é possível definir quantas VMs são necessárias por contagem de usuários, latência ou o número de mensagens em uma assinatura do Pub/Sub. É possível usar as métricas integradas fornecidas pelo serviço do Monitoring ou as métricas personalizadas exportadas do aplicativo.
Neste documento, descrevemos como escalonar um grupo gerenciado de instâncias (MIG) com base nas métricas do Monitoring.
Também é possível fazer o escalonamento automático de um MIG com base na utilização da CPU, na capacidade de disponibilização do balanceamento de carga ou nas programações.
Antes de começar
- Leia sobre os fundamentos do escalonador automático.
- Leia sobre os conceitos de métricas do Monitoring usados em uma configuração de escalonamento automático.
- Se você quiser fazer o escalonamento automático com base em uma métrica do agente de operações, instale o agente de operações.
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- É possível configurar o escalonamento automático com base em até cinco métricas do Monitoring por MIG.
- É possível fazer escalonamento automático com base em métricas que têm apenas os tipos de valor
INT64
ouDOUBLE
. Outros tipos de valor não são compatíveis. - Não é possível configurar a mesma métrica mais de uma vez em uma política de escalonamento automático.
Meta de utilização: se você quiser que o escalonador automático mantenha uma métrica com 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 as 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 aplicativo. O diagrama a seguir mostra como o escalonador automático adiciona e remove VMs em resposta a um valor de métrica para manter uma meta de utilização.
Atribuição de instância única: se você quiser escalonar automaticamente com base no quanto de trabalho disponível para atribuir a cada VM, configure uma atribuição de instância única. A atribuição de instância única que você especifica representa o quanto de trabalho você espera que cada VM processe. O escalonador automático divide o valor da métrica pelo valor de atribuição de instância única para calcular a quantidade 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 escalonador automático criará 20 VMs no MIG. Isso é útil para métricas que refletem a quantidade de trabalho, como a duração da fila do Pub/Sub ou a contagem de jobs em lote. A atribuição de instância única não se aplica às 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 escalonar com a atribuição de instância única.
Se a métrica vier de cada VM no seu MIG, o escalonador automático usará o valor médio da métrica em todas as VMs no MIG e a comparará com a meta de utilização. Por exemplo, se você quiser escalonar automaticamente usando a
tcp_connections
métrica que fornece o número de conexões TCP em uma VM, o escalonador automático considera um número médio de Conexões TCP em todas as VMs no MIG para comparar com a meta. Quando você usa métricas originadas de uma VM, o MIG não pode ser escalonado para0
porque o escalonador 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 vir das VMs no 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.
No Console do Google Cloud, acesse a página Grupos de instâncias.
Se você não tiver um grupo gerenciado de instâncias, crie um. Caso contrário, clique no nome de um MIG na lista para abrir a página do grupo de instâncias.
Clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Em Escalonamento automático, na seção Indicadores de escalonamento automático, se houver um indicador para uma métrica do Cloud Monitoring, clique para editá-lo ou clique em Adicionar um indicador para adicionar um novo indicador.
Defina o Tipo de sinal como Métrica do Cloud Monitoring.
Clique em Configurar. No painel Recurso e métrica que é aberto, faça o seguinte:
- Clique em Selecionar uma métrica.
- Selecione a métrica que você quer usar para o escalonamento automático. Você pode filtrar as métricas com base em palavras-chave, como memória, bytes, disco.
- Clique em Aplicar. O painel exibe um gráfico que mostra os dados da métrica selecionada.
Se você quiser usar dados específicos da métrica, adicione um filtro com base nos rótulos da seguinte maneira:
- Na seção Filtros, clique em Adicionar um filtro.
- Selecione um Rótulo e insira um Valor.
- Clique em Concluído. O gráfico é atualizado para mostrar o valor filtrado da métrica.
Para conferir o valor agregado da métrica que será usado para escalonar automaticamente seu MIG, ative o botão Mostrar agregação no gráfico. O gráfico é atualizado para mostrar o valor agregado.
Na seção Opções de meta de métrica para escalonamento automático, selecione Meta de utilização.
Preencha o seguinte:
- Meta de utilização: especifique o valor que o escalonador automático precisa manter. Precisa ser um número positivo. Por exemplo, 24,5 e 100 são valores aceitáveis.
- Tipo de meta de utilização: selecione um tipo de meta que corresponda ao tipo de medida da métrica. Para comparações precisas, se a meta de utilização for medida por segundos, use Delta / segundo como o tipo de meta. Da mesma forma, use Delta / minuto 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 os compara com a meta de utilização.
- Delta / minuto: 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.
Quando terminar de configurar a métrica, clique em Selecionar.
- Clique em Selecionar uma métrica.
Revise os detalhes da métrica e clique em Concluído.
Para concluir a configuração, clique em Salvar.
MIG_NAME
: o MIG a que você quer 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
: um URL sem protocolo de uma métrica do Monitoring. Por exemplo,compute.googleapis.com/instance/uptime
. A métrica personalizada precisa atender aos requisitos da 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 o compara 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 uso. Para comparações precisas, se você definir a meta de utilização em segundos, usedelta-per-second
como o tipo de meta. Da mesma forma, usedelta-per-minute
para uma meta de utilização em minutos.
METRIC_FILTER
: aplica um filtro para usar um valor individual de uma métrica com vários valores e especificar o tipo de recurso monitorado. Se você usar uma métrica de cada VM, não precisará especificar o tipo de recurso monitorado porquegce_instance
é usado como padrão. Para outras métricas, useresource.type
na expressão de filtro para especificar o recurso monitorado. Para saber mais sobre o filtro de métricas, consulte Como monitorar conceitos de métricas.PROJECT_ID
: o ID do projeto.ZONE
: a zona em que o MIG está localizado.AUTOSCALER_NAME
: o nome do escalonador automático.MIG_NAME
: o MIG a que você quer 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
: um URL sem protocolo de uma métrica do Monitoring. Por exemplo,compute.googleapis.com/instance/uptime
. A métrica personalizada precisa atender aos requisitos da 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 o compara 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, useDELTA_PER_SECOND
como o tipo de meta. Da mesma forma, useDELTA_PER_MINUTE
para uma meta de utilização em minutos.
METRIC_FILTER
: aplica um filtro para usar um valor individual de uma métrica com vários valores e especificar o tipo de recurso monitorado. Se você usar uma métrica de cada VM, não precisará especificar o tipo de recurso monitorado porquegce_instance
é usado como padrão. Para outras métricas, é preciso especificar o recurso monitorado usando o seletorresource.type
. Para saber mais sobre o filtro de métricas, consulte Como monitorar conceitos de métricas.No Console do Google Cloud, acesse a página Grupos de instâncias.
Se você não tiver um grupo gerenciado de instâncias, crie um. Caso contrário, clique no nome de um MIG na lista para abrir a página do grupo de instâncias.
Clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Em Escalonamento automático, na seção Indicadores de escalonamento automático, se houver um indicador para uma métrica do Monitoring, você poderá clicar nele para editá-lo ou em Adicione um indicador para incluir uma nova métrica.
Defina o Tipo de sinal como Métrica do Cloud Monitoring.
Clique em Configurar. No painel Recurso e métrica que é aberto, faça o seguinte:
- Clique em Selecionar uma métrica.
- Selecione a métrica que você quer usar para o escalonamento automático. Você pode filtrar as métricas com base em palavras-chave, como memória, bytes, disco.
- Clique em Aplicar. O painel exibe um gráfico que mostra os dados da métrica selecionada.
Se você quiser usar dados específicos da métrica, adicione um filtro com base nos rótulos da seguinte maneira:
- Na seção Filtros, clique em Adicionar um filtro.
- Selecione um Rótulo e insira um Valor.
- Clique em Concluído. O gráfico é atualizado para mostrar o valor da métrica filtrada.
Para conferir o valor agregado da métrica que será usado para escalonar automaticamente seu MIG, ative o botão Mostrar agregação no gráfico. O gráfico é atualizado para mostrar o valor agregado.
Na seção Opções de destino de métrica para escalonamento automático, selecione Atribuição de instância de VM única.
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.
Quando terminar de configurar a métrica, clique em Selecionar.
- Clique em Selecionar uma métrica.
Revise os detalhes da métrica e clique em Concluído.
Para concluir a configuração, clique em Salvar.
MIG_NAME
: o nome do MIG ao qual você quer 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
: um URL sem protocolo de uma métrica do Monitoring. Por exemplo,compute.googleapis.com/instance_group/size
. A métrica personalizada precisa atender aos requisitos da métrica personalizada.METRIC_FILTER
: aplica um filtro para usar um valor individual de uma métrica com vários valores e especificar o tipo de recurso monitorado. Para saber mais sobre o filtro de métricas, consulte Conceitos de métricas do Monitoring.INSTANCE_ASSIGNMENT
: a quantidade de trabalho a ser atribuída a cada instância de VM no MIG.PROJECT_ID
: o ID do projeto.ZONE
: a zona em que o MIG está localizado.AUTOSCALER_NAME
: o nome do escalonador automático.MIG_NAME
: o nome do MIG ao qual você quer 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
: um URL sem protocolo de uma métrica do Monitoring. Por exemplo,compute.googleapis.com/instance_group/size
. A métrica personalizada precisa atender aos requisitos da métrica personalizada.METRIC_FILTER
: aplica um filtro para usar um valor individual de uma métrica com vários valores e especificar o tipo de recurso monitorado. Para saber mais sobre o filtro de métricas, consulte Conceitos de métricas do Monitoring.INSTANCE_ASSIGNMENT
: a quantidade de trabalho a ser atribuída a cada instância de VM no MIG.- Um MIG zonal chamado
our-instance-group
é atribuído para executar uma tarefa específica. O grupo está localizado na zonaus-central1-a
. - Você tem uma métrica personalizada de Monitoring que exporta um valor que você quiser manter em determinado nível. Para este exemplo, suponha que a métrica represente a latência média das consultas de processamento atribuídas ao grupo.
- A métrica personalizada tem o nome:
custom.googleapis.com/example_average_latency
. - A métrica personalizada tem um rótulo com uma chave chamada
group_name
e um valor igual ao nome do MIG,our-instance-group
. - A métrica personalizada exporta dados para o recurso monitorado global, ou seja, não está associada a nenhuma VM específica.
- A métrica personalizada tem o nome:
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.
Clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Em Escalonamento automático, na seção Indicadores de escalonamento automático, clique em Adicione um indicador.
Defina o Tipo de sinal como Métrica do Cloud Monitoring.
Clique em Configurar. O painel Recurso e métrica é aberto.
- Clique em Selecionar uma métrica.
- Escolha sua métrica em Global > Métricas personalizadas.
- Clique em Aplicar.
- Na seção Destino, faça o seguinte:
- Clique em Adicionar um filtro.
- No menu suspenso Rótulo, selecione
group_name
. - No campo Valor, informe
our-instance-group
. - Clique em Concluído. O gráfico é atualizado para mostrar o valor filtrado da métrica.
- Na seção Opções de meta de métrica para escalonamento automático, faça o seguinte:
- Selecione Meta de utilização.
- Insira o valor da meta de utilização como 250.
- Defina o tipo de meta de utilização como Delta / segundo.
- Depois de configurar a métrica, clique em Selecionar.
- Clique em Selecionar uma métrica.
Revise os detalhes da métrica e clique em Concluído.
Quando terminar, clique em Salvar.
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.
Clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Na seção Indicadores de escalonamento automático, clique em Adicionar um indicador.
Defina o Tipo de sinal como Fila do Cloud Pub/Sub.
Selecionar um tópico. Se quiser um novo tópico, clique em Criar um tópico para fazer isso.
Selecione a Assinatura em que você quer escalonar automaticamente seu MIG. Se quiser uma assinatura nova, clique em Criar uma assinatura para criar uma.
No campo Número de mensagens a serem atribuídas a cada VM, especifique o número de mensagens não reconhecidas que você espera que cada VM processe.
Clique em Concluído.
Quando terminar, clique em Salvar.
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.
Clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Em Escalonamento automático, na seção Indicadores de escalonamento automático, clique em Adicione um indicador.
Defina o Tipo de sinal como Métrica do Cloud Monitoring.
Clique em Configurar. O painel Recurso e métrica é aberto.
- Clique em Selecionar uma métrica.
- Selecione Instância de VM > Instância > Bytes recebidos
(
compute.googleapis.com/instance/network/received_bytes_count
). - Clique em Aplicar.
- Selecione Instância de VM > Instância > Bytes recebidos
(
- Na seção Opções de meta de métrica para escalonamento automático, faça o seguinte:
- Verifique se a Meta de utilização está selecionada.
- Insira um valor de meta de utilização.
- Defina um tipo de meta de utilização.
- Depois de configurar a métrica, clique em Selecionar.
- Clique em Selecionar uma métrica.
Revise os detalhes da métrica e clique em Concluído.
Quando terminar, clique em Salvar.
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.
Na página de visão geral do grupo de instâncias, clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Em Escalonamento automático, na seção Indicadores de escalonamento automático, clique em Adicione um indicador.
Defina o Tipo de sinal como Métrica do Cloud Monitoring.
Clique em Configurar. O painel Recurso e métrica é aberto.
- Clique em Selecionar uma métrica.
- Selecione Instância de VM > Memória > Uso da memória
(
compute.googleapis.com/instance/memory/percent_used
). - Clique em Aplicar.
- Selecione Instância de VM > Memória > Uso da memória
(
- Na seção Destino, faça o seguinte:
- Clique em Adicionar um filtro.
- No menu suspenso Rótulo, escolha o rótulo da métrica estado.
- No campo Valor, digite used.
- Clique em Concluído.
- Na seção Opções de meta de métrica para escalonamento automático, faça o seguinte:
- Verifique se a Meta de utilização está selecionada.
- Insira um valor de meta de utilização.
- Defina o tipo de meta de utilização como Medidor.
- Depois de configurar a métrica, clique em Selecionar.
- Clique em Selecionar uma métrica.
Revise os detalhes da métrica e clique em Concluído.
Quando terminar, clique em Salvar.
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.
Na página de visão geral do grupo de instâncias, clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Em Escalonamento automático, na seção Indicadores de escalonamento automático, clique em Adicione um indicador.
Defina o Tipo de sinal como Métrica do Cloud Monitoring.
Clique em Configurar. O painel Recurso e métrica é aberto.
- Clique em Selecionar uma métrica.
- Selecione Instância de VM > Disco > Operações de disco
(
agent.googleapis.com/disk/operation_count
). - Clique em Aplicar.
- Selecione Instância de VM > Disco > Operações de disco
(
- Na seção Opções de meta de métrica para escalonamento automático, faça o seguinte:
- Verifique se a Meta de utilização está selecionada.
- Insira um valor de meta de utilização.
- Defina um tipo de meta de utilização.
- Depois de configurar a métrica, clique em Selecionar.
- Clique em Selecionar uma métrica.
Revise os detalhes da métrica e clique em Concluído.
Quando terminar, clique em Salvar.
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique no nome do seu MIG na lista para abrir a página de visão geral do grupo de instâncias.
Na página de visão geral do grupo de instâncias, clique em Editar.
Se não houver configuração de escalonamento automático, faça o seguinte:
- Em Escalonamento automático, clique em Configurar escalonamento automático.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático.
Em Escalonamento automático, na seção Indicadores de escalonamento automático, clique em Adicione um indicador.
Defina o Tipo de sinal como Métrica do Cloud Monitoring.
Clique em Configurar. O painel Recurso e métrica é aberto.
- Clique em Selecionar uma métrica.
- Selecione Grupo de instâncias > Compute_group > Tamanho do grupo de instâncias
(
compute.googleapis.com/instance_group/size
). - Clique em Aplicar.
- Selecione Grupo de instâncias > Compute_group > Tamanho do grupo de instâncias
(
- Na seção Destino, faça o seguinte:
- Clique em Adicionar um filtro.
- No menu suspenso Rótulo, escolha o rótulo de recurso instance_group_name.
- No campo Valor, digite o nome do MIG (MIG_2) com base no qual você quer fazer o escalonamento automático.
- Clique em Concluído.
- Na seção Opções de meta de métrica para escalonamento automático, faça o seguinte:
- Selecione Atribuição de instância de VM única.
- No campo "Atribuição de instância de VM única", insira
4
se você quiser manter uma VM no seu MIG atual (MIG_1) para cada 4 VMs em MIG_2.
- Depois de configurar a métrica, clique em Selecionar.
- Clique em Selecionar uma métrica.
Revise os detalhes da métrica e clique em Concluído.
Quando terminar, clique em Salvar.
Identificador de métrica ou URL de métrica: o nome da métrica no formato de um URL sem protocolo. É possível 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 reconhecidas é
pubsub.googleapis.com/subscription/num_undelivered_messages
.Tipo de recurso monitorado: a origem do valor da métrica. É possível 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
. Saiba mais sobre cada tipo de recurso monitorado em 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 a partir do 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 você quiser explorar seus valores de métricas com filtros diferentes, teste-os 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 reconhecidas em todas as assinaturas disponíveis. Cada linha no gráfico indica uma assinatura.Sem um filtro, o escalonador automático considera a soma dos valores de métricas de todas as assinaturas. Para fazer o escalonamento automático com base em uma única assinatura, aplique um filtro no rótulo
subscription_id
definido parapubsub_subscription
. A captura de tela a seguir mostra uma única assinatura após a aplicação do filtro.- É preciso colocar o valor de um filtro entre aspas duplas.
- É preciso usar o operador de comparação de igualdade direta (
=
). Você precisa usar o operador
AND
para mesclar critérios de filtro diferentes.Por exemplo:
--stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"our-subscription\""
.É preciso usar valores diretos. Não é possível usar caracteres curinga ou funções no filtro.
Por exemplo, não é possível usar
resource.labels.zone = starts_with("us-")
.Não é possível usar rótulos de metadados de recursos que armazenem metadados sobre um recurso monitorado.
- Se a configuração de escalonamento automático usar dados de cada VM no grupo, configure
instâncias no MIG para que cada VM exporte a métrica personalizada. Os valores
exportados de cada VM precisam 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.
- Exportar dados pelo menos a cada 60 segundos. Se você exporta dados com mais frequência do que a cada 60 segundos, o autoescalador consegue responder mais rápido para carregar alterações. Se você exportar seus dados a cada 60 segundos, talvez o escalador automático não consiga responder rápido o suficiente para carregar as alterações.
- A métrica precisa exportar dados do tipo de valor
INT64
ouDOUBLE
. - Saiba mais sobre como gerenciar escalonadores automáticos.
- Saiba como os escalonadores automáticos tomam decisões.
- Saiba como usar vários sinais de escalonamento automático para escalonar seu grupo.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Limitações
O escalonamento com base nas métricas do Monitoring é restrito pelas limitações de todos os escalonadores automáticos, bem como pelas seguintes limitações:
Configurar o escalonamento automático com base em métricas do Monitoring
É possível usar um valor de métrica do Monitoring para escalonamento automático de duas maneiras diferentes:
Escalonamento automático para manter uma métrica em um valor desejado
Quando você quiser manter uma métrica com um valor de segmentação, especifique uma meta de utilização. O escalonador automático cria VMs quando o valor da métrica está acima da meta e as exclui quando o valor da métrica está abaixo da meta.
Quando a métrica tiver vários valores, aplique um filtro para fazer o escalonamento automático usando um valor individual da métrica. Para mais detalhes sobre filtros de métricas e outros campos que podem ser usados na configuração, consulte Conceitos de métricas do Monitoring.
Console
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 fazer o escalonamento automático 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 a sinalização
--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:
Veja uma lista completa de comandos e sinalizações disponíveis para a CLI gcloud na referência do
gcloud
.REST
Para configurar o escalonamento automático com base nas métricas do Monitoring de um MIG zonal, use o
autoscalers
ou, para um MIG regional, use o recursoregionAutoscalers
.Faça a seguinte chamada para escalonar automaticamente um MIG zonal com base em uma métrica do Monitoring 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 a 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:
Escalonamento automático com base no trabalho disponível para cada VM em um MIG
Quando quiser fazer o escalonamento automático com base na quantidade de trabalho disponível para cada VM em um MIG, especifique uma única atribuição de instância. O valor da atribuição de instância única que você define indica o quanto de trabalho você espera que cada VM processe. O escalonador automático divide o valor da métrica pelo valor de atribuição de instância única para calcular a quantidade de VMs necessárias.
Um valor de métrica de
0
indica que não há trabalho para o seu MIG concluir. Se o número mínimo de instâncias do MIG for definido como0
e o valor da métrica cair para0
, o MIG será escalonado para0
até que o valor da métrica aumente.Quando a métrica tiver vários valores, aplique um filtro para fazer o escalonamento automático usando um valor individual da métrica. Para mais detalhes sobre filtros de métricas e outros campos que podem ser usados na configuração, consulte Conceitos de métricas do Monitoring.
Console
gcloud
Para configurar o escalonamento automático com base nas métricas do Monitoring, use o comando
set-autoscaling
.No comando, especifique a sinalização
--stackdriver-metric-single-instance-assignment
para indicar a quantidade de trabalho que você espera que cada VM no grupo processe.O comando a seguir cria um escalonador automático com base na atribuição de trabalho de 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:
REST
Para configurar o escalonamento automático com base nas métricas do Monitoring de um MIG zonal, use o
autoscalers
ou, para um MIG regional, use o recursoregionAutoscalers
.Use o parâmetro
singleInstanceAssignment
para especificar a quantidade de trabalho que você espera que cada VM processe.Por exemplo, faça a seguinte chamada para criar um escalonador automático que dimensiona 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:
Exemplos de escalonamento automático com base em métricas
Nesta seção, mostramos alguns exemplos de métricas usadas para escalonamento automático. Para uma lista completa de métricas, consulte Métricas do Google Cloud.
Escalonamento automático com base em uma métrica personalizada
Pode haver uma situação em que a métrica que oferece um sinal relevante não representa 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. Para este exemplo, suponha que você faça o escalonamento com base na latência média de processamento do grupo.
Suponha a seguinte configuração:
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 processar a carga, já quando ele ficar abaixo desse valor, você poderá liberar alguns recursos. Você quer que o escalonador automático adicione ou remova VMs gradualmente a uma taxa proporcional ao valor da métrica acima ou abaixo da meta. Neste exemplo, suponha que você tenha determinado que o valor de segmentação como
250 delta/sec
.É possível 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
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" } ] } }
Escalonamento automático com base em mensagens não reconhecidas no Pub/Sub
Para configurar o escalonamento automático com base em mensagens não reconhecidas em uma assinatura do Pub/Sub, use a métrica
subscription/num_undelivered_messages
fornecida porpubsub
e filtre porsubscription ID
.A métrica
subscription/num_undelivered_messages
exporta o número total de mensagens na assinatura, incluindo as que estão sendo processadas, mas que ainda não foram confirmadas. 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 zero quando o trabalho ainda estiver sendo realizado, o que inicia o escalonamento automático para escalonar e possivelmente interromper o trabalho real.Se você não tiver uma assinatura, crie uma assinatura pull, push ou BigQuery antes de configurar o escalonamento automático.
Console
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 o escalonamento automático de um MIG zonal, use o recurso
autoscalers
ou, para um MIG regional, use oregionAutoscalers
.Por exemplo, faça a seguinte chamada 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" } ] } }
Escalonamento 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 no seu MIG, use a métrica
instance/network/received_bytes_count
fornecida porcompute
.Console
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" } ] } }
Escalonamento automático com base no uso da 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. Filtre a métrica porstate
para usar apenas o estado da memóriaused
. Se você não especificar o filtro, o escalonador automático usará a soma da utilização de memória por todos os estados de memória rotulados comobuffered
,cached
,free
,slab
eused
.Console
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" } ] } }
Escalonamento automático com base na E/S de disco
Para configurar o escalonamento automático com base no total de operações de E/S do disco, use a métrica
operation_count
fornecida pelas métricas do Agente de operações de disco. Se você quiser escalonar com base nas operações de leitura ou gravação, filtre a métrica usando o rótulodirection
. Da mesma forma, para escalonar com base nas operações de disco em um dispositivo específico, use o rótulodevice
no filtro de métrica.Console
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" } ] } }
Escalonamento automático com base no tamanho de outro MIG
É possível fazer o escalonamento automático de um MIG com base no tamanho de outro no mesmo projeto. Por exemplo, é possível ter um aplicativo de várias camadas com um MIG de front-end que faz o escalonamento automático com base em um balanceador de carga e um MIG de back-end que faz o escalonamento automático de maneira proporcional para o front-end. Use uma única atribuição de instância para definir quantas VMs de back-end são necessárias para cada VM de front-end. Se você precisar de uma VM de back-end para cada quatro VMs de front-end, defina a atribuição de instância única como 4 no MIG de back-end.
Para escalonar automaticamente um MIG (MIG_1) com base no tamanho de outro MIG (MIG_2), use a
instance_group/size
métrica fornecida porcompute
.Console
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 do Monitoring
Nesta seção, fornecemos uma breve descrição dos conceitos de métricas de Monitoring que você precisa conhecer ao configurar o escalonamento automático com base nas métricas de Monitoring.
Requisitos de filtragem de métrica
Quando você usa uma métrica que tem vários valores (categorizados com rótulos), é possível aplicar um filtro para fazer o escalonamento automático com base em valores específicos da métrica. Se o filtro retornar vários valores, os valores serão adicionados juntos. Para 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 de filtro de Monitoring. O filtro precisa atender aos seguintes requisitos:
Para ver uma referência completa de rótulos de métricas e rótulos de recursos monitorados que podem ser filtrados, consulte a lista de métricas e a lista de recursos monitorados.
Requisitos de métricas personalizadas
Para usar métricas personalizadas, primeiro crie uma métrica personalizada associada a um dos tipos de recursos monitorados.
Uma métrica personalizada usada no escalonamento automático precisa ter as seguintes propriedades:
Para obter informações sobre como criar uma métrica personalizada, consulte Como usar métricas personalizadas.
A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-11-22 UTC.
-