ホスト メンテナンス イベントのモニタリングと計画


すべての仮想マシン(VM)インスタンスのメンテナンスは、VM の作成時に選択したホスト メンテナンス ポリシーによって決定されます。一部の VM には、VM のメンテナンス スケジュールを事前に表示するオプションが用意されています。

このページでは、Compute Engine VM でホスト メンテナンス イベントをモニタリングし、計画する方法について説明します。VM のメンテナンス スケジュールを表示するには、VM が次のいずれかのマシン ファミリーのマシンタイプを実行している必要があります。

  • 汎用 C4 VM
  • 汎用 C3 VM
  • 汎用 C3D VM
  • ストレージ最適化 Z3 VM
  • メモリ最適化 M1、M2、M3 VM

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    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

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

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

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

VM の作成と VM メンテナンスの管理に必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理に関する記事をご覧ください。

この事前定義ロールには、VM の作成と VM メンテナンスの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

VM を作成し、VM メンテナンスを管理するには、次の権限が必要です。

  • VM に関する情報を取得するには: compute.instances.get
  • VM を作成するには: compute.instances.create

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

メンテナンス通知をモニタリングする

Google はいくつかの方法で、今後の VM メンテナンスに関する通知を送信します。通知を見つけるには、VM、メタデータ サーバー、または Cloud Logging にクエリを実行します。定期メンテナンスの時間枠の開始時刻が到来すると、Google Cloud は VM のメンテナンスを自動的に実行します。VM の定期メンテナンスの時間枠をモニタリングすると、中断を最小限に抑えながら、今後のメンテナンスを処理するワークロードをプロアクティブに準備できます。

メンテナンス イベント通知がある VM には次の特性があります。

  • メンテナンス イベントが少ない: 一般に、定期的なメンテナンス間隔がある VM では、表示されるメンテナンス イベントも少なくなります。
  • 長期のメンテナンス通知: 計画を立てられるよう計画されているメンテナンス イベントに関する通知を十分に前もって受け取ります。
  • モニタリングと計画: Cloud Logging を使用してメンテナンス スケジュールを追跡します。インシデントとアラートを使用して最新情報を入手します。
  • オンデマンド メンテナンス管理: 通知期間中にメンテナンスを開始し、スケジュールに合わせて VM を更新します。

VM でメンテナンス イベント通知を確認する

Google Cloud CLI、REST メソッド、またはメタデータ サーバーを使用して、今後の VM メンテナンス イベントがあるかどうかを確認します。

gcloud

VM の今後のメンテナンス時間枠を確認するには、gcloud compute instances describe コマンドを使用します。--zone=[ZONE_NAME] を含める必要があります。

gcloud compute instances describe VM_NAME \
  --zone=ZONE

次のように置き換えます。

  • VM_NAME: VM の名前。
  • ZONE: VM が存在するゾーン。

レスポンスは次のようになります。

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

このレスポンスでは、canRescheduleTrue に、maintenanceStatusPENDING に設定されています。表示された日時にメンテナンスがスケジュールされます。これらの設定は、このイベントを事前に手動でトリガーできることを示します。

REST

VM に今後のメンテナンスがあるかどうかを確認するには、instances.get コマンドを実行します。

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

次のように置き換えます。

  • PROJECT_NAME: プロジェクトの名前。
  • ZONE: VM が存在するゾーン。
  • VM_NAME: VM の名前。

レスポンスは次のようになります。

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

このレスポンスでは、canRescheduleTRUE に、maintenanceStatusPENDING に設定されています。表示された日時にメンテナンスがスケジュールされます。

メタデータ サーバー

ゲスト OS からメタデータ サーバーにクエリを実行して、次のメンテナンス イベントを確認します。

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

Cloud Logging でメンテナンス イベント通知を確認する

Google は、VM のメンテナンスの前に Cloud Logging に通知を送信します。Cloud Logging により、ログ エクスプローラでシステム イベントが生成されます。VM の定期メンテナンスは、Cloud Logging に compute.instances.upcomingMaintenance として表示されます。

VM の構成に応じて、Cloud Logging は次の方法でイベントを表示します。

  • メンテナンスにライブ マイグレーションを使用するように構成されている VM の場合、イベントは compute.instances.migrateOnHostMaintenance というメソッド名で表示されます。
  • メンテナンスで終了と自動再起動を使用するように構成された VM の場合、イベントはメソッド名 compute.instances.terminateOnHostMaintenance で表示されます。

VM がライブ マイグレーションを使用するように構成されている場合、メンテナンスが完了すると、通知がクリアされたことを示す compute.instances.upcomingMaintenance が表示されます。

メンテナンス通知を受け取るようにアラートを設定すると、メリットが得られる場合があります。詳細については、ログベースのアラートを構成する通知チャンネルの作成と管理をご覧ください。

メンテナンス ステータスの定義

次のステータス定義では、VM メンテナンス クエリに対するレスポンスについて説明します。VM のメンテナンスに関する情報を提供します。Google Cloud CLI、REST、メタデータ サーバーは、以下に示す同じレスポンスを使用します。

  • windowStartTime: メンテナンスが行われる時間枠の開始時刻。
  • windowEndTime: メンテナンスが行われる時間枠の終了時刻。
  • latestWindowStartTime: 時間枠の移動先に指定できる最も早い時刻。
  • maintenanceType: 実行するメンテナンスのタイプ。
    • なし: この VM にはメンテナンスはスケジュールされていません。
    • スケジュール済み: メンテナンスの 7 日前に通知が届きます。
    • スケジュールなし: メンテナンスは、通知されることがはるかに少ない重要な更新を表します。
  • canReschedule: この VM の通知期間中にメンテナンスをトリガーできるかどうか。
    • TRUE: お客様がトリガーしたメンテナンスは通知期間中に実行できます。
    • FALSE: この VM では、お客様がトリガーするメンテナンスを実行できません。これは多くの場合、VM のメンテナンス期間中に発生します。
  • maintenanceStatus: 現在のメンテナンス オペレーションのステータス。
    • 進行中: メンテナンス オペレーションが進行中です。
    • 保留: メンテナンス オペレーションはスケジュールされていますが、まだ開始されていません。

メンテナンス ステータスの動作

メンテナンス スケジュールを管理する際に、canReschedule=maintenanceStatus= のステータスを確認します。これらのレスポンスの組み合わせにより、機能の想定される動作についての説明を確認でき、次のいずれかのステータスの組み合わせが表示されます。

  • canReschedule=YesmaintenanceStatus=Pending の場合は、VM でメンテナンスをトリガーできます。
  • canReschedule=NomaintenanceStatus=Ongoing の場合、メンテナンスはすでに進行中です。
  • canReschedule=NomaintenanceStatus=Pending の場合、VM は手動トリガーのメンテナンスをサポートしていません。

次のステップ