予約間でホストイベントを管理する

このドキュメントでは、予約済みの容量ブロックで使用可能なホスト メンテナンス機能を使用する方法について説明します。このドキュメントでは、H4D インスタンスのクラスタでスケジュールされたメンテナンスをモニタリング、計画、実行する方法について説明します。仮想マシン(VM)インスタンスのメンテナンスを管理する場合は、ホスト メンテナンス イベントのモニタリングと計画をご覧ください。

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. Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    2. Set a default region and zone.

    REST

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

      Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

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

必要なロール

予約全体でホスト メンテナンス イベントを管理するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • プロジェクトに対する Compute 管理者roles/compute.admin
  • システム イベントの監査ログに対する読み取り専用権限: プロジェクトに対するログ閲覧者 roles/logging.viewer

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、予約全体でホスト メンテナンス イベントを管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

予約間でホスト メンテナンス イベントを管理するには、次の権限が必要です。

  • 予約のホスト メンテナンスを開始する: プロジェクトに対する compute.reservations.performMaintenance
  • 予約ブロックのホスト メンテナンスを開始する: プロジェクトに対する compute.reservationBlocks.performMaintenance

    • 予約のリストを表示するには

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

    概要

    予約済みの容量ブロックのメンテナンスを最適化する手順は次のとおりです。

    1. 通知アラートを設定します。ログベースのアラートを作成して、予約または予約ブロックのスケジュール設定、開始、完了したメンテナンス イベントに関する通知を受け取ります。このアプローチにより、アクティビティを事前に計画し、予期しないダウンタイムを回避できます。

    2. 容量ブロック全体でメンテナンスを管理します。予約または予約ブロック全体でメンテナンスを表示し、必要に応じて手動で開始します。このプロセスは、ホストエラーに対するワークロードの復元力を高め、ダウンタイムを防止し、アプリケーションの可用性を維持するのに役立ちます。

    H4D マシンタイプの頻度とメンテナンスの動作の詳細については、H4D インスタンスのメンテナンス エクスペリエンスをご覧ください。

    予約の通知アラートを設定する

    予約または予約ブロックのスケジュール設定、開始、完了したメンテナンス イベントに関する通知を受け取るには、ログベースのアラート ポリシーを作成します。

    予約または予約ブロックのメンテナンス イベントのアラートを作成する手順は次のとおりです。作成するアラートごとにこの手順を繰り返します。

    1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

      [ログ エクスプローラ] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

    2. [クエリを表示] 切り替えボタンをクリックしてオンにします。

    3. [クエリ] ペインで、次のいずれかのクエリを作成します。これらのクエリは、ログエントリをフィルタして特定のメンテナンス イベントを特定します。作成するクエリごとに、この手順を繰り返します。

      • 予約のメンテナンス アラートを受け取る:

        • メンテナンスのスケジュールが設定されたときにアラートを受け取るには:

          protoPayload.methodName="compute.reservations.upcomingGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "scheduled"
          
        • メンテナンスの完了時にアラートを受け取るには:

          protoPayload.methodName="compute.reservations.completedGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "completed"
          
      • 予約ブロックのメンテナンス アラートを受信する:

        • メンテナンスのスケジュールが設定されたときにアラートを受け取るには:

          protoPayload.methodName="compute.reservations.block.upcomingGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "scheduled"
          
        • メンテナンスの開始時にアラートを受け取るには:

          protoPayload.methodName="compute.reservations.block.startGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "started"
          
        • メンテナンスの完了時にアラートを受け取るには:

          protoPayload.methodName="compute.reservations.block.completedGroupMaintenance" severity>=DEFAULT
          protoPayload.status.message =~ "completed"
          
    4. クエリを検証するには、[クエリを実行] をクリックします。クエリが有効な場合、[クエリ結果] ペインにクエリに一致するログエントリが表示されます。

    5. [クエリ] 結果ツールバーで、[アクション] リストをクリックし、 [ログアラートの作成] を選択します。[ログベースのアラート ポリシーを作成] ペインが表示されます。

    6. [アラートの詳細] セクションで、次の操作を行います。

      1. [アラート ポリシー名] フィールドに、ポリシーの名前を入力します。

      2. [ポリシーの重大度] リストで、[警告](またはそれ以上の重大度)を選択します。

      3. [次へ] をクリックします。

    7. [アラートに含めるログを選択] セクションで、[次へ] をクリックします。

    8. [通知頻度と自動クローズ期間の設定] セクションで、次の項目を指定します。

      1. [通知の間隔] リストで、通知を受け取る頻度を選択します。

      2. [インシデントの自動クローズ期間] リストで、Cloud Logging が通知の送信を停止してインシデントを自動的にクローズするまでの期間を選択します。

      3. [次へ] をクリックします。

    9. [通知を受信するユーザー] セクションで、Logging が通知を送信する通知チャネルを指定します。

    10. [保存] をクリックします。

    予約全体のメンテナンスを管理する

    予約と予約ブロックのメンテナンスは、次のように表示して制御できます。

    • 予約または予約ブロックの今後のメンテナンスの状態とスケジュールされた時間を確認するには、メンテナンスの状態を表示します。

    • スケジュールされたメンテナンスの日時を待たずに、予約または予約ブロックのメンテナンスを手動で開始するには、メンテナンスを手動で開始します。

    • ホストエラーまたはホストの障害レポート後に VM のホストで緊急の計画外メンテナンスが必要になった場合に、通知を受け取るタイミングを管理するには、ハードウェア緊急メンテナンス通知を管理します。

    メンテナンス状態を表示する

    予約または予約ブロックの今後のメンテナンスの状態を確認するには、予約メタデータの upcomingGroupMaintenance フィールドの値を確認します。予約に upcomingGroupMaintenance フィールドがない場合、予約または予約ブロックのメンテナンスはスケジュールされません。upcomingGroupMaintenance のフィールドの詳細については、メンテナンス ステータスの定義をご覧ください。

    また、予約ブロックのメンテナンスがスケジュールされている場合、upcomingGroupMaintenance フィールドには maintenanceReasons フィールドが含まれます。このフィールドには、次の表に示すように、予約ブロックのメンテナンスがスケジュールされた理由が記述されます。

    メンテナンスの種類 メンテナンスの理由 VM の状態
    定期メンテナンスの計画メンテナンス
    • PLANNED_UPDATE: 計画的なインフラストラクチャのメンテナンス
    • PLANNED_NETWORK_UPDATE: 計画的なネットワーク メンテナンス
    実行中、停止中、一時停止中の VM に適用されます。
    計画外の緊急メンテナンス
    • FAILURE_DISK: VM にアタッチされたディスクのエラーによりスケジュールされた計画外のメンテナンス。
    • FAILURE_INFRA: インフラストラクチャのエラーによりスケジュールされた計画外のメンテナンス。
    • FAILURE_INTERFACE: NIC のエラーにより、計画外のメンテナンスがスケジュールされています。
    • FAILURE_MEMORY: VM のメモリのエラーにより、予定外のメンテナンスがスケジュールされています。
    • FAILURE_NETWORK: ネットワーク エラーが原因でスケジュールされた計画外のメンテナンス。
    実行中の VM にのみ適用されます。

    予約ブロックまたはサブブロックの maintenanceReasons フィールドを表示するには、gcloud CLI または REST API を使用する必要があります。または、次のオプションのいずれかを選択します。

    コンソール

    1. Google Cloud コンソールで、[予約] ページに移動します。

      [予約] に移動

    2. [メンテナンス ステータス] 列に、予約のメンテナンス状態が表示されます。[オンデマンド予約] テーブルにこの列が表示されていない場合は、 [列表示オプション] をクリックし、[メンテナンス ステータス] チェックボックスをオンにして、[OK] をクリックします。

    3. 予約ブロックのメンテナンス状態を表示する手順は次のとおりです。

      1. [名前] 列で、予約の名前をクリックします。予約の詳細を示すページが表示されます。

      2. [ブロック] テーブルの [メンテナンス] 列に、予約内のブロックのメンテナンス状態が表示されます。

    gcloud

    1. 予約のメンテナンス状態を表示するには、--flatten フラグを resourceStatus.reservationMaintenance に設定して gcloud compute reservations describe コマンドを使用します。

      gcloud compute reservations describe RESERVATION_NAME \
          --flatten=resourceStatus.reservationMaintenance \
          --zone=ZONE
      

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

      • RESERVATION_NAME: 予約の名前。

      • ZONE: 予約が存在するゾーン。

      出力は次のいずれかのようになります。

      • 予約にメンテナンスがスケジュールされている場合、出力は次のようになります。

        ---
        maintenanceOngoingCount: 0
        maintenancePendingCount: 6
        schedulingType: GROUPED
        upcomingGroupMaintenance:
          canReschedule: true
          maintenanceStatus: PENDING
          type: UNSCHEDULED
          windowEndTime: '2025-11-13T14:00:00.000-08:00'
          windowStartTime: '2025-11-13T12:00:00.000-08:00'
        

        schedulingType フィールドが INDEPENDENT に設定されている場合、upcomingGroupMaintenance フィールドに windowStartTime フィールドと windowEndTime フィールドは含まれません。

      • 予約のメンテナンスがスケジュールされていない場合、出力は次のようになります。

        ---
        schedulingType: GROUPED
        
    2. 予約にメンテナンスがスケジュールされている場合は、予約内のブロックのメンテナンス状態を表示するために、gcloud compute reservations blocks list コマンドを使用します。

      gcloud compute reservations blocks list RESERVATION_NAME \
          --zone=ZONE
      

      予約ブロックでメンテナンスがスケジュールされているか進行中の場合、出力は次のようになります。

      ---
      ...
      name: example-fr-h4d-dense-1-block-0001
      ...
      reservationBlockMaintenance:
        maintenanceOngoingCount: 0
        maintenancePendingCount: 6
        schedulingType: GROUPED
        upcomingGroupMaintenance:
          canReschedule: true
          maintenanceReasons:
          - PLANNED_UPDATE
          - PLANNED_NETWORK_UPDATE
          maintenanceStatus: PENDING
          type: UNSCHEDULED
          windowEndTime: '2025-11-13T14:00:00.000-08:00'
          windowStartTime: '2025-11-13T12:00:00.000-08:00'
      ...
      ---
      ...
      name: example-fr-h4d-dense-1-block-0002
      ...
      schedulingType: GROUPED
      ...
      

    REST

    1. 予約のメンテナンス状態を表示するには、次のいずれかのメソッドに GET リクエストを送信します。

      リクエスト URL に次のクエリ パラメータを含めます。

      • 予約の名前、予約済みマシンタイプ、メンテナンス ステータスのみを表示するには、items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance に設定された fields クエリ パラメータを含めます。

      • 特定のマシンタイプを指定する予約でフィルタリングするには、URL エンコードされた値を使用して filter クエリ パラメータを specificReservation.instanceProperties.machineType:MACHINE_TYPE に設定します。

      たとえば、すべてのゾーンの予約を表示するには、次のように GET リクエストを送信します。

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/reservations?fields=items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance&filter=specificReservation.instanceProperties.machineType%3AMACHINE_TYPE
      

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

      • PROJECT_ID: 予約が存在するプロジェクトの ID。

      • MACHINE_TYPE: 予約のフィルタリングに使用する予約済みマシンタイプ。

      予約のメンテナンスがスケジュールされているか進行中の場合、出力は次のようになります。

      {
        "items": [
          {
            "specificReservation": {
              "instanceProperties": {
                "machineType": "MACHINE_TYPE"
              }
            },
            "name": "example-reservation",
            "resourceStatus": {
              "reservationMaintenance": {
                maintenanceOngoingCount: 0,
                maintenancePendingCount: 6,
                "schedulingType": "GROUPED",
                "upcomingGroupMaintenance": {
                  "type": "SCHEDULED",
                  "canReschedule": true,
                  "windowStartTime": "2025-11-13T12:00:00.000-08:00",
                  "windowEndTime": "2025-11-13T14:00:00.000-08:00",
                  "maintenanceStatus": "PENDING"
                }
              }
            }
          },
          ...
        ]
      }
      

      必要に応じて、VM のリストをさらに絞り込むには、filter クエリ パラメータを別のフィルタ式に設定します。

    2. 予約のメンテナンスがスケジュールされている場合、予約内のブロックのメンテナンス状態を表示するには、reservationBlocks.list メソッドGET リクエストを送信します。リクエスト URL に、items.name,items.reservationMaintenance に設定された fields クエリ パラメータを含めます。

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks?fields=items.name,items.reservationMaintenance
      

      RESERVATION_NAME は、予約の名前に置き換えます。

      予約ブロックでメンテナンスがスケジュールされているか、進行中の場合、出力は次のようになります。

      {
        "items": [
          {
            "name": "example-fr-h4d-dense-1-block-0001",
            "reservationBlockMaintenance": {
              "maintenanceOngoingCount": 0,
              "maintenancePendingCount": 6,
              "schedulingType": "GROUPED",
              "upcomingGroupMaintenance": {
                "type": "SCHEDULED",
                "canReschedule": true,
                "windowStartTime": "2025-11-13T12:00:00.000-08:00",
                "windowEndTime": "2025-11-13T14:00:00.000-08:00",
                "maintenanceStatus": "PENDING",
                "maintenanceReasons": [
                  "PLANNED_UPDATE",
                  "PLANNED_NETWORK_UPDATE"
                ]
              }
            }
          },
          ...
        ]
      }
      

      ブロックの schedulingType フィールドが INDEPENDENT に設定されている場合、upcomingGroupMaintenance フィールドには windowStartTime フィールドと windowEndTime フィールドは含まれません。

    メンテナンスを手動で開始する

    スケジュールされた時間まで待たずに、予約または予約ブロックのメンテナンスを手動で開始できます。このアクションにより、ワークロードの中断をより積極的に制御できます。

    予約または予約ブロックのメンテナンス状態に応じて、次のようになります。

    メンテナンス状態 説明 表示される内容
    スケジュール設定済み Compute Engine で、予約の定期メンテナンスがスケジュールされています。スケジュールされた時間より前に、メンテナンスを手動で開始できます。
    • Google Cloud コンソールでは、メンテナンス状態が [実行準備完了 - DATE で実行されます] と表示されます。
    • gcloud CLI または REST API では、Compute Engine は maintenanceStatus フィールドを PENDING に設定します。
    処理中 メンテナンスが進行中です。スケジュールを変更することはできません。
    • Google Cloud コンソールでは、メンテナンス状態が [実行中] と表示されます。
    • gcloud CLI または REST API では、Compute Engine は maintenanceStatus フィールドを ONGOING に設定します。
    完了 メンテナンスが完了しました。Compute Engine は、VM からすべてのメンテナンス通知を削除しました。
    • Google Cloud コンソールでは、メンテナンス状態が と表示されます。
    • gcloud CLI または REST API には、maintenanceStatus フィールドはありません。

    予約ブロック内の特定のホストでメンテナンスを手動で開始するには、gcloud CLI または REST API を使用します。それ以外の場合は、次のいずれかのオプションを選択します。

    コンソール

    1. Google Cloud コンソールで、[予約] ページに移動します。

      [予約] に移動

    2. [名前] 列で、予約の名前をクリックします。予約の詳細を示すページが表示されます。

    3. [メンテナンスを実行] をクリックし、次のいずれかのオプションを選択します。

      • すべてのブロックでメンテナンスを開始するには、[すべての容量] を選択します。

      • 実行中の VM を含むブロックでのみメンテナンスを開始するには、[使用中の容量] を選択します。

      • 未使用のブロックと、停止または一時停止された VM を含むブロックでのみメンテナンスを開始するには、[未使用の容量] を選択します。

    4. [OK] をクリックして確定します。

    gcloud

    • 予約のメンテナンスを開始するには、gcloud compute reservations perform-maintenance コマンドを使用します。

      gcloud compute reservations perform-maintenance RESERVATION_NAME \
          --scope=RESERVATION_MAINTENANCE_SCOPE \
          --zone=ZONE
      
    • 予約ブロックのメンテナンスを開始するには、gcloud compute reservations blocks perform-maintenance コマンドを使用します。

      gcloud compute reservations blocks perform-maintenance RESERVATION_NAME \
          --block-name=BLOCK_NAME \
          --scope=BLOCK_MAINTENANCE_SCOPE \
          --zone=ZONE
      

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

    • RESERVATION_NAME: 予約の名前。

    • RESERVATION_MAINTENANCE_SCOPE: 予約のメンテナンス スコープ。次のいずれかの値を指定します。

      • すべてのブロックでメンテナンスを開始するには: all

      • 実行中の VM があるブロックでのみメンテナンスを開始するには: running

      • 未使用のブロックと、停止または一時停止された VM を含むブロックでのみメンテナンスを開始するには: unused

    • BLOCK_NAME: 予約内に存在するブロックの名前。

    • BLOCK_MAINTENANCE_SCOPE: 予約ブロックのメンテナンス スコープ。次のいずれかの値を指定します。

      • すべてのホストでメンテナンスを開始するには: all

      • 実行中の VM があるホストでのみメンテナンスを開始するには: running

      • 未使用のホストと、停止または一時停止された VM を含むホストでのみメンテナンスを開始するには: unused

    • ZONE: 予約が存在するゾーン。

    REST

    • 予約のメンテナンスを開始するには、reservations.performMaintenance メソッドPOST リクエストを送信します。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/performMaintenance
      
      {
        "maintenanceScope": "RESERVATION_MAINTENANCE_SCOPE"
      }
      
    • 予約ブロックのメンテナンスを開始するには、reservationBlocks.performMaintenance メソッドPOST リクエストを送信します。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/performMaintenance
      
      {
        "maintenanceScope": "BLOCK_MAINTENANCE_SCOPE"
      }
      

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

    • PROJECT_ID: Compute Engine が予約を自動的に作成したプロジェクトの ID。

    • ZONE: 予約が存在するゾーン。

    • RESERVATION_NAME: 予約の名前。

    • RESERVATION_MAINTENANCE_SCOPE: 予約のメンテナンス スコープ。次のいずれかの値を指定します。

      • すべてのブロックでメンテナンスを開始するには: ALL

      • 実行中の VM があるブロックでのみメンテナンスを開始するには: RUNNING

      • 未使用のブロックと、停止または一時停止された VM を含むブロックでのみメンテナンスを開始するには: UNUSED

    • BLOCK_NAME: 予約内に存在するブロックの名前。

    • SUB_BLOCK_NAME: 予約ブロック内に存在するサブブロックの名前。

    • BLOCK_MAINTENANCE_SCOPE: 予約ブロックのメンテナンス スコープ。次のいずれかの値を指定します。

      • すべてのホストでメンテナンスを開始するには: ALL

      • 実行中の VM があるホストでのみメンテナンスを開始するには: RUNNING

      • 未使用のホストと、停止または一時停止された VM を含むホストでのみメンテナンスを開始するには: UNUSED

    ハードウェアの緊急メンテナンス通知を管理する

    VM でホストエラーが発生した場合、またはホストに障害があると報告した場合、VM のホストで緊急の計画外メンテナンスが必要になります。デフォルトでは、Compute Engine はこのタイプのメンテナンスをスケジュールするときに、数時間前に通知します。予約済みホストの場合は、緊急メンテナンス通知を有効にして、この通知期間を 7 日以上に延長できます。このアプローチにより、ワークロードの中断をより積極的に制御できます。

    予約のハードウェア緊急メンテナンス通知を有効または無効にするには、次のいずれかのオプションを選択します。

    gcloud

    • 予約のハードウェア緊急メンテナンス通知を有効にするには、--enable-emergent-maintenance フラグを指定して gcloud compute reservations update コマンドを使用します。

      gcloud compute reservations update RESERVATION_NAME \
          --enable-emergent-maintenance \
          --zone=ZONE
      
    • 予約のハードウェア緊急メンテナンス通知を無効にするには、--no-enable-emergent-maintenance フラグを指定して gcloud compute reservations update コマンドを使用します。

      gcloud compute reservations update RESERVATION_NAME \
          --no-enable-emergent-maintenance \
          --zone=ZONE
      

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

    • RESERVATION_NAME: 予約の名前。

    • ZONE: 予約が存在するゾーン。

    REST

    予約のハードウェア緊急メンテナンス通知を有効または無効にするには、reservations.update メソッドPATCH リクエストを送信します。リクエスト URL に、enableEmergentMaintenance に設定された paths クエリ パラメータを含めます。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=enableEmergentMaintenance
    
    {
      "name": "RESERVATION_NAME",
      "enableEmergentMaintenance": EMERGENCY_MAINTENANCE_NOTIFICATIONS
    }
    

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

    • PROJECT_ID: 予約が存在するプロジェクトの ID。

    • ZONE: 予約が存在するゾーン。

    • RESERVATION_NAME: 予約の名前。

    • EMERGENCY_MAINTENANCE_NOTIFICATIONS: 次のいずれかの値を指定します。

      • 通知を有効にするには: true

      • 通知を無効にするには: false

    次のステップ