每個虛擬機器 (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
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得建立執行個體及管理執行個體維護作業所需的權限,請要求管理員將專案的下列 IAM 角色授予您:
-
Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) -
如要取得系統事件稽核記錄的唯讀存取權:
記錄檢視者 (
roles/logging.viewer
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色包含建立執行個體和管理執行個體維護作業所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要建立執行個體及管理執行個體維護作業,必須具備下列權限:
-
如要取得執行個體的相關資訊 (包括中繼資料):
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-metal
或c4-highmem-192
。 - maintenanceStatus:維護事件的目前狀態。
ONGOING
:維護作業正在進行中。PENDING
:已排定維護作業,但尚未開始。
- type:要執行的維護作業類型。
NONE
:這個執行個體未排定維護作業。SCHEDULED
:對於中斷性維護作業,Compute Engine 會提前至少 7 天通知大部分執行個體;X4 執行個體則會提前約 60 天收到通知。UNSCHEDULED
:由於維護作業代表重大更新,Compute Engine 會盡可能提前通知,但通常遠少於排定的維護事件。
- windowEndTime:維護作業進行的時間範圍結束時間。
- windowStartTime:維護作業進行的時間範圍開始時間。
維護狀態行為
管理維護事件時,請檢查
canReschedule
和maintenanceStatus
的值。合併使用這些欄位時,可指出您能否重新安排維護事件:canReschedule=True
和maintenanceStatus=Pending
:您可以在排定的開始時間前,手動啟動執行個體的維護事件。canReschedule=False
和maintenanceStatus=Ongoing
,目前正在維護中,無法重新安排時間。canReschedule=False
和maintenanceStatus=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 和記錄檔探索工具,在維護事件發生前、期間和之後查看這些事件。
主控台
如要查詢執行個體維護通知的稽核記錄,請完成下列步驟:
前往「VM instances」(VM 執行個體) 頁面。
按一下要查看維護通知的執行個體「名稱」。
「執行個體詳細資料」頁面隨即開啟。
在「記錄」部分中,按一下標示為「記錄」的連結。
「記錄檔探索工具查詢編輯器」頁面隨即開啟。在「Query」窗格中,系統會自動填入執行個體的
resource.type
和執行個體 ID。在「Query」(查詢) 窗格中,將下列程式碼行新增至查詢:
operation.producer="compute.instances.upcomingMaintenance" OR "compute.instances.terminateOnHostMaintenance" OR "compute.instances.migrateOnHostMaintenance"
按一下 [Run query] (執行查詢)。查詢結果窗格會顯示相符的維護通知事件。
在查詢結果窗格中,按一下「編輯時間」即可展開搜尋時間範圍,或將結果縮小至特定日期或時間。
按一下記錄項目,即可查看維護通知詳細資料。
- 如要查看即將進行的維護作業通知,請展開「
metadata
」標題,瞭解目前狀態、類型,以及排定的維護期間開始和結束時間等資訊。 - 展開標題
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."
}
設定主機維護通知的快訊
您可以設定記錄檔快訊政策,搜尋特定維護通知事件,並透過通知管道傳送快訊。
主控台
如要為執行個體的維護事件建立快訊,請完成下列步驟:
前往「VM instances」(VM 執行個體) 頁面。
按一下要建立維護事件快訊的執行個體「名稱」。
「執行個體詳細資料」頁面隨即開啟。
在「記錄」部分中,按一下標示為「記錄」的連結。
「記錄檔探索工具查詢編輯器」頁面隨即開啟。在「Query」窗格中,系統會自動填入執行個體的
resource.type
和執行個體 ID。在「Query」(查詢) 窗格中,將下列程式碼行新增至查詢:
operation.producer="compute.instances.upcomingMaintenance"
如要依機器類型而非特定執行個體篩選主機維護事件,請按照下列方式編輯查詢:
- 移除指定執行個體 ID 的行。
在查詢中新增下列程式碼:
protoPayload.metadata.machineType:"MACHINE_TYPE"
將
MACHINE_TYPE
替換為要篩選主機維護事件的機器類型。
按一下 [Run query] (執行查詢)。查詢結果窗格會顯示相符的維護通知事件。
在查詢結果窗格中,按一下「編輯時間」。
- 在編輯視窗左側的「相對時間」欄位中輸入
1d
,即可查看過去一週的記錄項目。 - 按一下 [套用]。
- 在編輯視窗左側的「相對時間」欄位中輸入
在「Query results」(查詢結果) 窗格的標頭中,按一下 add_alert「Create alert」(建立快訊)。如果觀看視窗較窄,「建立快訊」選項可能會顯示在「動作」選單中。
在「建立記錄型快訊政策」窗格的「快訊詳細資料」部分,執行下列操作:
- 輸入快訊政策的名稱,例如
Upcoming maintenance for my-c3d-vm@us-central1-b
。 從「政策嚴重程度」選單中選取「無嚴重程度」。
您可以在「Documentation」(說明文件) 欄位中輸入快訊政策的說明。您也可以加入相關資訊,協助通知收件者診斷問題。以下字串會摘要說明通知原因:
Log-based alerting policy in project ${project} to monitor upcoming maintenance notifications. See also "Host maintenance alerts" and "onHostMaintenance actions" alerting policies.
如要瞭解如何設定這個欄位的內容格式及自訂內容,請參閱「在文件範本中使用 Markdown 和變數」。
如要前往下一個步驟,請按「Next」(下一步)。
- 輸入快訊政策的名稱,例如
在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 區段中,按一下「Preview logs」(預覽記錄),檢查查詢和結果。
您在「Query」(查詢) 窗格中建構的查詢也會顯示在此窗格中。建議您先在 Logs Explorer 的「Query」(查詢) 窗格中建立查詢。
如有需要,您可以在這個窗格中編輯查詢。如要編輯查詢,請按一下「Preview logs」(預覽記錄) 查看結果。
點選「下一步」。
在「Set notification frequency and autoclose duration」(設定通知頻率和自動關閉期限) 窗格中,執行下列操作:
選取通知時間間隔下限。這個值可讓您控制如果多次符合條件,會收到幾次監控服務的通知。在本例中,請從選項中選取「1 天」。
「事件自動關閉期限」請使用 7 天這個最大值。
點選「下一步」。
如果您已設定電子郵件通知管道,可以從清單中選取該管道。如果沒有,請按一下「管理通知管道」並新增電子郵件管道。如要瞭解如何建立通知管道,請參閱「建立及管理通知管道」。
按一下 [儲存]。
記錄式快訊政策現已準備就緒,可按照「測試記錄式快訊政策範例」一文所述進行測試。
詳情請參閱「設定以記錄為準的快訊」和「建立及管理通知管道」。
後續步驟
- 瞭解如何設定主機維護政策。
- 瞭解如何取得即時遷移通知。
- 瞭解如何手動觸發主機維護事件
- 瞭解如何使用 Monitoring 的 Google Cloud 控制台或 Monitoring API,管理記錄快訊政策。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-09-04 (世界標準時間)。
-