您可以啟用 VM 的偵錯模式。在偵錯模式下,具備專案「擁有者」、「編輯者」和「App Engine 管理員」角色的主體會擁有 VM 的根目錄存取權。偵錯模式開啟時,系統會停用作業系統更新和安全性修補程式的自動導入功能。然而,由於 VM 仍是負載平衡器集區的一部分,因此會持續接收外部要求。
您每次啟用或停用偵錯功能, Google Cloud 控制台都會顯示「VM instance debugging enable/disable」(VM 執行個體偵錯功能啟用/停用) 事件,該事件也會記錄在 VM 的 /var/log/syslog.log
檔案中。
啟用及停用偵錯模式
您可以使用 gcloud
來啟用及停用執行個體的偵錯模式。如要對執行個體進行偵錯,您的角色必須具備 appengine.instances.enableDebug
權限。
如要在 gcloud
啟用及停用偵錯模式,請按照下列指示操作:
-
使用 gcloud app instances enable-debug 指令,針對特定執行個體和版本的 VM 進行偵錯。如下所示:
將 PROJECT-ID 替換為您的專案 ID,並按照提示指定要偵錯的執行個體版本。gcloud app --project PROJECT-ID instances enable-debug
- 偵錯完畢之後,請停用偵錯模式。如下所示:
按照提示指定執行個體版本gcloud app --project PROJECT-ID instances disable-debug
VM 會在偵錯模式停用後停止運作,接著應用程式的新執行個體會啟動,並在乾淨的全新 VM 上執行。
連線至執行個體
控制台
如何在主控台連線到執行個體:
前往 Google Cloud 專案的「Instances」(執行個體) 頁面:
在包含您要存取的執行個體的資料列中,按一下最右側的「SSH」SSH:
執行個體就會進入偵錯模式,執行個體也會在終端機視窗中開啟 SSH 工作階段。
您也可以從下拉式清單選取不同的選項來啟動 SSH 工作階段。
在終端機視窗中,使用下列指令列出執行個體內正在執行的容器:
sudo docker ps
sudo docker ps
指令的輸出結果會列出每個容器 (每資料列一個容器);請找出含有您專案 ID 的資料列,這就是負責執行程式碼的容器。請記下該容器的名稱。您也可以叫用下列指令來列出應用程式的記錄資訊:
sudo docker logs CONTAINER-NAME
使用下列指令,在負責執行程式碼的容器中啟動殼層:
sudo docker exec -it CONTAINER-NAME /bin/bash
偵錯完畢後,請輸入
exit
退出容器,然後再次輸入exit
就可以結束 SSH 工作階段。停用執行個體的偵錯功能,讓執行個體恢復正常運作。
gcloud
如要使用 gcloud 連線至執行個體:
如果執行個體已啟用偵錯功能,請叫用以下指令:
gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION
在終端機視窗中,使用下列指令列出執行個體內正在執行的容器:
sudo docker ps
sudo docker ps
指令的輸出結果會列出每個容器 (每資料列一個容器);請找出含有您專案 ID 的資料列,這就是負責執行程式碼的容器。請記下該容器的名稱。您也可以叫用下列指令來列出應用程式的記錄資訊:
sudo docker logs CONTAINER-NAME
使用下列指令,在負責執行程式碼的容器中啟動殼層:
docker exec -it CONTAINER-NAME /bin/bash
偵錯完畢後,請輸入
exit
退出容器,然後再次輸入exit
就可以結束 SSH 工作階段。停用執行個體的偵錯功能,讓執行個體恢復正常運作。
瞭解常見容器
除了負責執行應用程式程式碼的容器以外,執行個體可能也會使用下列容器:
容器與原始碼 | 說明 |
---|---|
cloud-sql | 確保與 Cloud SQL 執行個體的連線安全無虞。 |
fluentd_logger | 記錄代理程式。 |
nginx_proxy | 透過 Proxy 傳送要求至應用程式。 |
opentelemetry-collector | 接收、處理及匯出遙測資料。 |
stackdriver-monitoring-agent | 收集、儲存及監控系統資訊。 |
請注意,這些附屬容器如有異動,恕不另行通知。