Monitorizar y planificar un evento de mantenimiento de host


Cada instancia de máquina virtual o instancia de hardware desnudo usa una política de mantenimiento del host para determinar el comportamiento de la instancia durante una operación de mantenimiento. En algunos casos, se ofrece la opción adicional de consultar el calendario de mantenimiento con antelación.

En esta página se explica cómo monitorizar y planificar un evento de mantenimiento del host en instancias de Compute Engine.

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Roles obligatorios

Para obtener los permisos que necesitas para crear instancias y gestionar el mantenimiento de instancias, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para crear instancias y gestionar el mantenimiento de instancias. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para crear instancias y gestionar su mantenimiento, se necesitan los siguientes permisos:

  • Para obtener información sobre una instancia, incluidos los metadatos, sigue estos pasos: compute.instances.get

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Limitaciones

Solo puedes ver las notificaciones de los próximos eventos de mantenimiento de una instancia si esta usa un tipo de máquina de una de las siguientes familias de máquinas:

  • Familias de máquinas optimizadas para aceleradores:

  • Familias de máquinas de uso general:

  • Familias de máquinas con memoria optimizada:

  • Familias de máquinas con almacenamiento optimizado:

Información general sobre las notificaciones de mantenimiento

Google envía notificaciones sobre el mantenimiento programado de los hosts de varias formas. Cuando se abra la ventana de mantenimiento, Google Cloud realizará automáticamente el mantenimiento de tu instancia. Si monitorizas las próximas ventanas de mantenimiento de tu instancia, podrás preparar de forma proactiva tus cargas de trabajo para afrontar el mantenimiento con las mínimas interrupciones posibles.

Las instancias de Compute que admiten notificaciones de eventos de mantenimiento tienen las siguientes características:

  • Menos eventos de mantenimiento: en general, las instancias con intervalos de mantenimiento recurrentes deberían experimentar menos eventos de mantenimiento.
  • Notificación de mantenimiento con más antelación: recibe notificaciones de los eventos de mantenimiento con suficiente antelación para poder planificarlos.
  • Monitorización y planificación: usa Cloud Logging para hacer un seguimiento de tu programación de mantenimiento. Usa incidentes y alertas para estar al tanto.
  • Control del mantenimiento bajo demanda: inicia el mantenimiento durante el periodo de notificación para actualizar tus instancias cuando te venga bien.

La información sobre un evento de notificación próximo se presenta de forma similar a la siguiente:

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"
}

Si no hay ningún evento de mantenimiento programado, verás un mensaje similar al siguiente:

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

Definiciones de los estados de mantenimiento

En las siguientes definiciones de estado se explican las respuestas a las consultas sobre el mantenimiento del host de una instancia. Proporcionan información relacionada con el evento de mantenimiento. Google Cloud CLI, REST y el servidor de metadatos usan estas mismas respuestas:

  • canReschedule indica si el mantenimiento se puede iniciar manualmente durante el periodo de notificación de esta instancia.
    • TRUE: el mantenimiento activado por el cliente se puede realizar durante el periodo de notificación.
    • FALSE: no se puede realizar el mantenimiento activado por el cliente en esta instancia. Esto suele ocurrir durante el periodo en el que la instancia está en mantenimiento o si el tipo de instancia no admite el mantenimiento bajo demanda.
  • latestWindowStartTime la hora más tardía a la que se puede mover la ventana de mantenimiento.
  • machineType el tipo de máquina de la instancia; por ejemplo, x4-megamem-960-metal o c4-highmem-192.
  • maintenanceStatus: el estado actual del evento de mantenimiento.
    • ONGOING: la operación de mantenimiento está en curso.
    • PENDING: la operación de mantenimiento está programada, pero aún no se ha iniciado.
  • type: el tipo de mantenimiento que se va a realizar.
    • NONE: no hay ningún mantenimiento programado para esta instancia.
    • SCHEDULED: En el caso del mantenimiento disruptivo, Compute Engine avisa con un mínimo de 7 días de antelación para la mayoría de las instancias. Las instancias X4 reciben un aviso con aproximadamente 60 días de antelación.
    • UNSCHEDULED: Como el mantenimiento representa actualizaciones críticas, Compute Engine intenta avisar con la mayor antelación posible, pero suele ser mucho menos que en el caso de los eventos de mantenimiento programados.
  • windowEndTime: el final del periodo durante el cual se realiza el mantenimiento.
  • windowStartTime: inicio del periodo durante el cual se realiza el mantenimiento.

Comportamientos del estado de mantenimiento

Al gestionar eventos de mantenimiento, compruebe los valores de canReschedule y maintenanceStatus. Cuando se combinan, estos campos indican qué acciones puedes o no puedes llevar a cabo en relación con la reprogramación de un evento de mantenimiento:

  • canReschedule=True y maintenanceStatus=Pending: puedes iniciar manualmente el evento de mantenimiento de la instancia antes de la hora de inicio programada.
  • canReschedule=False y maintenanceStatus=Ongoing: el mantenimiento está en curso y no se puede reprogramar.
  • canReschedule=False y maintenanceStatus=Pending: tu instancia no admite eventos de mantenimiento activados manualmente.

Ver notificaciones de mantenimiento

Para ver las notificaciones de mantenimiento, puedes consultar tus instancias de computación, el servidor de metadatos o Cloud Logging.

Comprobar si hay notificaciones de eventos de mantenimiento en las instancias

Usa la CLI de Google Cloud, REST o consulta el servidor de metadatos para ver si hay un evento de mantenimiento del host programado para tu instancia.

gcloud

Para ver la ventana de mantenimiento programada de una instancia, usa el comando gcloud compute instances describe.

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

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia de proceso.
  • ZONE_NAME: la zona en la que reside la instancia.

Si hay un evento de mantenimiento programado, la respuesta contiene una sección similar a la siguiente:

  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'

En esta respuesta:

  • El mantenimiento se ha programado para la fecha y la hora que se muestran en windowStartTime.
  • canReschedule se ha establecido en true y maintenanceStatus en PENDING. Estos ajustes indican que puedes iniciar manualmente el evento de mantenimiento programado antes de la fecha que se muestra en latestWindowStartTime.

REST

Para comprobar si hay un mantenimiento programado para una instancia, crea una solicitud GET con el método instances.get:

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

Haz los cambios siguientes:

  • PROJECT_NAME: el nombre del proyecto que contiene la instancia de proceso.
  • ZONE: la zona en la que se encuentra la instancia.
  • INSTANCE_NAME: el nombre de la instancia.

Si hay un evento de mantenimiento programado, la respuesta contiene una sección similar a la siguiente:

  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"
  }

En esta respuesta:

  • El mantenimiento se ha programado para la fecha y la hora que se muestran en windowStartTime.
  • canReschedule se ha establecido en True y maintenanceStatus en PENDING. Estos ajustes indican que puedes iniciar manualmente el evento de mantenimiento programado antes de la fecha que se muestra en latestWindowStartTime.

Servidor de metadatos

Desde el SO invitado, consulta el servidor de metadatos para ver el próximo evento de mantenimiento.

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

Consultar Cloud Logging para ver si hay una notificación de evento de mantenimiento

Compute Engine crea eventos del sistema en los registros de auditoría de Cloud de una instancia para los eventos de mantenimiento. Puedes ver estos eventos antes, durante y después de un evento de mantenimiento mediante Cloud Logging y el Explorador de registros.

Consola

Para consultar los registros de auditoría de las notificaciones de mantenimiento de una instancia, sigue estos pasos:

  1. Ve a la página Instancias de VM.

    Ir a instancias de VM

  2. Haga clic en el Nombre de la instancia de la que quiera ver las notificaciones de mantenimiento.

    Se abrirá la página Detalles de la instancia.

  3. En la sección Registros, haga clic en el enlace Registro.

    Se abrirá la página Editor de consultas de Explorador de registros. En el panel Consulta, el resource.type y el ID de instancia ya se han rellenado para tu instancia.

  4. En el panel Consulta, añade la siguiente línea a la consulta:

    operation.producer="compute.instances.upcomingMaintenance" OR
    "compute.instances.terminateOnHostMaintenance" OR
    "compute.instances.migrateOnHostMaintenance"
    
  5. Haz clic en Realizar una consulta. Los eventos de notificación de mantenimiento coincidentes aparecen en el panel de resultados de la consulta.

    En el panel de resultados de la consulta, puedes hacer clic en Editar hora para ampliar el periodo de búsqueda o para acotar los resultados a fechas u horas concretas.

  6. Haga clic en una entrada de registro para ver los detalles de la notificación de mantenimiento.

    1. Para ver las notificaciones de mantenimiento programado, despliega el encabezado metadata para ver información como el estado actual, el tipo y las horas de inicio y finalización de la ventana de mantenimiento programado.
    2. Despliega el encabezado status para ver el mensaje descriptivo de la notificación.

Ejemplos de notificaciones de mantenimiento

Una notificación de evento de mantenimiento de una instancia aparece en el Explorador de registros con valores similares a los siguientes:

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

Cuando se inicia el evento de mantenimiento, aparece un nuevo evento informativo en los registros con valores similares a los siguientes:

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

Durante el evento de mantenimiento, en función de la configuración de la política de mantenimiento del host de la instancia, se registra uno de los siguientes eventos del sistema en los registros de auditoría:

  • En el caso de las instancias configuradas para usar la migración en vivo durante los eventos de mantenimiento, se registra un evento del sistema con methodName: "compute.instances.migrateOnHostMaintenance".
  • En el caso de las instancias configuradas para finalizar durante los eventos de mantenimiento, se envía un evento del sistema con methodName: "compute.instances.terminateOnHostMaintenance".

Cuando finalice el evento de mantenimiento, aparecerá un nuevo evento informativo en los registros de auditoría con valores similares a los siguientes:

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

Configurar alertas para notificaciones de mantenimiento de hosts

Puedes configurar una política de alertas basada en registros para buscar eventos de notificación de mantenimiento específicos y enviar alertas mediante un canal de notificación.

Consola

Para crear una alerta de un evento de mantenimiento de tu instancia, sigue estos pasos:

  1. Ve a la página Instancias de VM.

    Ir a instancias de VM

  2. Haga clic en el Nombre de la instancia para la que quiera crear una alerta de evento de mantenimiento.

    Se abrirá la página Detalles de la instancia.

  3. En la sección Registros, haga clic en el enlace Registro.

    Se abrirá la página Editor de consultas de Explorador de registros. En el panel Consulta, el resource.type y el ID de instancia ya se han rellenado para tu instancia.

  4. En el panel Consulta, añade la siguiente línea a la consulta:

    operation.producer="compute.instances.upcomingMaintenance"
    

    Para filtrar los eventos de mantenimiento del host de un tipo de máquina en lugar de una instancia específica, edita la consulta de la siguiente manera:

    1. Elimina la línea que especifica el ID de instancia.
    2. Añade la siguiente línea a la consulta:

      protoPayload.metadata.machineType:"MACHINE_TYPE"

      Sustituye MACHINE_TYPE por el tipo de máquina para el que quieras filtrar los eventos de mantenimiento del host.

  5. Haz clic en Realizar una consulta. Los eventos de notificación de mantenimiento coincidentes aparecen en el panel de resultados de la consulta.

  6. En el panel de resultados de la consulta, haz clic en Editar hora.

    1. En la parte izquierda de la ventana de edición, en el campo Tiempo relativo, introduce 1d para ver las entradas de registro de la semana anterior.
    2. Haz clic en Aplicar.
  7. En el encabezado del panel Resultados de la consulta, haz clic en  Crear alerta. Si la ventana de visualización es estrecha, es posible que la opción Crear alerta aparezca en el menú Acciones.

  8. En el panel Crear política de alertas basada en registros, en la sección Detalles de la alerta, haz lo siguiente:

    1. Introduce un nombre para la política de alertas (por ejemplo, Upcoming maintenance for my-c3d-vm@us-central1-b).
    2. En el menú Nivel de gravedad de la política, selecciona Sin gravedad.

    3. En el campo Documentación, puede introducir una descripción de su política de alertas. También puedes incluir información que pueda ayudar al destinatario de una notificación a diagnosticar el problema. La siguiente cadena resume el motivo de la notificación:

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

      Para obtener información sobre cómo dar formato y personalizar el contenido de este campo, consulta Usar Markdown y variables en plantillas de documentación.

    4. Para ir al siguiente paso, haz clic en Siguiente.

  9. En la sección Elige los registros que quieres incluir en la alerta, consulta la consulta y los resultados haciendo clic en Vista previa de los registros.

    La consulta que has creado en el panel Consulta también se muestra en este panel. Te recomendamos que primero crees la consulta en el panel Consulta del Explorador de registros.

    Si es necesario, puede editar la consulta en este panel. Si edita la consulta, compruebe los resultados haciendo clic en Vista previa de los registros.

  10. Haz clic en Siguiente.

  11. En el panel Definir la frecuencia de las notificaciones y la duración del cierre automático, haz lo siguiente:

    1. Selecciona el tiempo mínimo entre notificaciones. Este valor te permite controlar el número de notificaciones que recibes de la monitorización si se cumple esta condición varias veces. En este ejemplo, selecciona 1 day (1 día) entre las opciones.

    2. En Duración de cierre automático de incidencias, usa el valor máximo de 7 días.

    3. Haz clic en Siguiente.

  12. Si ya has configurado un canal de notificaciones por correo electrónico, puedes seleccionarlo en la lista. Si no es así, haz clic en Gestionar canales de notificaciones y añade un canal de correo electrónico. Para obtener información sobre cómo crear canales de notificación, consulta el artículo Crear y gestionar canales de notificación.

  13. Haz clic en Guardar.

    Tu política de alertas basada en registros ya está lista para probarse, tal como se describe en la sección Probar la política de alertas basada en registros de ejemplo.

Para obtener más información, consulta Configurar alertas basadas en registros y Crear y gestionar canales de notificación.

Siguientes pasos