Como obter informações sobre MIGs e instâncias gerenciadas

Use os métodos nesta página para receber informações sobre os grupos de instâncias gerenciadas (MIGs, na sigla em inglês) e sobre as instâncias de máquina virtual (VM) em cada MIG.

Antes de começar

Como receber informações sobre MIGs

É possível recuperar informações sobre os próprios grupos, por exemplo, para inspecionar as políticas anexadas ao grupo e verificar se o grupo é estável ou está passando por alterações. Para ver informações sobre as instâncias de VM em um MIG, consulte Como receber informações sobre instâncias gerenciadas.

Como listar MIGs

Para receber uma lista de seus grupos de instâncias gerenciadas, use o console, a ferramenta gcloud ou a API.

Console

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

    Acessar a página "Grupos de instâncias"

    Se você tiver grupos de instâncias, a página os listará, incluindo os grupos de instâncias gerenciadas e grupos de instâncias não gerenciadas.

    Os grupos de instâncias gerenciadas têm um valor na coluna Modelo.

gcloud

Liste todos os grupos de instâncias gerenciadas dentro de um projeto:

gcloud compute instance-groups managed list

API

Para listar todos os grupos de instâncias gerenciadas em uma zona, crie uma solicitação GET para o método instanceGroupManagers.list:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

Para grupos de instâncias gerenciadas por região (com várias zonas), use o recurso regionInstanceGroupManagers: regionInstanceGroupManagers.list.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers

Como ver as propriedades de um MIG

Para receber informações sobre um MIG específico, incluindo as políticas anexadas (por exemplo, políticas de recuperação automática), use o console, a ferramenta gcloud ou a API.

Para ver o id do grupo, é preciso usar a ferramenta gcloud ou a API.

Console

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

    Acessar a página "Grupos de instâncias"

    A página listará os grupos de instâncias, se você os tiver. A página também lista os grupos de instâncias não gerenciadas.

  2. Na coluna Nome da lista, selecione o nome do grupo de instâncias a ser examinado. Uma página será aberta com as propriedades do grupo de instâncias e a lista de instâncias incluídas no grupo.

gcloud

Para ver informações sobre um grupo específico:

gcloud compute instance-groups managed describe instance-group \
    [--zone zone | --region region]

O comando retorna detalhes sobre o grupo, incluindo as políticas anexadas.

API

Para receber informações sobre um grupo específico, crie uma solicitação GET para o método instanceGroupManagers.get e inclua o nome de um grupo de instâncias gerenciadas específico:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

Para grupos de instâncias gerenciadas por região (com várias zonas), use o recurso regionInstanceGroupManagers: regionInstanceGroupManagers.list e regionInstanceGroupManagers.get.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

A resposta inclui detalhes sobre o grupo, incluindo políticas anexadas, exceto as de escalonamento automático.

Para receber informações sobre escalonadores automáticos, crie uma solicitação GET para o método autoscalers.get e inclua o nome de um grupo de instâncias gerenciadas específico:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/autoscalers/instance-group

Para grupos de instâncias gerenciadas por região (várias zonas), use o recurso regionAutoscalers: regionAutoscalers.get.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/regionAutoscalers/instance-group

Como verificar se um MIG é estável

Vários comandos e solicitações criam, excluem e modificam instâncias em um grupo de instâncias gerenciadas. Essas operações serão retornadas como DONE depois que o grupo programar ações para criar, excluir ou atualizar essas instâncias. No entanto, isso não significa que as instâncias no grupo tenham sido criadas, excluídas ou atualizadas antes da conclusão das ações subjacentes. Você precisa verificar o status do grupo ou, como alternativa, verificar o status dessas instâncias.

Um grupo de instâncias gerenciadas está estável quando nenhuma instância no grupo está sofrendo alterações, nenhuma alteração futura está programada para as instâncias e o grupo não está sendo modificado.

Você precisa saber se o grupo está estável quando tem dependências que dependem da integridade e da disponibilização de todas as instâncias do grupo. Por exemplo, comece a programar jobs, enviar tráfego ou atribuir intervalos de chaves depois de confirmar que todas as VMs estão funcionando e íntegras.

É possível verificar se um grupo de instâncias gerenciadas está em execução e íntegro ao conferir o valor do campo status.isStable.

gcloud

Use o comando describe do grupo de instâncias:

gcloud compute instance-groups managed describe instance-group-name \
    [--zone zone | --region region]

A ferramenta gcloud retorna informações detalhadas sobre o grupo de instâncias, incluindo o campo status.isStable.

Para pausar um script até que o grupo esteja estável, use o comando wait-until com a sinalização --stable. Por exemplo:

gcloud compute instance-groups managed wait-until instance-group-name \
    --stable \
    [--zone zone | --region region]
Waiting for group to become stable, current operations: deleting: 4
Waiting for group to become stable, current operations: deleting: 4
...
Group is stable

O comando retorna depois que status.isStable é definido como true para o grupo.

API

Para um MIG por zona, faça uma solicitação GET para o método instanceGroupManagers.get:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/get

Para um grupo de instâncias gerenciadas por região, substitua zones/zone por regions/region:

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/get

A API retorna informações detalhadas sobre o grupo de instâncias, incluindo o campo status.isStable.

status.isStable definido como false indica que as alterações estão ativas, pendentes ou que o próprio grupo de instâncias gerenciadas está sendo modificado.

status.isStable definido como true indica o seguinte:

  • Nenhuma das instâncias no grupo de instâncias gerenciadas está passando por qualquer tipo de alteração e o currentAction de todas as instâncias é NONE.
  • Nenhuma alteração está pendente para as instâncias no grupo de instâncias gerenciadas.
  • O grupo de instâncias gerenciadas não está sendo modificado.

Os grupos de instâncias gerenciadas podem ser modificados de várias maneiras. Por exemplo:

  • Você faz uma solicitação para lançar um novo modelo de instância.
  • Você faz uma solicitação para criar, excluir, redimensionar ou atualizar instâncias no grupo.
  • Um escalonador automático solicita o redimensionamento do grupo.
  • Um recurso de recuperação automática está substituindo uma ou mais instâncias não íntegras do grupo de instâncias gerenciadas.
  • Em um grupo de instâncias gerenciadas por região, algumas das instâncias estão sendo redistribuídas.

Assim que todas as ações forem concluídas, status.isStable será definido como true novamente para esse grupo de instâncias gerenciadas.

Para instâncias de VM individuais, consulte Como verificar o status de instâncias gerenciadas.

Como ver o histórico de operações de recuperação automática

Se você configurou a recuperação automática, é possível visualizar eventos anteriores de recuperação automática.

Como monitorar atualizações graduais

Se você iniciou uma atualização gradual e quer saber quando ela for concluída, consulte Atualizações de monitoramento.

Como visualizar a configuração com estado

Se você configurou um MIG com estado e quer revisar sua configuração, consulte Como visualizar a configuração com estado.

Como receber informações sobre instâncias de VM gerenciadas em um MIG

Como listar instâncias gerenciadas de um MIG

Para uma lista das instâncias gerenciadas em um grupo, incluindo seus estados e modelos, use o console, a ferramenta gcloud ou a API.

Console

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

    Acessar a página "Grupos de instâncias"

    A página listará os grupos de instâncias, se você os tiver. A página também lista os grupos de instâncias não gerenciadas.

  2. Na coluna Nome da lista, selecione o nome do grupo de instâncias a ser examinado. Uma página será aberta com as propriedades do grupo de instâncias e a lista de instâncias incluídas no grupo.

gcloud

Use o subcomando list-instances da ferramenta gcloud.

gcloud compute instance-groups managed list-instances instance-group \
    [--zone zone | --region region]

O comando retorna uma lista de instâncias e respectivos detalhes, incluindo o status atual, o modelo da instância e o último erro.

API

Para um MIG por zona, crie uma solicitação GET para o método instanceGroupManagers.listManagedInstances e inclua o nome de um grupo de instâncias gerenciadas específico:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

Para grupos de instâncias gerenciadas por região (com várias zonas), use o recurso regionInstanceGroupManagers: regionInstanceGroupManagers.list.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

A resposta inclui uma lista de instâncias e respectivos detalhes, incluindo o status atual e o modelo de instância.

Como verificar o status de instâncias gerenciadas

Vários comandos e solicitações criam, excluem e modificam instâncias em um grupo de instâncias gerenciadas. Essas operações serão retornadas como DONE depois que o grupo programar ações para criar, excluir ou atualizar essas instâncias. No entanto, isso não significa que as instâncias no grupo tenham sido criadas, excluídas ou atualizadas antes da conclusão das ações subjacentes. Você precisa verificar o status dessas instâncias ou, como alternativa, verificar o status do próprio grupo.

É possível ver a currentAction sendo realizada e os status de cada instância em um grupo de instâncias gerenciadas usando a ferramenta de linha de comando gcloud ou a API .

gcloud

gcloud compute instance-groups managed list-instances instance-group-name \
[--filter="zone:(zone)" | --filter="region:(region)"]

gcloud retorna uma lista de instâncias no grupo e os respectivos status e ações atuais. Por exemplo:

NAME               ZONE           STATUS    ACTION    INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
vm-instances-9pk4  us-central1-f            CREATING  my-new-template
vm-instances-h2r1  us-central1-f  STOPPING  DELETING  my-old-template
vm-instances-j1h8  us-central1-f  RUNNING   NONE      my-old-template
vm-instances-ngod  us-central1-f  RUNNING   NONE      my-old-template

API

Na API, faça uma solicitação GET para o método regionInstanceGroupManagers.listManagedInstances. Para um grupo de instâncias gerenciadas por zona, use o método instanceGroupManagers.listManagedInstances (em inglês).

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/listManagedInstances

A API retorna uma lista de instâncias para o grupo, incluindo instanceStatus e currentAction de cada instância.

{
 "managedInstances": [
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-prvp",
   "id": "5317605642920955957",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/instance-template-name",
   "currentAction": "REFRESHING"
  },
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-pz5j",
   "currentAction": "DELETING"
  },
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-w2t5",
   "id": "2800161036826218547",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/instance-template-name",
   "currentAction": "REFRESHING"
  }
 ]
}

Para cada instância em um grupo de instâncias gerenciadas, o respectivo status é descrito no campo instanceStatus. Para ver uma lista de valores válidos do campo instanceStatus, consulte Como verificar o status de uma instância.

Se a instância estiver passando por algum tipo de alteração, o campo currentAction será preenchido com uma das seguintes ações para ajudar você a acompanhar o andamento da alteração. Caso contrário, o campo currentAction será NONE.

Os valores possíveis de currentAction são:

  • ABANDONING: a instância está sendo removida do grupo de instâncias gerenciadas;
  • CREATING: a instância está em processo de criação;
  • CREATING_WITHOUT_RETRIES: a instância está sendo criada sem novas tentativas (se ela não for criada na primeira tentativa, o grupo de instâncias gerenciadas não tentará substituí-la novamente);
  • DELETING: a instância está em processo de exclusão;
  • RECREATING: a instância está sendo substituída;
  • REFRESHING: a instância está sendo removida e adicionada novamente à lista de pools de destino atuais (essa lista pode corresponder ou não aos pools de destino atuais);
  • RESTARTING: a instância está em processo de reinicialização por meio dos métodos stop e start;
  • VERIFYING: a instância foi criada e está em processo de verificação;
  • NONE: nenhuma ação está sendo executada na instância.

Para verificar se o grupo como um todo é estável ou está passando por alterações, consulte Como verificar o status do grupo.

Como verificar estados de integridade

Se você configurou a recuperação automática no grupo de instâncias gerenciadas, é possível avaliar o estado de integridade de cada VM. Consulte Como verificar o status de integridade.

Como listar erros de instância

Se as instâncias gerenciadas encontrarem erros, será possível visualizá-los para diagnosticar e reduzir a causa.

Use o Console do Google Cloud, a ferramenta gcloud ou a API Compute Engine para listar erros.

Console

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

    Acessar a página "Grupos de instâncias"

  2. Na coluna Nome da lista, selecione o nome do grupo de instâncias a ser examinado. Uma página será aberta com as propriedades do grupo de instâncias e a lista de instâncias incluídas no grupo.

  3. Clique em Erros.

gcloud

Use o comando instance-groups managed list-errors para listar os erros mais recentes no grupo

gcloud compute instance-groups managed list-errors instance-group-name 
[--zone zone | --region region]

Exemplo:

gcloud compute instance-groups managed list-errors example-group \
    --region us-west1
INSTANCE_URL                                                                                        ACTION    ERROR_CODE      ERROR_MESSAGE                                                                                     TIMESTAMP                      INSTANCE_TEMPLATE                                                                                                            VERSION_NAME

https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-v0hl  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-v0hl' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.156-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-qp3d  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-qp3d' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.081-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
...

API

Construa uma solicitação de GET para o método listErrors por zona ou grupo de instâncias gerenciadas por região.

Exemplo:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100

A solicitação recebe uma resposta semelhante a:


{
 "items": [
  {
   "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Instance 'example-mig-m1sz' creation failed: Quota 'CPUS' exceeded.  Limit: 50.0 in zone us-central1-c."
   },
   "timestamp": "2019-01-03T18:47:28.457-08:00",
   "instanceDetails" : {
    "instance": "zones/us-central1-c/instances/example-mig-m1sz",
    "action": "CREATING",
    "version": {
     "name": "example-version-name",
     "instanceTemplate": "global/instanceTemplates/example-template",
    }
   }
  }
 ],
 ...
 "nextPageToken": "Ch0yMDE5LTA3LTI5VDExOjA4OjA2LjYxMi0wNzowMBJ5aHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY29tcHV0ZS9zdGFnaW5nX2FscGhhL3Byb2plY3RzL215cnpha2VyZXltcy1zdGFnaW5nL3pvbmVzL3VzLWNlbnRyYWwxLWlyMS9pbnN0YW5jZXMvaWdtLTEtcXAzZA=="
}

A API listErrors oferece suporte à lista de paginação. Para ver a próxima página de resultados, use o campo nextPageToken de uma resposta em uma solicitação subsequente. Por exemplo: GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100&nextPageToken=next-page-token, substituindo next-page-token pelo token obtido da resposta anterior.

A lista de possíveis erros inclui, entre outros, os seguintes exemplos:

  • Uma nova instância não pode ser criada devido a:
    • Indisponibilidade da capacidade de preempção.
    • Falta de cota, por exemplo, para CPUs em uma determinada região.
    • O limite no número de instâncias de VM foi atingido para a rede associada ao grupo.
    • A imagem de disco especificada no campo properties.disks[].initializeParams.sourceImage do modelo da instância foi excluída ou suas permissões foram alteradas.
    • O cartão de crédito na conta de faturamento associada ao projeto recusou um pagamento.
  • Uma instância existente não pode ser excluída porque:
    • A conta de serviço usada pelo grupo não tem a permissão compute.instances.delete.
    • Muitas exclusões simultâneas foram solicitadas, excedendo os limites de taxa.
  • Não é possível adicionar uma instância a um pool de destino porque ele foi excluído.

Depois de inspecionar esses erros, você pode atenuá-los. Exemplo:

  • Mova sua carga de trabalho para uma zona diferente que tenha capacidade de preempção.
  • Solicite um aumento de cota em uma determinada região.
  • Adicione a permissão compute.instances.delete à conta de serviço usada pelo grupo.

Se uma ação acionada por um grupo de instâncias gerenciadas falhar (por exemplo, se um escalonador automático encontrar um erro ao tentar aumentar o tamanho do grupo), o grupo poderá repetir imediatamente essa ação. Se a última tentativa imediata de repetição falhar, o MIG registrará o erro, e será possível vê-lo ao listar erros de instância. Depois de algum tempo de espera, o grupo tenta novamente a ação com falha. Se o erro persistir, ele poderá ser registrado várias vezes.

O Compute Engine mantém os 500 erros mais recentes dos últimos oito dias, mesmo que as instâncias subjacentes não existam mais ou não possam ser criadas.

Como verificar se uma instância de VM faz parte de um MIG

Para verificar se uma VM específica é membro de um grupo, use o console ou a API.

Console

  1. No Console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar a página "Instâncias de VMs"

  2. Clique em uma instância para acessar os respectivos detalhes.
  3. Se a instância de VM for membro de um grupo de instâncias gerenciadas, o nome desse grupo aparecerá sob o título Em uso por. Se a instância da VM não for membro de um grupo, o título Em uso por não aparecerá na página de detalhes da instância.

API

Consulte Como ver referenciadores para instâncias de VM.

Outra opção para identificar se uma VM é ou foi membro de um grupo de instâncias gerenciadas é procurar estas duas chaves nos metadados da instância:

  • instance-template indica o modelo usado como base para a criação da VM.
  • created-by indica o grupo de instâncias gerenciadas que criou a VM.

Mesmo que você abandone a instância, a VM ainda terá essas entradas de metadados, a menos que você as remova manualmente.

Por exemplo, se houver uma VM chamada random-instance-biy e você quiser saber se ela foi criada por um grupo de instâncias gerenciadas, descreva a instância e procure as chaves de metadados. Exemplo:

gcloud compute instances describe random-instance-biy \
    --zone us-central1-f

A ferramenta gcloud retorna uma resposta semelhante a:

canIpForward: false
cpuPlatform: Intel Ivy Bridge
creationTimestamp: '2016-08-24T14:11:38.012-07:00'
...
metadata:
  items:
  - key: instance-template
    value: projects/123456789012/global/instanceTemplates/example-it
  - key: created-by
    value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

Como visualizar o estado preservado de uma instância gerenciada

Se você configurou um MIG com estado e quer visualizar o estado preservado de cada instância gerenciada, consulte Como visualizar a configuração com estado e o estado preservado.

A seguir