Monitorize e planeie um evento de manutenção do anfitrião


Cada instância de máquina virtual (VM) ou instância bare metal usa uma política de manutenção do anfitrião para determinar o comportamento da instância durante uma operação de manutenção. Algumas instâncias oferecem a opção adicional de ver o horário de manutenção com antecedência.

Esta página explica como monitorizar e planear um evento de manutenção do anfitrião em instâncias do Compute Engine.

Antes de começar

  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

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

    Console

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

    gcloud

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

      gcloud init

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

    2. Set a default region and zone.

    REST

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

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

      gcloud init

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

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

Funções necessárias

Para receber as autorizações de que precisa para criar instâncias e gerir a respetiva manutenção, peça ao seu administrador que lhe conceda as seguintes funções do IAM no projeto:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para criar instâncias e gerir a manutenção de instâncias. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para criar instâncias e gerir a respetiva manutenção:

  • Para obter informações sobre uma instância, incluindo metadados: compute.instances.get

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Limitações

Só pode ver notificações para o evento de manutenção pendente de uma instância se a instância usar um tipo de máquina de uma das seguintes famílias de máquinas:

  • Famílias de máquinas otimizadas pelo acelerador:

  • Famílias de máquinas de utilização geral:

  • Famílias de máquinas otimizadas para memória:

  • Famílias de máquinas otimizadas para armazenamento:

Vista geral das notificações de manutenção

A Google envia notificações sobre a manutenção do anfitrião futura através de vários métodos. Quando a janela de manutenção é aberta, Google Cloud a manutenção é realizada automaticamente na sua instância. Ao monitorizar os próximos períodos de manutenção da sua instância, pode preparar proativamente as suas cargas de trabalho para processar a manutenção futura com a mínima interrupção.

As instâncias de computação que suportam notificações de eventos de manutenção têm as seguintes características:

  • Menos eventos de manutenção: em geral, as instâncias com intervalos de manutenção recorrentes devem ter menos eventos de manutenção.
  • Notificação de manutenção mais longa: receba notificações de eventos de manutenção com bastante antecedência para fins de planeamento.
  • Monitorização e planeamento: use o Cloud Logging para acompanhar a sua agenda de manutenção. Use incidentes e alertas para se manter a par de tudo.
  • Controlo de manutenção a pedido: inicie a manutenção durante o período de notificação para atualizar as suas instâncias quando for mais conveniente para si.

As informações sobre um evento de notificação futuro são apresentadas de forma semelhante à seguinte:

upcomingMaintenance:{
    "canReschedule":True
    "latestWindowStartTime": "2024-12-01T19:00:01Z"
    "machineType":"x4-megamem-960-metal"
    "maintenanceStatus":"PENDING"
    "type":"SCHEDULED"
    "windowEndTime": "2024-12-01T22:00:00Z"
    "windowStartTime": "2024-12-01T19:00:00Z"
}

Se não existir nenhum evento de manutenção futuro, é apresentada uma mensagem semelhante à seguinte:

{ "error": "no notifications have been received yet, try again later" }

Definições do estado de manutenção

As definições de estado seguintes explicam as respostas a consultas sobre a manutenção do anfitrião para uma instância. Fornecem informações relacionadas com o evento de manutenção. A CLI do Google Cloud, o REST e o servidor de metadados usam estas mesmas respostas:

  • canReschedule: indica se a manutenção pode ser iniciada manualmente durante o período de notificação desta instância.
    • TRUE: a manutenção acionada pelo cliente pode ser realizada durante o período de notificação.
    • FALSE: não é possível realizar a manutenção acionada pelo cliente nesta instância. Isto ocorre frequentemente durante o período em que a instância está em manutenção ou se o tipo de instância não suportar a manutenção a pedido.
  • latestWindowStartTime: a hora mais recente para a qual o período de manutenção pode ser movido.
  • machineType: o tipo de máquina da instância, por exemplo, x4-megamem-960-metal ou c4-highmem-192.
  • maintenanceStatus: o estado atual do evento de manutenção.
    • ONGOING: a operação de manutenção está em curso.
    • PENDING: a operação de manutenção está agendada, mas ainda não começou.
  • type: o tipo de manutenção a realizar.
    • NONE: não está agendada nenhuma manutenção para esta instância.
    • SCHEDULED: Para a manutenção disruptiva, o Compute Engine envia um aviso com, pelo menos, 7 dias de antecedência para a maioria das instâncias; as instâncias X4 recebem um aviso com cerca de 60 dias de antecedência.
    • UNSCHEDULED: Uma vez que a manutenção representa atualizações críticas, o Compute Engine tenta fornecer o máximo de aviso prévio possível, mas geralmente é muito inferior ao dos eventos de manutenção agendados.
  • windowEndTime: o fim do período durante o qual a manutenção ocorre.
  • windowStartTime: o início do período em que a manutenção ocorre.

Comportamentos do estado de manutenção

Ao gerir eventos de manutenção, verifique os valores de canReschedule e maintenanceStatus. Quando combinados, estes campos indicam que ações pode ou não realizar relativamente ao reagendamento de um evento de manutenção:

  • canReschedule=True e maintenanceStatus=Pending: pode iniciar manualmente o evento de manutenção para a instância antes da hora de início agendada.
  • canReschedule=False e maintenanceStatus=Ongoing: a manutenção está em curso e não pode ser reagendada.
  • canReschedule=False e maintenanceStatus=Pending: a sua instância não suporta eventos de manutenção acionados manualmente.

Veja notificações de manutenção

Pode encontrar notificações de manutenção consultando as suas instâncias de computação, o servidor de metadados ou através do Cloud Logging.

Verifique se existem notificações de eventos de manutenção nas instâncias

Use a CLI do Google Cloud, o REST ou consulte o servidor de metadados para ver se existe um evento de manutenção do anfitrião futuro para a sua instância.

gcloud

Para ver a próxima janela de manutenção de uma instância, use o comando gcloud compute instances describe.

gcloud compute instances describe INSTANCE_NAME \
   --zone=ZONE_NAME --format="yaml(resourceStatus.upcomingMaintenance)"

Substitua o seguinte:

  • INSTANCE_NAME: o nome da instância do Compute.
  • ZONE_NAME: a zona onde a instância reside.

Se houver um evento de manutenção futuro, a resposta contém uma secção semelhante à seguinte:

  resourceStatus:
    upcomingMaintenance:
      canReschedule: true
      latestWindowStartTime: '2025-01-15T12:00:01Z'
      machineType: x4-megamem-960-metal
      maintenanceStatus: PENDING
      type: SCHEDULED
      windowEndTime: '2025-01-15T16:00:00Z'
      windowStartTime: '2025-01-15T12:00:00Z'

Nesta resposta:

  • A manutenção está agendada para a data e a hora apresentadas em windowStartTime.
  • canReschedule está definido como true e maintenanceStatus está definido como PENDING. Estas definições indicam que pode iniciar manualmente o evento de manutenção agendado antes da data apresentada em latestWindowStartTime.

REST

Para ver se existe manutenção futura para uma instância, crie um pedido usando o GETmétodo instances.get:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/INSTANCE_NAME

Substitua o seguinte:

  • PROJECT_NAME: o nome do projeto que contém a instância de computação.
  • ZONE: a zona onde a instância está localizada.
  • INSTANCE_NAME: o nome da instância.

Se houver um evento de manutenção futuro, a resposta contém uma secção semelhante à seguinte:

  upcomingMaintenance:{
    "canReschedule":True
    "latestWindowStartTime": "2023-12-01T19:00:01Z"
    "machineType": "x4-megamem-960-metal"
    "maintenanceStatus":"PENDING"
    "type":"SCHEDULED"
    "windowEndTime": "2023-12-01T22:00:00Z"
    "windowStartTime": "2023-12-01T19:00:00Z"
  }

Nesta resposta:

  • A manutenção está agendada para a data e a hora apresentadas em windowStartTime.
  • canReschedule está definido como True e maintenanceStatus está definido como PENDING. Estas definições indicam que pode iniciar manualmente o evento de manutenção agendado antes da data apresentada em latestWindowStartTime.

Servidor de metadados

A partir do SO convidado, consulte o servidor de metadados para ver o próximo evento de manutenção.

$ curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"

Verifique o Cloud Logging para ver uma notificação de evento de manutenção

O Compute Engine cria eventos do sistema nos registos de auditoria na nuvem de uma instância para eventos de manutenção. Pode ver estes eventos antes, durante e após um evento de manutenção através do Cloud Logging e do Explorador de registos.

Consola

Para consultar os registos de auditoria de notificações de manutenção de uma instância, conclua os seguintes passos:

  1. Aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no Nome da instância para a qual quer ver as notificações de manutenção.

    É apresentada a página Detalhes da instância.

  3. Na secção Registos, clique no link com a etiqueta Registo.

    É apresentada a página do editor de consultas do Explorador de registos. No painel Consulta, o resource.type e o ID da instância já estão preenchidos para a sua instância.

  4. No painel Consulta, adicione a seguinte linha à consulta:

    operation.producer="compute.instances.upcomingMaintenance" OR
    "compute.instances.terminateOnHostMaintenance" OR
    "compute.instances.migrateOnHostMaintenance"
    
  5. Clique em Executar consulta. Os eventos de notificação de manutenção correspondentes aparecem no painel de resultados da consulta.

    No painel de resultados da consulta, pode clicar em Editar hora para expandir o intervalo de tempo da pesquisa ou restringir os resultados a datas ou horas específicas.

  6. Clique numa entrada do registo para ver os detalhes da notificação de manutenção.

    1. Para ver as notificações de manutenção futuras, expanda o cabeçalho metadata para ver informações como o estado atual, o tipo e as horas de início e fim da manutenção agendada.
    2. Expanda o cabeçalho status para ver a mensagem descritiva da notificação.

Exemplos de notificações de manutenção

Uma notificação de evento de manutenção para uma instância aparece no Explorador de registos com valores semelhantes aos seguintes:

  • methodName: "compute.instances.upcomingMaintenance"
  • metadata:
    • maintenanceStatus: "PENDING"
    • machineType: "x4-megamem-960-metal"
    • windowStartTime: "2024-07-23T20:00:00Z"

Quando o evento de manutenção começa, é apresentado um novo evento informativo nos registos com valores semelhantes aos seguintes:

  • methodName: "compute.instances.upcomingMaintenance"
  • metadata:
    • maintenanceStatus: "ONGOING"
    • machineType: "x4-megamem-960-metal"
    • windowStartTime: "2024-07-23T20:00:00Z"

Durante o evento de manutenção, consoante a configuração da política de manutenção do anfitrião para a instância, é registado um dos seguintes eventos do sistema nos registos de auditoria:

  • Para instâncias configuradas para usar a migração em direto durante eventos de manutenção, é gerado um evento do sistema com methodName: "compute.instances.migrateOnHostMaintenance".
  • Para instâncias configuradas para terminar durante eventos de manutenção, um evento do sistema com methodName: "compute.instances.terminateOnHostMaintenance".

Quando o evento de manutenção termina, é apresentado um novo evento informativo nos registos de auditoria com valores semelhantes aos seguintes:

  • methodName: "compute.instances.upcomingMaintenance"
  • status: { message: "Maintenance window has completed for this instance. All maintenance notifications on the instance have been removed." }

Configure alertas para notificações de manutenção do anfitrião

Pode configurar uma política de alertas baseada em registos para pesquisar eventos de notificação de manutenção específicos e enviar alertas através de um canal de notificação.

Consola

Para criar um alerta para um evento de manutenção da sua instância, conclua os seguintes passos:

  1. Aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no Nome da instância para a qual quer criar um alerta de evento de manutenção.

    É apresentada a página Detalhes da instância.

  3. Na secção Registos, clique no link com a etiqueta Registo.

    É apresentada a página do editor de consultas do Explorador de registos. No painel Consulta, o resource.type e o ID da instância já estão preenchidos para a sua instância.

  4. No painel Consulta, adicione a seguinte linha à consulta:

    operation.producer="compute.instances.upcomingMaintenance"
    

    Para filtrar eventos de manutenção do anfitrião para um tipo de máquina em vez de uma instância específica, edite a consulta da seguinte forma:

    1. Remova a linha que especifica o ID da instância.
    2. Adicione a seguinte linha à consulta:

      protoPayload.metadata.machineType:"MACHINE_TYPE"

      Substitua MACHINE_TYPE pelo tipo de máquina para o qual quer filtrar os eventos de manutenção do anfitrião.

  5. Clique em Executar consulta. Os eventos de notificação de manutenção correspondentes aparecem no painel de resultados da consulta.

  6. No painel de resultados da consulta, clique em Editar hora.

    1. No lado esquerdo da janela de edição, no campo Hora relativa, introduza 1d para ver as entradas do registo da semana anterior.
    2. Clique em Aplicar.
  7. No cabeçalho do painel Resultados da consulta, clique em  Criar alerta. Se a janela de visualização for estreita, a opção Criar alerta pode aparecer no menu Ações.

  8. No painel Criar política de alerta baseada em registos, na secção Detalhes do alerta, faça o seguinte:

    1. Introduza um nome para a política de alerta, por exemplo, Upcoming maintenance for my-c3d-vm@us-central1-b.
    2. No menu Nível de gravidade da política, selecione Sem gravidade.

    3. No campo Documentação, pode introduzir uma descrição para a sua política de alertas. Também pode incluir informações que possam ajudar o destinatário de uma notificação a diagnosticar o problema. A seguinte string resume o motivo da notificação:

      Log-based alerting policy in project ${project} to monitor upcoming
      maintenance notifications. See also "Host maintenance alerts" and
      "onHostMaintenance actions" alerting policies.
      

      Para obter informações sobre como pode formatar e personalizar o conteúdo deste campo, consulte o artigo Usar Markdown e variáveis em modelos de documentação.

    4. Para avançar para o passo seguinte, clique em Seguinte.

  9. Na secção Escolha os registos a incluir no alerta, verifique a consulta e os resultados clicando em Pré-visualizar registos.

    A consulta criada no painel Consulta também é apresentada neste painel. Recomendamos que crie a consulta primeiro no painel Consulta do Explorador de registos.

    Se necessário, pode editar a consulta neste painel. Se editar a consulta, clique em Pré-visualizar registos para verificar os resultados.

  10. Clicar em Seguinte.

  11. No painel Definir frequência de notificações e duração do fecho automático, faça o seguinte:

    1. Selecione o tempo mínimo entre notificações. Este valor permite-lhe controlar o número de notificações que recebe da monitorização se esta condição for cumprida várias vezes. Para este exemplo, selecione 1 dia nas opções.

    2. Para a Duração do encerramento automático de incidentes, use o valor máximo de 7 dias.

    3. Clicar em Seguinte.

  12. Se já tiver um canal de notificação por email configurado, pode selecioná-lo na lista. Caso contrário, clique em Gerir canais de notificação e adicione um canal de email. Para informações sobre como criar canais de notificação, consulte o artigo Crie e faça a gestão de canais de notificação.

  13. Clique em Guardar.

    A sua política de alertas baseados em registos está agora pronta para ser testada, conforme descrito em Teste a política de alertas baseados em registos de exemplo

Para saber mais, leia os artigos Configure alertas baseados em registos e Crie e faça a gestão de canais de notificação.

O que se segue?