调试实例

您可以为虚拟机启用调试模式。在调试模式下,对项目具有 Owner、Editor 和 App Engine Admin 角色的主帐号拥有虚拟机的根目录访问权限。调试模式开启后,操作系统更新和安全补丁程序的自动发布会停用。但是,虚拟机仍然是负载均衡器池的一部分,并会继续接收外部请求。

每次启用或停用调试模式时,Google Cloud Console 中会显示“虚拟机实例调试启用/停用”(VM instance debugging enable/disable) 事件,并且该事件将记录在虚拟机的 /var/log/syslog.log 文件中。

启用和停用调试模式

您可以使用 gcloud 为实例启用和停用调试模式。 如需调试实例,您的角色必须包含 appengine.instances.enableDebug 权限。

如需在 gcloud 中启用和停用调试模式,请执行以下操作:

  1. 使用 gcloud app instances enable-debug 命令针对特定实例和版本调试虚拟机,如下所示:
    gcloud app --project PROJECT-ID instances enable-debug
    PROJECT-ID 替换为您自己的项目 ID,并按照提示指定要调试的实例版本。
  2. 调试完毕后,停用调试模式,如下所示:
    gcloud app --project PROJECT-ID instances disable-debug
    按照提示指定实例版本

停用调试模式后,虚拟机会停止,系统会启动您应用的新实例,该实例在处于初始状态的新虚拟机上运行。

连接到实例

控制台

如需在控制台中连接到实例,请执行以下操作:

  1. 访问您的项目的 Google Cloud 控制台实例页面:

    转到“实例”页面

  2. 点击包含要访问的实例的行最右侧的 SSH

    此操作将使实例进入调试模式,并在终端窗口中打开实例的 SSH 会话。

    您也可以从下拉列表中选择不同的选项以启动 SSH 会话。

  3. 此时,您已进入运行着多个容器的实例主机中。如需详细了解这些容器,请参阅下一部分的了解常见容器
  4. 在终端窗口中,列出实例中正在运行的容器:
    sudo docker ps
  5. sudo docker ps 命令的输出按行列出每个容器;找到包含您项目 ID 的行:这就是运行您代码的容器。请记下此容器的名称。
  6. 或者,通过调用以下命令,列出您应用的日志记录信息:
    sudo docker logs CONTAINER-NAME
  7. 在运行您代码的容器中启动 shell:
    sudo docker exec -it CONTAINER-NAME /bin/bash
  8. 调试完毕后,输入 exit 退出容器,然后再次输入 exit 退出 SSH 会话。
  9. 停用对实例的调试,让其恢复正常运行。

gcloud

如需使用 gcloud 连接到实例,请执行以下操作:

  1. 为实例启用调试模式后,请调用以下命令:
    gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION
  2. 此时,您已进入运行着多个容器的实例主机中。如需详细了解这些容器,请参阅下一部分的了解常见容器
  3. 在终端窗口中,列出实例中正在运行的容器:
    sudo docker ps
  4. sudo docker ps 命令的输出按行列出每个容器;找到包含您项目 ID 的行:这就是运行您代码的容器。请记下此容器的名称。
  5. 或者,通过调用以下命令,列出您应用的日志记录信息:
    sudo docker logs CONTAINER-NAME
  6. 在运行您代码的容器中启动 shell:
    docker exec -it CONTAINER-NAME /bin/bash
  7. 调试完毕后,输入 exit 退出容器,然后再次输入 exit 退出 SSH 会话。
  8. 停用对实例的调试,让其恢复正常运行。

了解常见容器

除了运行应用代码的容器之外,您的实例可能还包含以下容器:

容器和源代码 开源组织 说明
fluentd_logger fluentd.org/ Logging 代理。
memcache_proxy memcache proxy open source 为应用提供 Memcache 功能。
nginx_proxy nginx.org 向应用发送代理请求。