本文說明如何查看及解讀代管執行個體群組 (MIG) 中 VM 的健康狀態變更記錄項目,並提供具體的用途,協助您監控群組中的 VM。
如果您已為 MIG 設定以應用程式為準的健康狀態檢查,每當受管理執行個體的健康狀態變更時 (例如執行個體從 HEALTHY
狀態變更為 UNHEALTHY
狀態),Compute Engine 就會寫入記錄項目。這些記錄項目可協助您監控及偵錯每個代管執行個體的健康狀態,以及 MIG 的整體健康狀態。
事前準備
- 請參閱「設定健康狀態檢查與自動修復」。
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 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
-
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.
- Set a default region and zone.
前往 Google Cloud 控制台的「Logs Explorer」頁面。
設定下列查詢參數:
- 資源 - GCE 執行個體群組管理工具
- 記錄名稱 -
instance_group_manager_events
或者,您也可以在「Query」(查詢) 建立工具中複製下列查詢。
resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:*
您可以使用下列查詢,將搜尋範圍縮小至特定代管執行個體群組。
resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME"
按一下 [Run query] (執行查詢)。「Query results」(查詢結果) 會顯示記錄。
PROJECT_ID
:您的專案 ID。MIG_NAME
:您要查看健康狀態變更記錄的 MIG。OAUTH2_TOKEN
:應用程式的存取權杖。如要進行本機測試,可以使用gcloud auth print-access-token
指令產生權杖。PROJECT_ID
:您的專案 ID。MIG_NAME
:您要查看健康狀態變更記錄的 MIG。前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「Query」(查詢) 產生器中複製下列查詢。
resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
點選「執行查詢」
PROJECT_ID
:您的專案 ID。INSTANCE_NAME
:要查看健康狀態變更記錄的受管理執行個體。OAUTH2_TOKEN
:應用程式的存取權杖。如要進行本機測試,可以使用gcloud auth print-access-token
指令產生權杖。PROJECT_ID
:您的專案 ID。INSTANCE_NAME
:要查看健康狀態變更記錄的受管理執行個體。- 多數記錄檔所示的一般資訊,如嚴重性、專案 ID、MIG 名稱和 ID、專案編號和時間戳記等。
- 執行個體健康狀態專屬的欄位。
- 瞭解特定 VM 執行個體健康狀態隨時間變化的頻率。
- 評估 MIG 執行個體健康狀態變更的頻率。
- 找出經常進入
UNHEALTHY
狀態的問題 VM 執行個體。 - 找出自動修復嘗試的原因。
- 瞭解特定 VM 執行個體的自動修復嘗試是否成功。
- 判斷自動修復的適當初始延遲時間,微調應用程式的健康狀態檢查設定。
前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「Query」(查詢) 建立工具中輸入下列查詢,並使用您的專案 ID 和執行個體名稱。
resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
在「查詢結果」部分,依序點選「動作」和「建立指標」。
在「建立記錄指標」頁面中,執行下列操作:
- 將「指標類型」設為「計數器」。
輸入「記錄指標名稱」,例如
health-mig-xyzq
。「建立篩選器」部分會顯示「記錄檔探索工具」的記錄查詢。您也可以在篩選器中加入
severity>=WARNING
,只納入干擾狀態 (例如UNHEALTHY
和TIMEOUT
)。按一下「標籤」下方的「新增標籤」。
輸入「標籤名稱」,例如
health_state
。將「標籤類型」設為
STRING
。將「欄位名稱」設為
jsonPayload.instanceHealthStateChange.detailedHealthState
。方便您區分不同的健康狀態變化。按一下「完成」即可新增標籤。
點選「建立指標」。
前往「記錄指標」頁面,然後找出新建立的指標。
按一下指標列中的選單 more_vert,然後選取「在 Metrics Explorer 中查看」。「指標探索器」會開啟,並顯示代表您在查詢中指定的 VM 執行個體健康狀態變化的圖表。
前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「查詢」建構工具中輸入下列查詢,並使用您的專案 ID 和受管理執行個體群組的名稱。
resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME"
在「查詢結果」部分,依序點選「動作」和「建立指標」。
在「建立記錄指標」頁面中,執行下列操作:
- 將「指標類型」設為「計數器」。
- 輸入「記錄指標名稱」,例如
health-mig-xyzq
。 - 按一下「標籤」下方的「新增標籤」。
- 輸入「標籤名稱」,例如
health_state
。 - 將「標籤類型」設為
STRING
。 - 將「欄位名稱」設為
jsonPayload.instanceHealthStateChange.detailedHealthState
。這樣您就能區分不同的健康狀態變化。 - 按一下「完成」即可新增標籤。
- 點選「建立指標」。
前往「記錄指標」頁面,然後找出新建立的指標。
按一下指標列中的選單 more_vert,然後選取「在 Metrics Explorer 中查看」。「指標探索器」會開啟,並顯示圖表,代表您在查詢中指定的代管執行個體群組中,所有 VM 執行個體的健康狀態變化。
前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「查詢」建構工具中輸入下列查詢,並使用您的專案 ID 和受管理執行個體群組的名稱。
resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME"
在「查詢結果」部分,依序點選「動作」和「建立指標」。
在「建立記錄指標」頁面中,執行下列操作:
- 將「指標類型」設為「計數器」。
- 輸入「記錄指標名稱」,例如
health-mig-xyzq
。 - 按一下「標籤」下方的「新增標籤」。
- 輸入「標籤名稱」,例如
health_state
。 - 將「標籤類型」設為
STRING
。 - 將「欄位名稱」設為
jsonPayload.instanceHealthStateChange.detailedHealthState
。這樣您就能區分不同的健康狀態變化。 - 按一下「完成」即可新增標籤。
- 同樣地,新增第二個標籤 (例如
instance
),並將「欄位名稱」設為jsonPayload.instanceHealthStateChange.instance
。 - 點選「建立指標」。
前往「記錄指標」頁面,然後找出新建立的指標。
按一下指標列中的選單 more_vert,然後選取「在 Metrics Explorer 中查看」。「指標探索器」會開啟,並顯示圖表,代表您在查詢中指定的代管執行個體群組中,所有 VM 執行個體的健康狀態變化。
將「Group By」(分組依據) 設為
instance
,即可查看每個執行個體的健康狀態變化總數。前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「查詢」建構工具中輸入下列查詢,並使用您的專案 ID 和執行個體名稱。
resource.type="gce_instance" AND logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND protoPayload.methodName="compute.instances.repair.recreateInstance" AND protoPayload.resourceName=~"/INSTANCE_NAME$"
按一下 [Run query] (執行查詢)。「Query results」(查詢結果) 會顯示 VM 的所有自動修復嘗試,以及
protoPayload.status.message
中的自動修復原因。前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「查詢」建構工具中輸入下列查詢,並使用您的專案 ID 和執行個體名稱。
(resource.type="gce_instance" AND logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND protoPayload.methodName="compute.instances.repair.recreateInstance" AND protoPayload.resourceName=~"/INSTANCE_NAME$") OR (resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
查詢的第一部分會顯示執行個體修復作業,指出 MIG 自動修復功能已觸發重新建立作業,讓執行個體恢復正常。查詢的第二部分會顯示 VM 執行個體的所有健康狀態變化。
在「Query results」(查詢結果) 中,健康狀態變更事件的
detailedHealthState
設為HEALTHY
,表示修復作業完成後不久,自動修復嘗試就成功了。前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「查詢」建構工具中輸入下列查詢,並使用您的專案 ID 和執行個體名稱。
(resource.type="gce_instance" AND logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.request.@type="type.googleapis.com/compute.instances.insert" AND operation.last="true" AND protoPayload.resourceName=~"/INSTANCE_NAME$") OR (resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
查詢的第一部分會顯示 VM 插入作業的完成情況。 第二部分會顯示 VM 的所有健康狀態變更。
在「Query results」(查詢結果) 中,插入作業後不久,
detailedHealthState
設為HEALTHY
的健康狀態變更事件的時間戳記,會顯示這個 VM 的啟動時間。針對更多 VM 重複執行上述步驟,以取得初始延遲參數的更準確近似值。
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」。
定價
Compute Engine 會使用 Cloud Logging,為代管執行個體健康狀態變更產生記錄項目。Cloud Logging 每個月都會提供免費配額,超出配額的記錄檔項目則會依資料量計費。詳情請參閱 Cloud Logging 定價摘要。
如要避免記錄費用,可以停用健康狀態變更記錄。
查看健康狀態變更記錄
只要健康狀態變更記錄保持啟用,Compute Engine 就會在受管理執行個體的健康狀態變更時,將記錄項目寫入平台記錄。您可以查看專案、特定 MIG 或特定受管理執行個體的這些記錄。
查看專案或 MIG 的記錄
如要查看專案或特定 MIG 的記錄項目,請使用Google Cloud 主控台、gcloud CLI 或 REST。
主控台
gcloud
使用
gcloud logging read
指令查看及讀取記錄項目。如要查看專案中的所有健康狀態變更記錄,請使用下列指令:
gcloud logging read 'resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:*'\ --limit 10
如要查看特定代管執行個體群組的所有健康狀態變更記錄,請使用下列指令:
gcloud logging read 'resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME"' \ --limit 10
更改下列內容:
REST
如要查看健康狀態變更記錄,請向
entries.list
方法發出POST
要求。如要查看專案中的所有健康狀態變更記錄,請使用下列指令:
curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \ '{"filter": "resource.type=gce_instance_group_manager AND logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND jsonPayload.instanceHealthStateChange:*", "orderBy": "timestamp desc", "pageSize": 10, "resourceNames": ["projects/PROJECT_ID"] }' https://logging.googleapis.com/v2/entries:list?alt=json
如要查看特定代管執行個體群組的健康狀態變更記錄,請使用下列指令:
curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \ '{"filter": "resource.type=gce_instance_group_manager AND logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name=MIG_NAME", "orderBy": "timestamp desc", "pageSize": 10, "resourceNames": ["projects/PROJECT_ID"] }' https://logging.googleapis.com/v2/entries:list?alt=json
更改下列內容:
如要進一步瞭解各個記錄項目,請參閱「記錄項目格式」。
視您要封存記錄、使用記錄進行分析、將記錄串流傳輸到其他應用程式,還是觸發 Cloud Function 而定,您可以將記錄匯出至 Cloud Storage、BigQuery 或 Pub/Sub 等目的地。如要進一步瞭解如何匯出記錄,請參閱「記錄匯出總覽」。
查看特定 VM 的健康狀態變更記錄
如要查看特定代管執行個體的記錄項目,請使用Google Cloud 控制台、gcloud CLI 或 REST。
主控台
gcloud
使用
gcloud logging read
指令查看及讀取記錄項目。如要查看代管執行個體的健康狀態變更記錄,請使用下列指令:
gcloud logging read 'resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"' \ --limit 10
更改下列內容:
REST
如要查看代管執行個體的健康狀態變更記錄,請對
entries.list
方法發出POST
要求。curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \ '{"filter": "resource.type=gce_instance_group_manager AND logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND jsonPayload.instanceHealthStateChange:* AND labels.\"compute.googleapis.com/instance_name\"=\"INSTANCE_NAME\"", "orderBy": "timestamp desc", "pageSize": 10, "resourceNames": ["projects/PROJECT_ID"] }' https://logging.googleapis.com/v2/entries:list?alt=json
更改下列內容:
記錄項目格式
執行個體健康狀態變更記錄項目包含的資訊適合用於監控及偵錯受管理執行個體的狀態。
記錄會寫入平台記錄,記錄名稱為
instance_group_manager_events
。平台記錄有助於偵錯及排解問題。logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events"
健康狀態變更記錄項目包含下列資訊類型:
在每個健康狀態變更記錄項目中,
jsonPayload.instanceHealthStateChange
欄位包含下列資訊:欄位 說明 instance
執行個體的網址,以字串專案 ID 和執行個體名稱為準。 instanceWithId
執行個體的網址,以數字專案 ID 和執行個體 ID 為準。 ipAddress
健康狀態檢查探測的執行個體 IP 位址。 network
這個執行個體的網路資源網址,以字串專案 ID 和網路名稱為準。 networkWithId
這個執行個體的網路資源網址,以其數字專案 ID 和網路 ID 為依據。 healthCheck
為代管執行個體群組設定的健康狀態檢查網址。 previousDetailedHealthState
執行個體先前的健康狀態。如需可能狀態的清單,請參閱 健康狀態。 detailedHealthState
執行個體目前的健康狀態。如需可能狀態的清單,請參閱 健康狀態。 notificationTime
健康狀態變更的時間戳記。 布林類型的記錄欄位通常只會在欄位的值為
true
時才會顯示。 如果布林欄位的值為false
,則記錄檔會省略該欄位。系統會對記錄檔欄位強制採用 UTF-8 編碼。非 UTF-8 字元都會替換為問號。
記錄項目範例
以下範例顯示 VM 執行個體的健康狀態從
HEALTHY
變更為UNHEALTHY
:{ "logName": "projects/my-project/logs/compute.googleapis.com%2Finstance_group_manager_events", "resource": { "type": "gce_instance_group_manager", "labels": { "instance_group_manager_id": "3138236342290985981", "instance_group_manager_name": "my-mig", "project_id": "my-project", "location": "europe-west3" } }, "labels": { "compute.googleapis.com/instance_id": "6498902454451155884", "compute.googleapis.com/instance_location": "europe-west3-a", "compute.googleapis.com/instance_name": "my-mig-a" }, "timestamp": "2019-11-19T15:47:57.127Z", "severity": "INFO", "jsonPayload": { "@type": "type.googleapis.com/compute.InstanceGroupManagerEvent", "instanceHealthStateChange": { "instance": "projects/my-project/zones/europe-west3-a/instances/my-mig-a", "instanceWithId": "projects/123456/zones/europe-west3-a/instances/6498902454451155884", "ipAddress": "10.0.0.4", "network": "projects/my-project/global/networks/net-1", "networkWithId": "projects/123456/global/networks/456", "healthCheck": "projects/my-project/global/healthChecks/my-mig-health-check", "previousDetailedHealthState": "HEALTHY", "detailedHealthState": "UNHEALTHY", "notificationTime": "2019-11-19T15:47:56.444Z" } }, "receiveTimestamp": "2019-11-19T15:47:57.296439184Z" }
用途
在下列監控或偵錯情境中,您可以使用健康狀態變更記錄:
監控 VM 的健康狀態變化
您可以建立追蹤特定 VM 健康狀態變更的指標,監控 VM 執行個體健康狀態的變更頻率。
如要建立指標並監控變更,請按照下列步驟操作:
監控 MIG 中所有 VM 的健康狀態變化
您可以建立指標,追蹤代管執行個體的健康狀態變化,藉此監控所有代管執行個體的健康狀態變化。
如要建立指標並監控變更,請按照下列步驟操作:
找出健康狀態經常不良的 VM
您可以建立指標,追蹤 MIG 中所有 VM 執行個體的健康狀態變化,並依執行個體分組指標,找出經常進入
UNHEALTHY
狀態的問題 VM。如要建立指標並依執行個體分組,請按照下列步驟操作:
健康狀態變更次數最多的執行個體,就是最常進入健康狀態不良的執行個體。
檢查導致自動修復嘗試的原因
如要找出自動修復嘗試的原因,請針對特定 VM 執行個體篩選
repair
作業的記錄。如要篩選修復作業,請按照下列步驟操作:
檢查 VM 的自動修復是否成功
您可以依 VM 執行個體名稱篩選記錄,找出
repair
作業和健康狀態變化,瞭解 VM 執行個體的自動修復嘗試是否成功。如果執行個體的健康狀態在修復作業後變更為HEALTHY
,您會看到相應的健康狀態變更記錄。請按照以下步驟操作:判斷 MIG 的初始延遲值
有了 VM 執行個體健康狀態記錄,就能更輕鬆地為 MIG 自動修復功能判斷適當的初始延遲值。您可以透過記錄,觀察
instances.insert
作業完成與接收到群組中一組執行個體的第一個正常訊號之間的時間。這個時間間隔會顯示執行個體完全啟動所需的時間。由於部分 VM 的啟動速度可能比其他 VM 慢,因此 Google 建議在自動修復政策中指定初始延遲時間時,為觀察到的初始化時間 (從插入作業到正常狀態) 增加一些緩衝時間。如要測量插入執行個體作業與執行個體進入正常狀態之間的時間,請依 VM 執行個體名稱執行
insert
作業和健康狀態變更記錄的查詢。使用這兩項作業的時間戳記,計算執行個體的初始化時間。請按照以下步驟操作:除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-10 (世界標準時間)。
-