監控及規劃主機維護事件

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

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

事前準備

  • 如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:

      gcloud init

      如果採用外部識別資訊提供者 (IdP),必須先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

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

      安裝 Google Cloud CLI。

      如果採用外部識別資訊提供者 (IdP),必須先 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。

必要的角色

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

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

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

所需權限

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

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

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

限制

只有當執行個體使用的機器類型屬於下列任一機器家族時,您才能查看執行個體即將進行的維護事件通知:

維護作業通知總覽

Google 會透過多種方式,傳送即將進行主機維護作業的通知。維護期間開始時, Google Cloud 會自動對執行個體執行維護作業。監控執行個體即將到來的維護期間,即可主動準備工作負載,盡可能減少維護作業造成的中斷。

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

  • 維護事件減少:一般來說,如果執行個體設有週期性維護間隔,維護事件應該會減少。
  • 更早收到維護通知:提早收到維護事件通知,以便規劃。
  • 監控和規劃:使用 Cloud Logging 追蹤維護排程。使用事件和警告功能,隨時掌握最新資訊。
  • 隨選維護控制:在通知期間開始維護,以便在合適的時間更新執行個體。

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

upcomingMaintenance:{
    "canReschedule":True
    "latestWindowStartTime": "2024-12-01T19:00:01Z"
    "machineType":"x4-960-16t-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-960-16t-metal 或 c4-highmem-192。
  • maintenanceReason:緊急維護事件的原因。例如:
    • FAILURE_GPU_TEMPERATURE:GPU 溫度過高,需要維護。
    • FAILURE_MEMORY:因記憶體錯誤而進行維護。
    • FAILURE_NETWORK:因網路錯誤而進行維護。
    • FAILURE_DISK:因磁碟錯誤而進行維護。
  • maintenanceStatus:維護事件的目前狀態。
    • ONGOING:正在執行維護作業。
    • PENDING:維護作業已排定,但尚未開始。
  • type:要執行的維護作業類型。
    • NONE:這個執行個體未排定維護作業。
    • SCHEDULED:如果是會造成服務中斷的維護作業,Compute Engine 會在至少 7 天前通知大多數執行個體。如需特定提前告知期限,請參閱機器系列的說明文件。
    • UNSCHEDULED:由於維護作業代表重要或緊急更新,Compute Engine 會盡可能提供提前告知,但通常會比排定維護事件短得多。
  • windowEndTime:維護作業時間範圍的結束時間。
  • windowStartTime:維護作業的開始時間。

維護狀態行為

管理維護事件時,請檢查 canReschedule 和 maintenanceStatus 的值。這些欄位組合起來,會指出您可以或無法對重新排程維護事件採取的動作:

  • canReschedule=True 和 maintenanceStatus=Pending:您可以在排定的開始時間前,手動啟動執行個體的維護事件。
  • canReschedule=False和maintenanceStatus=Ongoing:維護作業正在進行中,無法重新排程。
  • canReschedule=False 和 maintenanceStatus=Pending:執行個體不支援手動觸發的維護事件。

查看維護作業通知

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

您也可以使用相同方法查看緊急維護事件。不過,緊急維護事件的通知會包含 type 欄位,值為 UNSCHEDULED,且只能透過 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-960-16t-metal
      maintenanceStatus: PENDING
      type: SCHEDULED
      windowEndTime: '2025-01-15T16:00:00Z'
      windowStartTime: '2025-01-15T12:00:00Z'

在這個回應中:

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

如果指令傳回 null,表示未排定維護事件,請稍後再檢查。

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-960-16t-metal"
    "maintenanceStatus":"PENDING"
    "type":"SCHEDULED"
    "windowEndTime": "2023-12-01T22:00:00Z"
    "windowStartTime": "2023-12-01T19:00:00Z"
  }

在這個回應中:

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

如果查詢傳回 NONE,且 HTTP 代碼為 200,表示未排定維護事件,請稍後再檢查。

中繼資料伺服器

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

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

如果查詢傳回 NONE,且 HTTP 代碼為 200,表示未排定維護事件,請稍後再檢查。

在 Cloud Logging 查看維護事件通知

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

控制台

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

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

    前往 VM 執行個體

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

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

  3. 在「記錄」部分,點選「Logging」連結。

    「Logs Explorer query editor」(記錄檔探索工具查詢編輯器) 頁面隨即開啟。在「Query」(查詢) 窗格中,系統已為執行個體填入 resource.type 和執行個體 ID。

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

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

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

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

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

維護作業通知範例

執行個體的維護事件通知會顯示在 Logs Explorer 中,其值與下列內容類似:

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

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

  • methodName:"compute.instances.upcomingMaintenance"
  • metadata:
    • maintenanceStatus:"ONGOING"
    • machineType:"x4-960-16t-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. 按一下要建立維護事件警告的執行個體名稱。

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

  3. 在「記錄」部分,點選「Logging」連結。

    「Logs Explorer query editor」(記錄檔探索工具查詢編輯器) 頁面隨即開啟。在「Query」(查詢) 窗格中,系統已為執行個體填入 resource.type 和執行個體 ID。

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

    operation.producer="compute.instances.upcomingMaintenance"
    

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

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

      protoPayload.metadata.machineType:"MACHINE_TYPE"

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

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

  6. 在查詢結果窗格中,點選「編輯時間」。

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

  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. 點選「下一步」。

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

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

    2. 「Incident autoclose duration」(事件自動關閉期限) 請使用最大值 7 天。

    3. 點選「下一步」。

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

  13. 按一下 [儲存]。

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

詳情請參閱「設定記錄指標警告」和「建立及管理通知管道」。

後續步驟