您可以为虚拟机启用调试模式。在调试模式下,对项目具有 Owner、Editor 和 App Engine Admin 角色的主账号拥有虚拟机的根目录访问权限。调试模式开启后,操作系统更新和安全补丁程序的自动发布会停用。但是,虚拟机仍然是负载均衡器池的一部分,并会继续接收外部请求。
每次启用或停用调试模式时,Google Cloud 控制台中会显示“虚拟机实例调试启用/停用”(VM instance debugging enable/disable) 事件,并且该事件将记录在虚拟机的 /var/log/syslog.log
文件中。
启用和停用调试模式
您可以使用 gcloud
为实例启用和停用调试模式。如需调试实例,您的角色必须包含 appengine.instances.enableDebug
权限。
如需在 gcloud
中启用和停用调试模式,请执行以下操作:
-
使用 gcloud app instances enable-debug 命令针对特定实例和版本调试虚拟机,如下所示:
将 PROJECT-ID 替换为您自己的项目 ID,并按照提示指定要调试的实例版本。gcloud app --project PROJECT-ID instances enable-debug
-
调试完毕后,停用调试模式,如下所示:
按照提示指定实例版本gcloud app --project PROJECT-ID instances disable-debug
停用调试模式后,虚拟机会停止,系统会启动应用的新实例,该实例在处于初始状态的新虚拟机上运行。
连接到实例
控制台
如需在控制台中连接到实例,请执行以下操作:
访问您的项目的 Google Cloud 控制台实例页面:
点击您要访问的实例所在行的最右侧的 SSH:
此操作将使实例进入调试模式,并在终端窗口中打开实例的 SSH 会话。
您也可以从下拉列表中选择不同的选项以启动 SSH 会话。
在终端窗口中,列出实例中正在运行的容器:
sudo docker ps
sudo docker ps
命令的输出按行列出每个容器;找到您的项目 ID 所在的行:这是运行您的代码的容器。请记录此容器的名称。或者,通过调用以下命令,列出您应用的日志记录信息:
sudo docker logs CONTAINER-NAME
在运行您代码的容器中启动 shell:
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
在运行您代码的容器中启动 shell:
docker exec -it CONTAINER-NAME /bin/bash
调试完毕后,输入
exit
退出容器,然后再次输入exit
退出 SSH 会话。停用对实例的调试,让其恢复正常运行。
了解常见容器
除了运行应用代码的容器之外,您的实例可能还包含以下容器:
容器和源代码 | 说明 |
---|---|
cloud-sql | 确保 Cloud SQL 实例连接的安全。 |
fluentd_logger | Logging 代理。 |
nginx_proxy | 向应用发送代理请求。 |
opentelemetry-collector | 接收、处理和导出遥测数据。 |
stackdriver-monitoring-agent | 收集、存储和监控系统信息。 |
请注意,这些 sidecar 容器可能会有更改,恕不另行通知。