Monitore alterações no estado de integridade da VM


Este documento descreve como visualizar e ler entradas de log de alterações do estado de integridade de uma VM em um grupo gerenciado de instâncias (MIG) e fornece casos de uso específicos para ajudar você a monitorar as VMs no grupo.

Se você configurou a verificação de integridade baseada em aplicativo para MIG, o Compute Engine grava uma entrada de registro sempre que o estado de integridade de uma instância gerenciada muda, por exemplo, quando a instância passa do estado HEALTHY para UNHEALTHY . Essas entradas de log 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

  • Revise Configurando a verificação de integridade e a recuperação automática .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Preços

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

Para evitar os custos de registo, pode desativar os registos de alterações do estado de funcionamento.

Visualizando logs de alterações do estado de integridade

Desde que os registros de alteração do estado de integridade permaneçam ativados , o Compute Engine grava uma entrada nos registros da plataforma sempre que o estado de integridade de uma instância gerenciada muda. Você pode visualizar esses logs de um projeto, de um MIG específico ou de uma instância gerenciada específica.

Visualizando logs de um projeto ou MIG

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

Console

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Defina os seguintes parâmetros de consulta:

    • Recurso : Gerenciador de grupos de instâncias do GCE
    • Nome do log - instance_group_manager_events
  3. Como alternativa, você pode copiar a consulta a seguir no construtor de consultas .

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

    Você pode restringir sua pesquisa a um grupo de instâncias gerenciadas específico usando a consulta a seguir.

    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 Executar consulta . Os resultados da consulta exibirão os logs.

gcloud

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

Para visualizar todos os logs de alterações do estado de integridade do seu 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 visualizar todos os logs 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 o seguinte:

  • PROJECT_ID : o ID do seu projeto .
  • MIG_NAME : o MIG para o qual você deseja visualizar os logs de alterações do estado de integridade.

DESCANSAR

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

Para visualizar todos os logs de alterações do estado de integridade do seu 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 visualizar os logs de alterações do 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 o seguinte:

  • OAUTH2_TOKEN : token de acesso da sua aplicação. Para testes locais, você pode usar o comando gcloud auth print-access-token para gerar um token.
  • PROJECT_ID : o ID do seu projeto .
  • MIG_NAME : o MIG para o qual você deseja visualizar os logs de alterações do estado de integridade.

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

Dependendo se você deseja arquivar os registros, usá-los para análise, transmiti-los para outros aplicativos ou acionar uma função do Cloud, é possível exportá-los para destinos como Cloud Storage, BigQuery ou Pub/Sub. Para obter mais informações sobre a exportação de logs, consulte Visão geral das exportações de logs .

Visualizando logs de alterações do estado de integridade de uma VM específica

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

Console

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Copie a consulta a seguir no construtor de consultas .

    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 Executar consulta .

gcloud

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

Para visualizar os logs de alterações 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 o seguinte:

  • PROJECT_ID : o ID do seu projeto .
  • INSTANCE_NAME : a instância gerenciada para a qual você deseja visualizar os logs de alterações do estado de integridade.

DESCANSAR

Para visualizar os logs de alterações 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 o seguinte:

  • OAUTH2_TOKEN : token de acesso da sua aplicação. Para testes locais, você pode usar o comando gcloud auth print-access-token para gerar um token.
  • PROJECT_ID : o ID do seu projeto .
  • INSTANCE_NAME : a instância gerenciada para a qual você deseja visualizar os logs de alterações do estado de integridade.

Formato das entradas de log

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

Os logs são gravados em logs de plataforma com o nome de log instance_group_manager_events . Os logs da plataforma ajudam você a depurar e solucionar problemas.

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

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

  • Informações gerais mostradas na maioria dos logs, 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 do estado de integridade da instância.

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

Campo Descrição
instance URL da instância, com base no ID do projeto 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 testado pela verificação de integridade.
network URL do recurso de rede para esta instância, com base no ID do projeto de string e no nome da rede.
networkWithId URL do recurso de rede para esta instância, com base no ID numérico do projeto e no ID da rede.
healthCheck URL da verificação de integridade configurada para o grupo gerenciado de instâncias.
previousDetailedHealthState Estado de saúde anterior da instância. Para a lista de estados possíveis, consulte estados de saúde .
detailedHealthState Estado de saúde atual da instância. Para a lista de estados possíveis, consulte estados de saúde .
notificationTime Carimbo de data e hora de quando ocorreu a alteração do estado de saúde.

Os campos de log do tipo boolean normalmente só aparecem se tiverem um valor true . Se um campo booleano tiver um valor false , esse campo será omitido do log.

A codificação UTF-8 é aplicada aos campos de log. Caracteres que não são caracteres UTF-8 são substituídos por pontos de interrogação.

Exemplo de entrada de log

O exemplo a seguir mostra a mudança do 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

Você pode usar os logs de alterações do estado de integridade nos seguintes cenários de monitoramento ou depuração:

  • Descubra com que frequência uma determinada instância de VM alterou os estados de integridade ao longo do tempo.
  • Avalie com que frequência um MIG sofreu alterações no estado de saúde de suas instâncias.
  • Identifique instâncias de VM problemáticas que frequentemente ficam 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 a recuperação automática.

Monitorando alterações no estado de integridade de uma VM

Você pode monitorar a frequência com que o estado de integridade de uma instância de VM muda criando uma métrica que rastreia as alterações no estado de integridade dessa VM específica.

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

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Insira a seguinte consulta no construtor de consultas , 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 Criar métrica .

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

    1. Defina o tipo de métrica como Counter .
    2. Insira um nome de métrica de log , por exemplo health-mig-xyzq .

      A seção Criar filtro exibe a consulta de log do Logs Explorer . Você também pode configurar o filtro da métrica para considerar apenas estados perturbadores, como UNHEALTHY e TIMEOUT , adicionando severity>=WARNING ao filtro.

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

    4. Insira um nome de rótulo , por exemplo health_state .

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

    6. Configure o nome do campo como jsonPayload.instanceHealthStateChange.detailedHealthState . Isso permitirá distinguir entre diferentes alterações no estado de saúde.

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

    8. Clique em Criar métrica .

  5. Acesse a página Métricas baseadas 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 abre e exibe o gráfico que representa as alterações do estado de integridade da instância de VM que você especificou na consulta.

Monitorando mudanças no estado de integridade de todas as VMs em um MIG

Você pode monitorar as alterações do estado de integridade de todas as instâncias gerenciadas criando uma métrica que rastreia as alterações do estado de integridade das instâncias gerenciadas.

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

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Insira a consulta a seguir no construtor de consultas 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 Criar métrica .

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

    1. Defina o tipo de métrica como Counter .
    2. Insira um nome de métrica de log , por exemplo health-mig-xyzq .
    3. Em Rótulos , clique em Adicionar rótulo .
    4. Insira um nome de rótulo , por exemplo health_state .
    5. Defina o tipo de rótulo como STRING .
    6. Configure o nome do campo como jsonPayload.instanceHealthStateChange.detailedHealthState . Isso permitirá distinguir entre diferentes alterações no estado de saúde.
    7. Clique em Concluído para adicionar o rótulo.
    8. Clique em Criar métrica .
  5. Acesse a página Métricas baseadas 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 abre 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 que você especificou na consulta.

Identificando VMs que frequentemente não apresentam integridade

Você pode identificar VMs problemáticas que frequentemente ficam UNHEALTHY criando uma métrica que rastreia as mudanças no estado de integridade de todas as instâncias de VM em seu MIG e agrupando a métrica por instâncias.

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

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Insira a consulta a seguir no construtor de consultas 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 Criar métrica .

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

    1. Defina o tipo de métrica como Counter .
    2. Insira um nome de métrica de log , por exemplo health-mig-xyzq .
    3. Em Rótulos , clique em Adicionar rótulo .
    4. Insira um nome de rótulo , por exemplo health_state .
    5. Defina o tipo de rótulo como STRING .
    6. Configure o nome do campo como jsonPayload.instanceHealthStateChange.detailedHealthState . Isso permitirá distinguir entre diferentes alterações no estado de saúde.
    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 baseadas 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 abre 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 que você especificou na consulta.

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

As instâncias com o maior número de alterações no estado de saúde no total são as que mais frequentemente ficam insalubres.

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

Você pode descobrir o que causou uma tentativa de recuperação automática filtrando logs para operações repair para determinada instância de VM.

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

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Insira a seguinte consulta no construtor de consultas , 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 Executar consulta . Os resultados da consulta mostrarão todas as tentativas de recuperação automática na VM com o motivo da recuperação automática em protoPayload.status.message .

Verificando se a recuperação automática foi bem-sucedida em uma VM

Você pode descobrir se uma tentativa de recuperação automática foi bem-sucedida para uma instância de VM filtrando logs de operações repair e alterações de integridade por nome de 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 log de alterações do estado de integridade correspondente. Siga as etapas:

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Insira a seguinte consulta no construtor de consultas , 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 do estado de integridade da instância de 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.

Determinando o valor do atraso inicial de um MIG

Determinar um valor de atraso inicial apropriado para a recuperação automática do MIG é mais fácil com o registro do estado de integridade da instância de VM. Você pode usar logs para observar o tempo entre o término da operação instances.insert e o recebimento do primeiro sinal íntegro para um conjunto de instâncias em um grupo. Esse intervalo de tempo revela quanto tempo as instâncias levam para inicializar completamente. Como algumas VMs podem inicializar mais lentamente do que outras, o Google recomenda adicionar alguma margem ao tempo de inicialização observado (da operação de inserção ao 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 se tornar íntegra, execute uma consulta para operações insert e logs de alterações de integridade por nome da instância de VM. Use carimbos de data/hora de ambas as operações para calcular o tempo de inicialização da instância. Siga as etapas:

  1. Acesse o Logs Explorer no console do Google Cloud.

    Acesse o Explorador de registros

  2. Insira a seguinte consulta no construtor de consultas , 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 da VM. A segunda parte mostra todas as alterações do estado de saúde 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 revela o tempo necessário para a inicialização desta VM.

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