監控及規劃主機維護事件


每個虛擬機器 (VM) 執行個體或 Bare Metal 執行個體都會使用主機維護政策,決定執行個體在維護作業期間的行為。部分執行個體提供額外選項,可提前查看維護時間表。

本頁說明如何監控及規劃 Compute Engine 執行個體的主機維護事件

事前準備

  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 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. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

必要的角色

如要取得建立執行個體及管理執行個體維護作業所需的權限,請要求管理員將專案的下列 IAM 角色授予您:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義的角色包含建立執行個體和管理執行個體維護作業所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要建立執行個體及管理執行個體維護作業,必須具備下列權限:

  • 如要取得執行個體的相關資訊 (包括中繼資料): compute.instances.get

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

限制

只有在執行個體使用下列其中一個機器系列的機器類型時,您才能查看執行個體即將進行維護的通知:

  • 加速器最佳化機器系列

  • 一般用途機器家族

  • 記憶體最佳化機器系列

  • 儲存空間最佳化機器系列

維護通知總覽

Google 會透過多種方式傳送主機即將維護的通知。維護期間開始時, Google Cloud 會自動對執行個體執行維護作業。監控執行個體即將進行的維護作業,有助於您主動準備工作負載,以因應即將進行的維護作業,將中斷情形降到最低。

支援維護事件通知的 Compute 執行個體具有下列特徵:

  • 減少維護作業:一般來說,如果執行個體採用週期性維護間隔,維護作業次數應該會減少。
  • 延長維護通知時間:提前收到維護事件通知,方便您規劃。
  • 監控和規劃:使用 Cloud Logging 追蹤維護時間表。透過事件和快訊掌握最新資訊。
  • 隨選維護控制:在通知期間啟動維護作業,以便在符合排程時更新執行個體。

系統會以類似下列方式呈現即將發生的通知事件資訊:

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

如果沒有即將進行的維護作業,您會看到類似下列內容的訊息:

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

維護狀態定義

下列狀態定義說明執行個體主機維護查詢的回應。提供與維護事件相關的資訊。Google Cloud CLI、REST 和中繼資料伺服器會使用相同的回應:

  • canReschedule:是否可在這個執行個體的通知期間手動啟動維護作業。
    • TRUE:客戶觸發的維護作業可在通知期間執行。
    • FALSE:無法對這個執行個體執行客戶觸發的維護作業。 如果執行個體正在進行維護,或是執行個體類型不支援隨選維護,就經常會發生這種情況。
  • latestWindowStartTime:維護期間可延後的最新時間。
  • machineType:執行個體的機器類型,例如 x4-megamem-960-metalc4-highmem-192
  • maintenanceStatus:維護事件的目前狀態。
    • ONGOING:維護作業正在進行中。
    • PENDING:已排定維護作業,但尚未開始。
  • type:要執行的維護作業類型。
    • NONE:這個執行個體未排定維護作業。
    • SCHEDULED:對於中斷性維護作業,Compute Engine 會提前至少 7 天通知大多數執行個體;X4 執行個體則會提前約 60 天收到通知。
    • UNSCHEDULED:由於維護作業代表重大更新,Compute Engine 會盡可能提前通知,但通常遠少於排定的維護事件。
  • windowEndTime:維護作業進行的時間範圍結束時間。
  • windowStartTime:維護作業進行的時間範圍開始時間。

維護狀態行為

管理維護事件時,請檢查 canReschedulemaintenanceStatus 的值。合併使用這些欄位時,可指出您能否重新安排維護事件:

  • canReschedule=TruemaintenanceStatus=Pending:您可以在排定的開始時間前,手動啟動執行個體的維護事件。
  • canReschedule=FalsemaintenanceStatus=Ongoing,目前正在維護中,無法重新安排時間。
  • canReschedule=FalsemaintenanceStatus=Pending,表示執行個體不支援手動觸發的維護事件。

查看維護通知

您可以查詢運算執行個體、中繼資料伺服器或使用 Cloud Logging,找出維護通知。

檢查執行個體是否有維護事件通知

使用 Google Cloud CLI、REST 或查詢中繼資料伺服器,即可查看執行個體是否即將發生主機維護事件。

gcloud

如要查看執行個體即將進行維護的時段,請使用 gcloud compute instances describe 指令

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

更改下列內容:

  • INSTANCE_NAME:運算執行個體的名稱。
  • ZONE_NAME:執行個體所在的區域。

如有即將進行的維護作業,回應會包含類似下列內容的區段:

  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'

這份回覆包含:

  • 維護作業排定於 windowStartTime 顯示的日期和時間執行。
  • canReschedule 設為 true,而 maintenanceStatus 設為 PENDING。這些設定表示您可以在 latestWindowStartTime 顯示的日期前,手動啟動排定的維護事件。

REST

如要查看執行個體是否即將進行維護,請使用 instances.get 方法建構 GET 要求:

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

更改下列內容:

  • PROJECT_NAME:包含運算執行個體的專案名稱。
  • ZONE:執行個體所在的區域。
  • INSTANCE_NAME:執行個體的名稱。

如有即將進行的維護作業,回應會包含類似下列內容的區段:

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

這份回覆包含:

  • 維護作業排定於 windowStartTime 顯示的日期和時間執行。
  • canReschedule 設為 True,而 maintenanceStatus 設為 PENDING。這些設定表示您可以在 latestWindowStartTime 顯示的日期前,手動啟動排定的維護事件。

中繼資料伺服器

從訪客作業系統查詢中繼資料伺服器,查看下一個維護事件。

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

在 Cloud Logging 中查看維護事件通知

Compute Engine 會在Cloud Audit Logs 中,為執行個體建立維護事件的系統事件。您可以使用 Cloud Logging記錄檔探索工具,在維護事件發生前、期間和之後查看這些事件。

主控台

如要查詢執行個體維護通知的稽核記錄,請完成下列步驟:

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 按一下要查看維護通知的執行個體「名稱」

    「執行個體詳細資料」頁面隨即開啟。

  3. 在「記錄」部分中,按一下標示為「記錄」的連結。

    「記錄檔探索工具查詢編輯器」頁面隨即開啟。在「查詢」窗格中,系統會預先填入執行個體的 resource.type 和執行個體 ID。

  4. 在「Query」(查詢) 窗格中,將下列程式碼新增至查詢:

    operation.producer="compute.instances.upcomingMaintenance" OR
    "compute.instances.terminateOnHostMaintenance" OR
    "compute.instances.migrateOnHostMaintenance"
    
  5. 按一下 [Run query] (執行查詢)。查詢結果窗格會顯示相符的維護通知事件。

    在查詢結果窗格中,按一下「編輯時間」即可展開搜尋時間範圍,或將結果縮小至特定日期或時間。

  6. 按一下記錄項目,即可查看維護通知詳細資料。

    1. 如要查看即將進行的維護作業通知,請展開「metadata」標題,瞭解目前狀態、類型,以及排定的維護期間開始和結束時間等資訊。
    2. 展開標題 status 即可查看通知的說明訊息。

維護作業通知範例

執行個體的維護事件通知會顯示在記錄檔探索工具中, 值類似於下列內容:

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

維護事件開始時,記錄檔中會顯示新的資訊事件,值類似於下列內容:

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

在維護事件期間,系統會根據執行個體的主機維護政策設定,將下列其中一個系統事件記錄到稽核記錄中:

  • 如果執行個體已設定在維護作業期間使用即時遷移功能,系統事件會顯示 methodName: "compute.instances.migrateOnHostMaintenance"
  • 如果執行個體設為在維護事件期間終止,系統事件會顯示 methodName: "compute.instances.terminateOnHostMaintenance"

維護事件結束時,稽核記錄中會顯示新的資訊事件,值類似於下列內容:

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

設定主機維護通知的快訊

您可以設定以記錄為依據的快訊政策,搜尋特定維護通知事件,並透過通知管道傳送快訊。

主控台

如要為執行個體的維護事件建立快訊,請完成下列步驟:

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 按一下要建立維護事件快訊的執行個體「名稱」

    「執行個體詳細資料」頁面隨即開啟。

  3. 在「記錄」部分中,按一下標示為「記錄」的連結。

    「記錄檔探索工具查詢編輯器」頁面隨即開啟。在「查詢」窗格中,系統會預先填入執行個體的 resource.type 和執行個體 ID。

  4. 在「Query」(查詢) 窗格中,將下列程式碼新增至查詢:

    operation.producer="compute.instances.upcomingMaintenance"
    

    如要篩選機器類型的主機維護事件,而非特定執行個體,請按照下列方式編輯查詢:

    1. 移除指定執行個體 ID 的行。
    2. 在查詢中新增下列程式碼:

      protoPayload.metadata.machineType:"MACHINE_TYPE"

      MACHINE_TYPE 替換為要篩選主機維護事件的機器類型。

  5. 按一下 [Run query] (執行查詢)。查詢結果窗格會顯示相符的維護通知事件。

  6. 在查詢結果窗格中,按一下「編輯時間」

    1. 在編輯視窗左側的「相對時間」欄位中輸入 1d,即可查看過去一週的記錄項目。
    2. 按一下 [套用]
  7. 在「Query results」(查詢結果) 窗格的標頭中,按一下 「Create alert」(建立快訊)。如果檢視視窗較窄,「建立快訊」選項可能會顯示在「動作」選單中。

  8. 在「建立記錄型快訊政策」窗格的「快訊詳細資料」部分,執行下列操作:

    1. 輸入快訊政策的名稱,例如 Upcoming maintenance for my-c3d-vm@us-central1-b
    2. 從「政策嚴重程度」選單中選取「無嚴重程度」

    3. 您可以在「Documentation」(說明文件) 欄位中輸入快訊政策的說明。您也可以加入相關資訊,協助通知收件者診斷問題。以下字串會摘要說明通知原因:

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

      如要瞭解如何設定這個欄位的內容格式及自訂內容,請參閱「在文件範本中使用 Markdown 和變數」。

    4. 如要前往下一個步驟,請按「Next」(下一步)

  9. 在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 區段中,按一下「Preview logs」(預覽記錄),檢查查詢和結果。

    您在「Query」(查詢) 窗格中建構的查詢也會顯示在此窗格中。建議您先在 Logs Explorer 的「Query」(查詢) 窗格中建立查詢。

    如有需要,您可以在這個窗格中編輯查詢。如要編輯查詢,請按一下「Preview logs」(預覽記錄) 查看結果。

  10. 點選「下一步」

  11. 在「Set notification frequency and autoclose duration」(設定通知頻率和自動關閉期限) 窗格中,執行下列操作:

    1. 選取通知時間間隔下限。這個值可讓您控制如果多次符合條件,會收到幾次監控服務的通知。在本例中,請從選項中選取「1 天」

    2. 「事件自動關閉期限」請使用 7 天這個最大值。

    3. 點選「下一步」

  12. 如果您已設定電子郵件通知管道,可以從清單中選取該管道。如果沒有,請按一下「管理通知管道」,然後新增電子郵件管道。如要瞭解如何建立通知管道,請參閱「建立及管理通知管道」。

  13. 按一下 [儲存]

    記錄式快訊政策現已準備就緒,可按照「測試記錄式快訊政策範例」一文所述進行測試。

詳情請參閱「設定以記錄為準的快訊」和「建立及管理通知管道」。

後續步驟