本文說明如何驗證 VM 擴充功能安裝作業、診斷政策推出和 VM 擴充功能狀態問題,以及查看 Compute Engine 虛擬機器 (VM) 執行個體上的訪客代理程式偵錯記錄檔。請按照下列操作說明,找出預期擴充功能未安裝、非預期擴充功能在 VM 上執行,或擴充功能程序停止的原因。
事前準備
排解 VM 擴充功能問題前,請先完成下列必要條件:
- 確認您具備必要權限,可檢查擴充功能政策、VM 擴充功能管理工具支援的擴充功能中繼資料,以及 Cloud de Confiance by S3NS 資源階層中的 VM 擴充功能狀態。詳情請參閱「查看 VM 擴充功能詳細資料和狀態」。
- 如要在連線至個別 VM 前,找出安裝失敗、當機或復原事件,請在 Cloud Logging 查看擴充功能強制執行事件記錄。詳情請參閱「查看 VM 擴充功能記錄」。
- 如要直接在 VM 上檢查執行中的擴充功能程序和訪客代理程式偵錯記錄檔,請確認您能使用 SSH 或 RDP 連線至 VM。
確認已安裝擴充功能
如要確認 Compute Engine VM 是否已安裝並執行擴充功能,請使用唯讀方法檢查 VM 擴充功能狀態。只有在需要客體 OS 程序或記錄詳細資料時,才連線至 VM。
使用唯讀方法檢查 VM 擴充功能狀態
如要檢查已安裝擴充功能的執行階段狀態和健康狀態,而不連線至 VM,請執行 gcloud beta compute instances list-vm-extension-states 或 gcloud beta compute instances get-vm-extension-state 指令,或呼叫對等的 REST API 方法。回應會傳回各項擴充功能的使用中版本、強制執行狀態 (enforcementState)、健康狀態 (healthStatus)、診斷訊息 (healthMsg) 和管理政策 ID (policyId)。詳情請參閱「查看執行個體的 VM 擴充功能狀態」。
檢查 VM 上執行的擴充功能程序
如果遠端狀態查詢未傳回預期狀態,請連線至 VM,並檢查擴充功能程序是否在客體作業系統中執行。
下表列出各個支援擴充功能的程序名稱:
| 擴充功能名稱 | 擴充功能程序名稱 |
|---|---|
google-cloud-sap-extension |
google_cloud_sap_agent |
google-cloud-workload-extension |
google_cloud_workload_agent |
ops-agent |
ops_agent |
如要檢查擴充功能程序是否在 VM 上執行,請選取您的作業系統:
Linux
如要列出執行中的擴充功能程序,請執行下列指令:
ps aux | grep 'EXTENSION_PROCESS_NAME'
EXTENSION_PROCESS_NAME 替換為上表中的擴充功能程序名稱。
舉例來說,如要列出 ops-agent 擴充功能程序,請執行下列指令:
ps aux | grep 'ops_agent'
Windows
如要列出執行中的擴充功能程序,請執行下列指令:
tasklist | findstr "EXTENSION_PROCESS_NAME"
EXTENSION_PROCESS_NAME 替換為上表中的擴充功能程序名稱。
舉例來說,如要列出 ops-agent 擴充功能程序,請執行下列指令:
tasklist | findstr "ops_agent"
下列程式碼片段顯示 ops-agent 擴充功能在 Linux VM 上執行時,ps 指令的輸出範例:
.... /var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3 ....
查看訪客代理程式安裝項目
如要確認客體代理程式何時下載、擷取及啟動擴充功能外掛程式,請啟用並查看客體代理程式的偵錯記錄檔。
下列程式碼片段顯示在 Linux VM 上,訪客代理程式安裝並啟動 ops-agent 擴充功能時,訪客代理程式記錄項目的範例:
my-instance google_guest_agent [14972]: Installing plugin "ops-agent", revision "2dfa648c1892da87" my-instance google_guest_agent [14972]: (client.go:181) Sent message [[type.googleapis.com/agent_controlplane.PluginEventMessage: (revision_id:"2dfa648c1892da87)]] my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "DownloadPluginStep" on plugin "ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (pluginengine.go:316) Successfully downloaded "https://storage.googleapis.com/acp-gcs-bucket-us-central1-a/ops-agent my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "UnpackPluginArchiveStep" on plugin "ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (pluginengine.go:361) Successfully unpacked "/var/lib/google-guest-agent/ops-agent.tar.gz" to "/google-guest-agent/ops-agent_2dfa648c1892da87 my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "LaunchPluginStep" on plugin "ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (run_linux.go:32) Attempting process start: (OutputType:0 Name:/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87) my-instance google_guest_agent [14972]: (pluginlauncher.go:132) Launched a plugin process from "/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (plugin.go:136) Dialing in on plugin "ops-agent 2dfa648c1892da87" my-instance google_guest_agent [14972]: (plugin.go:51) Executing start request on plugin "ops-agent_2dfa648c1892da87"
排解安裝問題
如果 VM 未安裝擴充功能,或 VM 執行非預期的擴充功能,請先診斷政策推出、目標標籤和強制執行狀態,再重新嘗試安裝。
如要找出擴充功能無法安裝在 VM 上的原因,請完成下列診斷步驟:
- 等待政策違規處置。政策推出作業 (包括重試) 最多可能需要一小時,才能在目標 VM 上完成。如要進一步瞭解如何檢查推出進度,請參閱「查看擴充功能政策」。
- 確認政策中指定的納入標籤與 VM 上的標籤相符,並驗證 VM 擴充功能管理工具支援的擴充功能中繼資料:
- 如要查看整個組織、資料夾或專案的政策標籤選取器和優先順序編號,請參閱「查看擴充功能政策」。
- 如要查看 VM 擴充功能管理工具在所有可用區或特定可用區支援的擴充功能名稱、版本號碼和支援等級,請參閱「查看 VM 擴充功能和版本」。
- 如要查看強制執行狀態、健康狀態、診斷訊息和管理政策 ID (
policyId),請檢查受影響 VM 的擴充功能狀態。常見的錯誤狀態包括INSTALL_FAILED、INCOMPATIBLE和ROLLED_BACK。如果有多項政策指定同一個 VM,policyId欄位會顯示各項擴充功能受哪項政策控管。詳情請參閱「查看執行個體的 VM 擴充功能狀態」。 - 如要找出 VM 上的訪客層級安裝錯誤,請啟用並查看訪客代理程式的偵錯記錄檔。
重新安裝擴充功能
修正基礎政策設定或訪客 OS 問題後,請重新套用政策設定,讓訪客代理程式在受影響的 VM 上重試安裝。
如要重試擴充功能安裝作業,請選擇下列其中一個選項:
- 重新建立政策:刪除政策,然後建立新政策。
套用暫時性的高優先順序政策:如要在特定 VM 上重試安裝,而不重新建立會影響大量機群的政策,請完成下列步驟:
- 為安裝失敗的 VM 新增臨時標籤,例如
status=failed。 建立優先順序較高 (整數值較低) 的臨時政策,並指定臨時標籤。舉例來說,如果原始政策使用預設優先順序
1000,如要建立優先順序為500的臨時政策,請執行下列指令:gcloud compute zone-vm-extension-policies create temp-policy \ --project=test-project \ --zone=us-central1-f \ --extensions=ops-agent \ --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \ --priority=500 \ --inclusion-labels=status=failed訪客代理程式在目標 VM 上安裝擴充功能後,請刪除暫時政策。
從 VM 移除臨時標籤。由於原始政策仍控管這些 VM,因此擴充功能仍會保持安裝狀態。
- 為安裝失敗的 VM 新增臨時標籤,例如
查看訪客代理程式的偵錯記錄檔
如果遠端狀態查詢和 Logging 事件記錄檔未顯示擴充功能無法下載或啟動的原因,請在訪客代理程式設定檔的 Core 部分啟用詳細偵錯記錄檔。
如要啟用及查看訪客代理程式的偵錯記錄檔,請選取您的作業系統:
Linux
如要在 Linux VM 啟用偵錯記錄檔功能,請完成下列步驟:
- 開啟位於
/etc/default/instance_configs.cfg的訪客代理程式設定檔。 在
/etc/default/instance_configs.cfg中新增下列設定。如果[Core]區段已存在,請在[Core]下方新增log_level和log_verbosity:[Core] log_level = 4 log_verbosity = 4如要重新啟動訪客代理程式管理工具,請執行下列指令:
sudo systemctl restart google-guest-agent-manager如要查看擴充功能安裝期間產生的訪客代理程式記錄,請執行下列指令:
journalctl -u google-guest-agent-manager
Windows
如要在 Windows VM 啟用偵錯記錄檔功能,請完成下列步驟:
- 開啟位於
C:\Program Files\Google\Compute Engine\instance_configs.cfg的訪客代理程式設定檔。 在
instance_configs.cfg中新增下列設定。如果[Core]區段已存在,請在[Core]下方新增log_level和log_verbosity:[Core] log_level = 4 log_verbosity = 4在提升權限的命令提示字元或 PowerShell 視窗中,執行下列指令,重新啟動訪客代理程式管理工具:
net stop GCEAgentManager net start GCEAgentManager在 PowerShell 中執行下列指令,查看擴充功能安裝期間產生的訪客代理程式記錄:
Get-Eventlog -Source google_guest_agent_manager -LogName Application
解決常見的訪客代理程式記錄錯誤
檢查訪客代理程式偵錯記錄檔時,請查看是否有資源限制錯誤,導致擴充功能無法在 VM 上擷取或執行。
下表列出客體代理程式偵錯記錄中回報的常見錯誤,以及解決方法:
| 錯誤狀況 | 解析度 |
|---|---|
| 磁碟空間不足 | 如果記錄顯示 VM 沒有足夠的磁碟空間,無法下載或擷取擴充功能封存檔,請刪除未使用的檔案或調整開機磁碟大小。 |
| 資源用量過高 | 如果記錄顯示客體代理程式因記憶體或 CPU 用量過高而停止擴充功能,請將 VM 的機型變更為記憶體或 vCPU 較多的機型。 |
後續步驟
- 如要檢查推出進度和擴充功能健康狀態,請參閱「查看 VM 擴充功能詳細資料和狀態」。
- 如要在 Logging 查詢過往的強制執行事件和稽核安裝作業,請參閱「查看 VM 擴充功能記錄檔」。
- 如要建立 Cloud Monitoring 資訊主頁,並設定代理程式健康狀態、CPU 和記憶體用量的快訊,請參閱「監控 VM 擴充功能」。
- 如要修改配置設定、變更固定的版本,或移除已部署的代理,請參閱「使用擴充功能政策管理 VM 擴充功能」。