監控及規劃主機維護事件


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

本頁說明如何監控及規劃 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.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the 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.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

必要的角色

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

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

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

所需權限

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

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

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

限制

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

  • 加速器最佳化機器系列

  • 一般用途機器系列

  • 記憶體最佳化機器系列

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

維護作業通知簡介

Google 會透過多種方式傳送即將進行主機維護作業的通知。維護期間開始後, Google Cloud 會自動對執行個體執行維護作業。監控執行個體的近期維護作業期間,您就能主動準備工作負載,以便在服務中斷程度降到最低的情況下,處理即將進行的維護作業。

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

  • 維護事件減少:一般來說,執行個體的維護間隔會重複,因此維護事件應該會減少。
  • 較長維護作業通知:提前接收維護事件通知,以便妥善規劃。
  • 監控和規劃:使用 Cloud Logging 追蹤維護時間表。使用事件和快訊,隨時掌握最新資訊。
  • 按需維護控制項:在通知期間開始維護,以便在您方便的時間更新執行個體。

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

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

如果沒有即將進行的維護事件,您會看到類似以下的訊息:

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

維護狀態定義

下列狀態定義說明瞭針對例項主機維護作業查詢的回應。可提供維護事件相關資訊。Google Cloud CLI、REST 和中繼資料伺服器都會使用相同的回應:

  • canReschedule:在這個例項的通知期間,是否可手動啟動維護作業。
    • TRUE:客戶可在通知期間執行客戶觸發的維護作業。
    • FALSE:無法對這個執行個體執行客戶觸發的維護作業。這類問題通常會在執行個體進行維護期間發生,或是執行個體類型不支援按需維護時發生。
  • latestWindowStartTime:維護期間可延後至的最新時間。
  • 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'
      maintenanceStatus: PENDING
      type: SCHEDULED
      windowEndTime: '2025-01-15T16:00:00Z'
      windowStartTime: '2025-01-15T12:00:00Z'

在這個回覆中:

  • 維護作業的排定日期和時間會顯示在 windowStartTime 中。
  • canReschedule 設為 truemaintenanceStatus 設為 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"
    "maintenanceStatus":"PENDING"
    "type":"SCHEDULED"
    "windowEndTime": "2023-12-01T22:00:00Z"
    "windowStartTime": "2023-12-01T19:00:00Z"
  }

在這個回覆中:

  • 維護作業的排定日期和時間會顯示在 windowStartTime 中。
  • canReschedule 設為 TruemaintenanceStatus 設為 PENDING。這些設定表示您可以在 latestWindowStartTime 中顯示的日期之前,手動啟動已排定的維護事件。

中繼資料伺服器

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

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

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

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

主控台

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

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

    前往 VM 執行個體

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

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

  3. 在「Logs」專區中,按一下「Logging」連結。

    「Logs Explorer 查詢編輯器」頁面隨即開啟。在「查詢」窗格中,系統已為您的執行個體填入 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"
    • windowStartTime"2024-07-23T20:00:00Z"

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

  • methodName"compute.instances.upcomingMaintenance"
  • metadata
    • maintenanceStatus"ONGOING"
    • 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. 按一下要建立維護作業快訊的執行個體的「名稱」

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

  3. 在「Logs」專區中,按一下「Logging」連結。

    「Logs Explorer 查詢編輯器」頁面隨即開啟。在「查詢」窗格中,系統已為您的執行個體填入 resource.type 和執行個體 ID。

  4. 在「Query」窗格中,將下列行加入查詢:

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

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

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

  8. 在「Create logs-based alert policy」窗格中的「Alert details」部分,執行下列操作:

    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. 點按「Next」

  11. 在「Set notification frequency and autoclose duration」窗格中,執行下列操作:

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

    2. 針對「事件自動關閉期限」,請使用 7 天的最大值。

    3. 點按「Next」

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

  13. 按一下 [儲存]

    您的記錄式警告政策現已準備就緒,可以進行測試,如「測試以記錄為基礎的警告政策範例」一文所述

如需更多資訊,請參閱「設定以記錄為依據的快訊」和「建立及管理通知管道」。

後續步驟