Monitorar alterações no estado de integridade da VM


Neste documento, descrevemos como ver e ler entradas de registro de alterações de estado de integridade de uma VM em um grupo gerenciado de instâncias (MIG) e fornecemos casos de uso específicos para ajudar você a monitorar as VMs no grupo

Se você configurou a verificação de integridade baseada em aplicativos para MIG, o Compute Engine grava uma entrada de registro sempre que o estado de integridade de uma instância gerenciada é alterado. Por exemplo, quando a instância vai do estado HEALTHY para UNHEALTHY. Essas entradas de registro ajudam você a monitorar e depurar o estado de integridade de cada instância gerenciada, bem como a integridade geral do MIG.

Antes de começar

  • Consulte Como configurar a verificação de integridade e a recuperação automática
  • 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.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Preços

O Compute Engine usa o Cloud Logging para gerar entradas de registro de alterações de estado de integridade da instância gerenciada. O Cloud Logging oferece uma cota gratuita por mês após a qual as entradas de registro são cobradas pelo volume de dados. Para mais informações, consulte o resumo de preços do Cloud Logging.

Para evitar os custos de geração de registros, é possível desativar os registros de alteração do estado de integridade.

Como visualizar registros de alterações do estado de integridade

Desde que os registros de alterações de estado de integridade permaneçam ativados, o Compute Engine gravará uma entrada de registro nos registros de plataforma sempre que o estado de integridade de uma instância gerenciada for alterado. É possível ver esses registros para um projeto, para um MIG específico ou para uma instância gerenciada específica.

Como visualizar registros de um projeto ou um MIG

Para ver as entradas de registro de um projeto ou de um MIG específico, use o console do Google Cloud, a gcloud CLI ou a REST.

Console

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Defina os seguintes parâmetros de consulta:

    • Recurso: gerenciador de grupos de instâncias do GCE
    • Nome de registro: instance_group_manager_events
  3. Como alternativa, você pode copiar a seguinte consulta no builder Query.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*
    

    Restrinja sua pesquisa a um grupo de instâncias gerenciadas específico usando a seguinte consulta.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  4. Clique em Run query. Os resultados da consulta exibirão os registros.

gcloud

Use o comando gcloud logging read para visualizar e ler as entradas de registro.

Para ver todos os registros de alterações do estado de integridade no projeto, use o seguinte comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*'\
    --limit 10

Para ver todos os registros de alterações do estado de integridade de um grupo de instâncias gerenciadas específico, use o seguinte comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"' \
    --limit 10

Substitua:

  • PROJECT_ID: o ID do projeto;
  • MIG_NAME: o MIG com os registros de alterações do estado de integridade que você quer visualizar.

REST

Para visualizar os registros de alterações do estado de integridade, faça uma solicitação POST para o método entries.list.

Para ver todos os registros de alterações do estado de integridade no projeto, use o seguinte comando:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:*",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Para ver os registros de alteração de estado de integridade de um grupo de instâncias gerenciadas específico, use o seguinte comando:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name=MIG_NAME",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Substitua:

  • OAUTH2_TOKEN: o token de acesso do seu aplicativo. Para realizar testes locais, use o comando gcloud auth print-access-token para gerar um token.
  • PROJECT_ID: o ID do projeto;
  • MIG_NAME: o MIG com os registros de alterações do estado de integridade que você quer visualizar.

Para mais informações sobre cada entrada de registro, consulte Formato de entradas de registro.

Dependendo se você quer arquivar os registros, usar os registros para análise, transmitir os registros para outros aplicativos ou acionar uma função do Cloud, você pode exportar os registros para destinos como Cloud Storage, BigQuery ou Pub/Sub. Para mais informações sobre como exportar registros, consulte Visão geral das exportações de registros.

Como ver registros de alterações de estado de integridade de uma VM específica

Para ver as entradas de registro de uma instância gerenciada específica, use o console do Google Cloud, a gcloud CLI ou a REST.

Console

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Copie a seguinte consulta no builder do Query.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. Clique em Run query.

gcloud

Use o comando gcloud logging read para visualizar e ler as entradas de registro.

Para ver os registros de alteração do estado de integridade de uma instância gerenciada, use o seguinte comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"' \
    --limit 10

Substitua:

  • PROJECT_ID: o ID do projeto;
  • INSTANCE_NAME: a instância gerenciada em que você quer ver os registros de alteração do estado de integridade.

REST

Para ver os registros de alteração do estado de integridade de uma instância gerenciada, faça uma solicitação POST para o método entries.list.

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
        logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
        jsonPayload.instanceHealthStateChange:* AND
        labels.\"compute.googleapis.com/instance_name\"=\"INSTANCE_NAME\"",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Substitua:

  • OAUTH2_TOKEN: o token de acesso do seu aplicativo. Para realizar testes locais, use o comando gcloud auth print-access-token para gerar um token.
  • PROJECT_ID: o ID do projeto;
  • INSTANCE_NAME: a instância gerenciada em que você quer ver os registros de alteração do estado de integridade.

Formato das entradas de registro

As entradas do registro de alterações de estado da integridade da instância contêm informações úteis para monitorar e depurar o estado das instâncias gerenciadas.

Os registros são gravados nos registros da plataforma com o nome instance_group_manager_events. Os registros da plataforma ajudam a depurar e resolver problemas.

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events"

As entradas de registro de alterações de estado de integridade contêm os seguintes tipos de informações:

  • informações gerais mostradas na maioria dos registros, como gravidade, ID do projeto, nome e ID do MIG, número do projeto, carimbo de data/hora e assim por diante;
  • Campos específicos para o estado de integridade da instância.

Em cada entrada de registro de alteração de estado de integridade, o campo jsonPayload.instanceHealthStateChange contém as seguintes informações:

Field Descrição
instance URL da instância com base no ID do projeto da string e no nome da instância.
instanceWithId URL da instância, com base no ID numérico do projeto e no ID da instância.
ipAddress Endereço IP da instância, conforme verificado pela verificação de integridade.
network URL do recurso de rede para esta instância, com base no ID do projeto da string e no nome da rede.
networkWithId URL do recurso de rede para esta instância, com base no ID do projeto numérico e no ID da rede.
healthCheck URL da verificação de integridade configurada para o grupo de instâncias gerenciadas.
previousDetailedHealthState Estado de integridade anterior da instância. Para ver a lista dos estados possíveis, consulte estados de integridade.
detailedHealthState Estado de integridade atual da instância. Para ver a lista dos estados possíveis, consulte estados de integridade.
notificationTime Carimbo de data/hora de quando a mudança do estado de integridade ocorreu.

Os campos de registro do tipo truebooleano normalmente só aparecem se tiverem um valor . Se um campo booleano tem um valor false, esse campo é omitido do registro.

A codificação UTF-8 é aplicada aos campos de registro. Os caracteres que não forem UTF-8 serão substituídos por pontos de interrogação.

Exemplo de entrada de registro

O exemplo a seguir mostra a alteração de estado de integridade de uma instância de VM de HEALTHY para UNHEALTHY:

  {
    "logName": "projects/my-project/logs/compute.googleapis.com%2Finstance_group_manager_events",
    "resource": {
      "type": "gce_instance_group_manager",
      "labels": {
        "instance_group_manager_id": "3138236342290985981",
        "instance_group_manager_name": "my-mig",
        "project_id": "my-project",
        "location": "europe-west3"
      }
    },
    "labels": {
      "compute.googleapis.com/instance_id": "6498902454451155884",
      "compute.googleapis.com/instance_location": "europe-west3-a",
      "compute.googleapis.com/instance_name": "my-mig-a"
    },
    "timestamp": "2019-11-19T15:47:57.127Z",
    "severity": "INFO",
    "jsonPayload": {
      "@type": "type.googleapis.com/compute.InstanceGroupManagerEvent",
      "instanceHealthStateChange": {
        "instance": "projects/my-project/zones/europe-west3-a/instances/my-mig-a",
        "instanceWithId": "projects/123456/zones/europe-west3-a/instances/6498902454451155884",
        "ipAddress": "10.0.0.4",
        "network": "projects/my-project/global/networks/net-1",
        "networkWithId": "projects/123456/global/networks/456",
        "healthCheck": "projects/my-project/global/healthChecks/my-mig-health-check",
        "previousDetailedHealthState": "HEALTHY",
        "detailedHealthState": "UNHEALTHY",
        "notificationTime": "2019-11-19T15:47:56.444Z"
      }
    },
    "receiveTimestamp": "2019-11-19T15:47:57.296439184Z"
  }
  

Casos de uso

Use os registros de alterações de estado de integridade nos seguintes cenários de monitoramento ou depuração:

  • Descubra com que frequência uma instância de VM específica mudou os estados de integridade ao longo do tempo.
  • Avalie a frequência com que um MIG teve alterações de estado de integridade nas instâncias.
  • Identifique instâncias de VM com problemas que costumam ficar em UNHEALTHY.
  • Descubra o que causou uma tentativa de recuperação automática.
  • Descubra se uma tentativa de recuperação automática foi bem-sucedida para uma instância de VM específica.
  • Ajuste a configuração da verificação de integridade de um aplicativo determinando um atraso inicial apropriado para recuperação automática.

Como monitorar alterações de estado de integridade de uma VM

É possível monitorar a frequência com que o estado de integridade de uma instância de VM é alterado criando uma métrica que rastreia as alterações de estado de integridade dessa VM específica.

Para criar a métrica e monitorar as alterações, faça o seguinte:

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Digite a seguinte consulta no builder do Query usando o ID do projeto e o nome da instância.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. Na seção Resultados da consulta, clique em Ações e, em seguida, em Criar métrica.

  4. Na página Criar métrica de registros, faça o seguinte:

    1. Defina o Tipo de métrica como Contador.
    2. Insira um nome de métrica de registro, por exemplo, health-mig-xyzq.

      A seção Filtro de versão exibe a consulta do registro do Explorador de registros. Também é possível configurar o filtro da métrica para considerar apenas os estados de interrupção, como UNHEALTHY e TIMEOUT, adicionando severity>=WARNING ao filtro.

    3. Em Rótulos, clique em Adicionar rótulo.

    4. Digite um Nome de rótulo, por exemplo: health_state.

    5. Defina o Tipo de rótulo como STRING.

    6. Defina o Nome do campo como jsonPayload.instanceHealthStateChange.detailedHealthState. Isso permitirá distinguir entre diferentes mudanças de estado de integridade.

    7. Clique em Concluído para adicionar o rótulo.

    8. Clique em Criar métrica.

  5. Acesse a página Métricas com base em registros e encontre a métrica recém-criada.

  6. Clique no menu na linha da métrica e selecione Visualizar no Metrics Explorer. O Metrics Explorer é aberto e exibe o gráfico que representa as alterações no estado de integridade da instância de VM especificada na consulta.

Como monitorar alterações de estado de integridade de todas as VMs em um MIG

É possível monitorar as alterações de estado de integridade de todas as instâncias gerenciadas criando uma métrica que rastreia as alterações de estado de integridade das instâncias gerenciadas.

Para criar a métrica e monitorar as alterações, faça o seguinte:

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Digite a seguinte consulta no builder do Query, usando o ID do projeto e o nome do grupo de instâncias gerenciadas.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. Na seção Resultados da consulta, clique em Ações e, em seguida, em Criar métrica.

  4. Na página Criar métrica de registros, faça o seguinte:

    1. Defina o Tipo de métrica como Contador.
    2. Insira um nome de métrica de registro, por exemplo, health-mig-xyzq.
    3. Em Rótulos, clique em Adicionar rótulo.
    4. Digite um Nome de rótulo, por exemplo: health_state.
    5. Defina o Tipo de rótulo como STRING.
    6. Defina o Nome do campo como jsonPayload.instanceHealthStateChange.detailedHealthState. Isso permitirá distinguir entre diferentes mudanças de estado de integridade.
    7. Clique em Concluído para adicionar o rótulo.
    8. Clique em Criar métrica.
  5. Acesse a página Métricas com base em registros e encontre a métrica recém-criada.

  6. Clique no menu na linha da métrica e selecione Visualizar no Metrics Explorer. O Metrics Explorer é aberto e exibe o gráfico que representa as alterações no estado de integridade de todas as instâncias de VM no grupo de instâncias gerenciadas especificado na consulta.

Como identificar VMs que não costumam ser íntegras

Para identificar VMs com problemas que costumam ficar no UNHEALTHY, crie uma métrica que rastreie as alterações de estado de integridade de todas as instâncias de VM no MIG e agrupe a métrica por instâncias.

Para criar a métrica e agrupar por instâncias, faça o seguinte:

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Digite a seguinte consulta no builder do Query, usando o ID do projeto e o nome do grupo de instâncias gerenciadas.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. Na seção Resultados da consulta, clique em Ações e, em seguida, em Criar métrica.

  4. Na página Criar métrica de registros, faça o seguinte:

    1. Defina o Tipo de métrica como Contador.
    2. Insira um nome de métrica de registro, por exemplo, health-mig-xyzq.
    3. Em Rótulos, clique em Adicionar rótulo.
    4. Digite um Nome de rótulo, por exemplo: health_state.
    5. Defina o Tipo de rótulo como STRING.
    6. Defina o Nome do campo como jsonPayload.instanceHealthStateChange.detailedHealthState. Isso permitirá distinguir entre diferentes mudanças de estado de integridade.
    7. Clique em Concluído para adicionar o rótulo.
    8. Da mesma forma, adicione um segundo rótulo, por exemplo, instance, com o Nome do campo definido como jsonPayload.instanceHealthStateChange.instance.
    9. Clique em Criar métrica.
  5. Acesse a página Métricas com base em registros e encontre a métrica recém-criada.

  6. Clique no menu na linha da métrica e selecione Visualizar no Metrics Explorer. O Metrics Explorer é aberto e exibe o gráfico que representa as alterações no estado de integridade de todas as instâncias de VM no grupo de instâncias gerenciadas especificado na consulta.

  7. Defina a opção Agrupar por como instance para ver o número agregado de alterações de estado de integridade em cada instância.

As instâncias com o maior número de alterações de estado de integridade agregadas são aquelas que não são íntegras com mais frequência.

Como verificar o que causou uma tentativa de recuperação automática

Para descobrir o que causou uma tentativa de recuperação automática, filtre os registros para operações repair em uma determinada instância de VM.

Para filtrar as operações de conserto, faça o seguinte:

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Insira a seguinte consulta no builder do Query usando o ID do projeto e o nome da instância.

    resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$"
    
  3. Clique em Run query. Os Resultados da consulta mostrarão todas as tentativas de recuperação automática na VM com o motivo em protoPayload.status.message.

Como verificar se a recuperação automática foi bem-sucedida para uma VM

Para descobrir se uma tentativa de recuperação automática foi bem-sucedida para uma instância de VM, filtre os registros de operações repair e as alterações de integridade por nome da instância de VM. Se o estado de integridade da instância for alterado para HEALTHY após uma operação de reparo, você verá um registro de alteração de estado de integridade correspondente. Siga estas etapas:

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Insira a seguinte consulta no builder do Query usando o ID do projeto e o nome da instância.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$")
    OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    A primeira parte da consulta exibe as operações de reparo da instância, que indicam que a recriação foi acionada pela recuperação automática do MIG para tornar a instância íntegra novamente. A segunda parte da consulta exibe todas as alterações de estado de integridade da instância da VM.

    Nos Resultados da consulta, o evento de alteração do estado de integridade com detailedHealthState definido como HEALTHY logo após uma operação de reparo mostra que a tentativa de recuperação automática foi bem-sucedida.

Como determinar o valor de atraso inicial de um MIG

Determinar um valor de atraso inicial apropriado para recuperação automática de MIG é mais fácil com a geração de registros de estado de integridade da instância de VM. É possível usar registros para observar o tempo entre o término da operação instances.insert e o momento em que o primeiro sinal íntegro foi recebido para um conjunto de instâncias em um grupo. Esse intervalo de tempo revela quanto tempo as instâncias levam para inicializar. Como algumas VMs podem ser inicializadas mais lentamente do que outras, o Google recomenda adicionar alguma margem ao tempo de inicialização observado (da operação de inserção para o estado íntegro) ao especificar o atraso inicial na política de recuperação automática.

Para medir o tempo entre a operação de inserção da instância e a instância que se torna íntegra, execute uma consulta para operações insert e registros de alterações de integridade por nome da instância de VM. Use os carimbos de data/hora das duas operações para calcular o tempo de inicialização da instância. Siga estas etapas:

  1. Acesse o Explorador de registros no Console do Google Cloud:

    Acessar o Explorador de registros

  2. Insira a seguinte consulta no builder do Query usando o ID do projeto e o nome da instância.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND
    protoPayload.request.@type="type.googleapis.com/compute.instances.insert" AND
    operation.last="true" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$") OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    A primeira parte da consulta mostra a conclusão da operação de inserção de VM. A segunda parte mostra todas as alterações de estado de integridade da VM.

    Nos resultados da consulta, o carimbo de data/hora do evento de alteração do estado de integridade com detailedHealthState definido como HEALTHY logo após a operação de inserção mostra o tempo necessário para que essa VM tenha: inicializar.

  3. Repita as etapas para mais algumas VMs para ter um valor aproximado melhor do parâmetro de atraso inicial.