调试实例

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

每次启用或停用调试模式时,Google Cloud 控制台中会显示“虚拟机实例调试启用/停用”(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. 停用对实例的调试,让其恢复正常运行。

了解常见容器

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

容器和源代码 说明
cloud-sql 确保 Cloud SQL 实例连接的安全。
fluentd_logger Logging 代理。
nginx_proxy 向应用发送代理请求。
opentelemetry-collector 接收、处理和导出遥测数据。
stackdriver-monitoring-agent 收集、存储和监控系统信息。

请注意,这些 sidecar 容器可能会有更改,恕不另行通知。