Surveiller et planifier un événement de maintenance de l'hôte


Chaque instance de machine virtuelle (VM) ou instance bare metal utilise une stratégie de maintenance de l'hôte pour déterminer le comportement de l'instance lors d'une opération de maintenance. Certaines instances offrent la possibilité supplémentaire d'afficher le calendrier de maintenance à l'avance.

Cette page explique comment surveiller et planifier un événement de maintenance de l'hôte sur les instances Compute Engine.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:

    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. Install the Google Cloud CLI, then initialize it by running the following command:

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

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Rôles requis

Pour obtenir les autorisations nécessaires pour créer des instances et gérer leur maintenance, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet:

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour créer des instances et gérer leur maintenance. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour créer des instances et gérer leur maintenance:

  • Pour obtenir des informations sur une instance, y compris les métadonnées : compute.instances.get

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Limites

Vous ne pouvez afficher les notifications pour l'événement de maintenance à venir d'une instance que si celle-ci utilise un type de machine appartenant à l'une des familles de machines suivantes:

  • Famille de machines optimisées pour les accélérateurs:

  • Famille de machines à usage général:

  • Famille de machines à mémoire optimisée:

  • Famille de machines optimisées pour le stockage:

Présentation des notifications de maintenance

Google envoie des notifications pour les opérations de maintenance à venir sur les hôtes via plusieurs méthodes. Lorsque l'intervalle de maintenance s'ouvre, Google Cloud effectue automatiquement la maintenance de votre instance. En surveillant les intervalles de maintenance à venir de votre instance, vous pouvez préparer vos charges de travail de manière proactive pour gérer les opérations de maintenance à venir avec un minimum d'interruption.

Les instances de calcul compatibles avec les notifications d'événements de maintenance présentent les caractéristiques suivantes:

  • Moins d'événements de maintenance: en général, les instances avec des intervalles de maintenance récurrents devraient rencontrer moins d'événements de maintenance.
  • Notification de maintenance plus longue: recevez des notifications bien à l'avance pour les événements de maintenance afin de pouvoir vous organiser.
  • Surveillance et planification: utilisez Cloud Logging pour suivre votre calendrier de maintenance. Restez informé grâce aux incidents et aux alertes.
  • Contrôle de maintenance à la demande: démarrez la maintenance pendant la période de notification pour mettre à jour vos instances selon votre planning.

Les informations sur un événement de notification à venir sont présentées de manière similaire à la suivante:

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

Si aucun événement de maintenance à venir n'est prévu, un message semblable à celui-ci s'affiche:

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

Définitions des états de maintenance

Les définitions d'état suivantes permettent de comprendre les réponses fournies aux requêtes sur la maintenance de l'hôte pour une instance. Elles fournissent des informations sur l'événement de maintenance. La Google Cloud CLI, REST et le serveur de métadonnées utilisent ces mêmes réponses:

  • canReschedule: indique si la maintenance peut être démarrée manuellement pendant la période de notification pour cette instance.
    • TRUE: la maintenance déclenchée par le client peut être effectuée pendant la période de notification.
    • FALSE: la maintenance déclenchée par le client ne peut pas être effectuée sur cette instance. Cela se produit souvent pendant la période de maintenance de l'instance ou si le type d'instance n'est pas compatible avec la maintenance à la demande.
  • latestWindowStartTime: heure la plus tardive vers laquelle l'intervalle de maintenance peut être déplacé.
  • maintenanceStatus: état actuel de l'événement de maintenance.
    • ONGOING: l'opération de maintenance est en cours.
    • PENDING: l'opération de maintenance est planifiée, mais n'a pas encore commencé.
  • type: type de maintenance à effectuer.
    • NONE: aucune maintenance n'est planifiée pour cette instance.
    • SCHEDULED: Pour les maintenances perturbantes, Compute Engine fournit un préavis d'au moins sept jours pour la plupart des instances. Les instances X4 bénéficient d'un préavis d'environ 60 jours.
    • UNSCHEDULED: étant donné que la maintenance représente des mises à jour critiques, Compute Engine essaie de fournir un préavis aussi long que possible, mais il est généralement beaucoup plus court que pour les événements de maintenance planifiés.
  • windowEndTime: fin de la période au cours de laquelle la maintenance est effectuée.
  • windowStartTime: début de la période au cours de laquelle la maintenance est effectuée.

Comportements des états de maintenance

Lorsque vous gérez des événements de maintenance, vérifiez les valeurs de canReschedule et maintenanceStatus. Combinés, ces champs indiquent les actions que vous pouvez ou ne pouvez pas effectuer pour reprogrammer un événement de maintenance:

  • canReschedule=True et maintenanceStatus=Pending : vous pouvez démarrer manuellement l'événement de maintenance de l'instance avant l'heure de début prévue.
  • canReschedule=False et maintenanceStatus=Ongoing : la maintenance est en cours et ne peut pas être reprogrammée.
  • canReschedule=False et maintenanceStatus=Pending : votre instance n'est pas compatible avec les événements de maintenance déclenchés manuellement.

Afficher les notifications de maintenance

Vous pouvez trouver des notifications de maintenance en interrogeant vos instances de calcul, le serveur de métadonnées ou en utilisant Cloud Logging.

Vérifier les instances pour une notification d'événement de maintenance

Utilisez Google Cloud CLI, REST ou interrogez le serveur de métadonnées pour voir s'il y a un événement de maintenance de l'hôte à venir pour votre instance.

gcloud

Pour afficher la période de maintenance à venir pour une instance, utilisez la commande gcloud compute instances describe.

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

Remplacez les éléments suivants :

  • INSTANCE_NAME: nom de l'instance de calcul.
  • ZONE_NAME: zone dans laquelle se trouve l'instance.

Si un événement de maintenance est à venir, la réponse contient une section semblable à celle-ci:

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

Dans cette réponse:

  • La maintenance est planifiée pour la date et l'heure indiquées dans windowStartTime.
  • canReschedule est défini sur True et maintenanceStatus sur PENDING. Ces paramètres indiquent que vous pouvez démarrer manuellement l'événement de maintenance planifié avant la date indiquée dans latestWindowStartTime.

REST

Pour savoir si une instance doit subir une opération de maintenance, envoyez une requête GET à l'aide de la méthode instances.get:

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

Remplacez les éléments suivants :

  • PROJECT_NAME: nom du projet contenant l'instance de calcul.
  • ZONE : zone où se trouve l'instance.
  • INSTANCE_NAME : nom de l'instance

Si un événement de maintenance est à venir, la réponse contient une section semblable à celle-ci:

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

Dans cette réponse:

  • La maintenance est planifiée pour la date et l'heure indiquées dans windowStartTime.
  • canReschedule est défini sur True et maintenanceStatus sur PENDING. Ces paramètres indiquent que vous pouvez démarrer manuellement l'événement de maintenance planifié avant la date indiquée dans latestWindowStartTime.

Serveur de métadonnées

À partir du système d'exploitation invité, interrogez le serveur de métadonnées pour afficher le prochain événement de maintenance.

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

Rechercher une notification d'événement de maintenance dans Cloud Logging

Compute Engine crée des événements système dans les journaux d'audit Cloud pour une instance pour les événements de maintenance. Vous pouvez consulter ces événements avant, pendant et après un événement de maintenance à l'aide de Cloud Logging et de l'explorateur de journaux.

Console

Pour interroger les journaux d'audit afin de trouver les notifications de maintenance d'une instance, procédez comme suit:

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de l'instance pour laquelle vous souhaitez afficher les notifications de maintenance.

    La page Détails de l'instance s'affiche.

  3. Dans la section Journaux, cliquez sur le lien Journalisation.

    La page Éditeur de requêtes de l'explorateur de journaux s'ouvre. Dans le volet Requête, les valeurs resource.type et l'ID d'instance sont déjà renseignées pour votre instance.

  4. Dans le volet Requête, ajoutez la ligne suivante à la requête:

    operation.producer="compute.instances.upcomingMaintenance" OR
    "compute.instances.terminateOnHostMaintenance" OR
    "compute.instances.migrateOnHostMaintenance"
    
  5. Cliquez sur Exécuter la requête. Les événements de notification de maintenance correspondants s'affichent dans le volet "Résultats de la requête".

    Dans le volet des résultats de la requête, vous pouvez cliquer sur Modifier l'heure pour élargir la période de recherche ou pour affiner les résultats en fonction de dates ou d'heures spécifiques.

  6. Cliquez sur une entrée de journal pour afficher les détails de la notification de maintenance.

    1. Pour les notifications de maintenance à venir, développez l'en-tête metadata pour afficher des informations telles que l'état actuel, le type, ainsi que les heures de début et de fin de la période de maintenance planifiée.
    2. Développez l'en-tête status pour afficher le message descriptif de la notification.

Exemples de notifications de maintenance

Une notification d'événement de maintenance pour une instance s'affiche dans l'explorateur de journaux avec des valeurs semblables à celles-ci:

  • methodName : "compute.instances.upcomingMaintenance"
  • metadata :
    • maintenanceStatus : "PENDING"
    • windowStartTime : "2024-07-23T20:00:00Z"

Lorsque l'événement de maintenance commence, un nouvel événement d'information s'affiche dans les journaux avec des valeurs semblables aux suivantes:

  • methodName : "compute.instances.upcomingMaintenance"
  • metadata :
    • maintenanceStatus : "ONGOING"
    • windowStartTime : "2024-07-23T20:00:00Z"

Lors de l'événement de maintenance, en fonction de la configuration de la règle de maintenance de l'hôte pour l'instance, l'un des événements système suivants est consigné dans les journaux d'audit:

  • Pour les instances configurées pour utiliser la migration à chaud lors des événements de maintenance, un événement système avec methodName: "compute.instances.migrateOnHostMaintenance".
  • Pour les instances configurées pour s'arrêter lors des événements de maintenance, un événement système avec methodName: "compute.instances.terminateOnHostMaintenance".

Une fois l'événement de maintenance terminé, un nouvel événement d'information s'affiche dans les journaux d'audit avec des valeurs semblables aux suivantes:

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

Configurer des alertes pour les notifications de maintenance de l'hôte

Vous pouvez configurer une règle d'alerte basée sur les journaux pour rechercher des événements de notification de maintenance spécifiques et envoyer des alertes à l'aide d'un canal de notification.

Console

Pour créer une alerte pour un événement de maintenance pour votre instance, procédez comme suit:

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de l'instance pour laquelle vous souhaitez créer une alerte d'événement de maintenance.

    La page Détails de l'instance s'affiche.

  3. Dans la section Journaux, cliquez sur le lien Journalisation.

    La page Éditeur de requêtes de l'explorateur de journaux s'ouvre. Dans le volet Requête, les valeurs resource.type et l'ID d'instance sont déjà renseignées pour votre instance.

  4. Dans le volet Requête, ajoutez la ligne suivante à la requête:

    operation.producer="compute.instances.upcomingMaintenance"
    
  5. Cliquez sur Exécuter la requête. Les événements de notification de maintenance correspondants s'affichent dans le volet "Résultats de la requête".

  6. Dans le volet des résultats de la requête, cliquez sur Modifier l'heure.

    1. Sur la gauche de la fenêtre de modification, dans le champ Heure relative, saisissez 1d pour afficher les entrées de journal de la semaine précédente.
    2. Cliquez sur Appliquer.
  7. Dans l'en-tête du volet Résultats de la requête, cliquez sur  Créer une alerte. Si votre fenêtre de visionnage est étroite, l'option Créer une alerte peut s'afficher dans le menu Actions.

  8. Dans le volet Créer une règle d'alerte basée sur les journaux, dans la section Détails de l'alerte, procédez comme suit:

    1. Saisissez un nom pour la règle d'alerte, par exemple Upcoming maintenance for my-c3d-vm@us-central1-b.
    2. Dans le menu Niveau de gravité de la règle, sélectionnez Aucune gravité.

    3. Dans le champ Documentation, vous pouvez saisir une description de votre règle d'alerte. Vous pouvez également inclure des informations susceptibles d'aider le destinataire d'une notification à diagnostiquer le problème. La chaîne suivante résume le motif de la notification:

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

      Pour obtenir des informations sur la mise en forme et la personnalisation du contenu de ce champ, consultez la section Utiliser Markdown et les variables dans les modèles de documentation.

    4. Pour passer à l'étape suivante, cliquez sur Suivant.

  9. Dans la section Sélectionner les journaux à inclure dans l'alerte, vérifiez la requête et les résultats en cliquant sur Prévisualiser les journaux.

    La requête que vous avez créée dans le volet Requête s'affiche également dans ce volet. Nous vous recommandons de créer d'abord la requête dans le volet Requête de l'explorateur de journaux.

    Si nécessaire, vous pouvez modifier la requête dans ce volet. Si vous modifiez la requête, vérifiez les résultats en cliquant sur Prévisualiser les journaux.

  10. Cliquez sur Suivant.

  11. Dans le volet Définir la fréquence des notifications et le délai pour la fermeture automatique, procédez comme suit:

    1. Sélectionnez le délai minimal entre les notifications. Cette valeur vous permet de contrôler le nombre de notifications que vous recevez de la surveillance si cette condition est remplie plusieurs fois. Pour cet exemple, sélectionnez 1 jour parmi les options.

    2. Pour la durée de fermeture automatique de l'incident, utilisez la valeur maximale de sept jours.

    3. Cliquez sur Suivant.

  12. Si vous avez déjà configuré un canal de notification par e-mail, vous pouvez le sélectionner dans la liste. Si ce n'est pas le cas, cliquez sur Gérer les canaux de notification et ajoutez un canal de notification par e-mail. Pour plus d'informations sur la création de canaux de notification, consultez la page Créer et gérer des canaux de notification.

  13. Cliquez sur Enregistrer.

    Votre règle d'alerte basée sur les journaux est maintenant prête à être testée, comme décrit dans la section Tester l'exemple de règle d'alerte basée sur les journaux.

Pour en savoir plus, consultez les pages Configurer des alertes basées sur les journaux et Créer et gérer des canaux de notification.

Étape suivante