監控及規劃主機維護事件

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

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

事前準備

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

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

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,您不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

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

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

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

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

必要的角色

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

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

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

所需權限

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

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

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

限制

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

維護作業通知總覽

Google 會透過多種方式,傳送即將進行主機維護作業的通知。維護期間開始時,系統會 Cloud de Confiance by S3NS 自動 對執行個體執行維護作業。監控執行個體即將到來的維護期間,即可主動準備工作負載,以最少的中斷時間處理即將到來的維護作業。

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

  • 減少維護事件:一般來說,如果執行個體的維護間隔時間較長,維護事件就會減少。
  • 更長的維護通知時間:提前收到維護事件通知,方便您規劃。
  • 監控和規劃:使用 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.s3nsapis.fr/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,表示未排定維護事件,請稍後再檢查。

中繼資料伺服器

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

$ 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. 在「記錄」部分中,按一下標示為「記錄」的連結。

    「Logs Explorer 查詢編輯器」頁面隨即開啟。在「Query」(查詢) 窗格中,系統已為執行個體填入 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,查看通知的說明訊息。

維護作業通知範例

執行個體的維護事件通知會顯示在 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. 按一下要建立維護事件警告的執行個體名稱。

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

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

    「Logs Explorer 查詢編輯器」頁面隨即開啟。在「Query」(查詢) 窗格中,系統已為執行個體填入 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」(建立快訊)。如果檢視視窗較窄,「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. 如要前往下一個步驟,請按一下「下一步」。

  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. 按一下 [儲存]。

    現在可以測試記錄式警告政策,詳情請參閱「測試記錄式警告政策範例」。

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

後續步驟