本页面介绍了在遇到 Gemini Enterprise Agent Platform Workbench 使用问题时可能有帮助的问题排查步骤。
如需使用 Gemini Enterprise Agent Platform 的其他组件,另请参阅排查 Agent Platform 问题。
若要过滤此页面的内容,请点击一个主题:
Agent Platform Workbench 实例
本部分介绍 Agent Platform Workbench 实例的问题排查步骤。
使用 AI 工具进行问题排查
本部分讨论了如何使用 AI 工具进行问题排查。
使用 Cloud Assist 调查进行问题排查
将 Agent Platform 与其他 Google Cloud 产品相关联时,您可能会发现 Gemini Cloud Assist 调查对排查集成问题很有帮助。它还可以加快实例本身的问题排查速度。借助 Gemini Cloud Assist,您可以从实例生成的指标和日志中获取分析洞见。
- 停止实例,然后点击
View in Compute Engine链接。 - 安装 Ops Agent(推荐)。这需要几分钟时间
- 添加一个自定义元数据字段
notebook-enable-debug并将其设置为true - 重启实例并重现问题。
- 启用并配置 Cloud Assist Investigations API。
- 创建一项新调查,并使用自然语言提示详细描述该问题。
- 在您输入内容时,会出现一个对话框,其中列出了建议添加到调查中的资源。查看此列表,并确保将该实例及受支持产品列表中的任何其他资源一并添加为资源
- 开始调查并查看结果。
使用 Gemini CLI 排查诊断文件方面的问题
您可以使用 Cloud Assist 调查的结果,对实例中的诊断文件进行进一步的 AI 驱动型调查。
- 运行诊断工具,并指定一个 Cloud Storage 存储桶来上传结果。
sudo /opt/deeplearning/bin/diagnostic_tool.sh [--repair] [--bucket=$BUCKET]
- 将诊断文件下载到您的工作站,然后安装并配置 Gemini CLI。
- 启动应用,然后描述您的问题。在上下文中包含来自 Cloud Assist 调查的假设。使用自然语言提示让模型通过读取诊断文件的内容来扩展调查。
连接到 JupyterLab 并将其打开
本部分介绍连接和打开 JupyterLab 的问题排查步骤。
点击“打开 JupyterLab”后没有任何反应
问题
点击打开 JupyterLab 时,没有任何反应。
解决方案
确认您的浏览器未阻止自动打开新标签页。 JupyterLab 会在新的浏览器标签页中打开。
无法在 Agent Platform Workbench 实例中访问终端
问题
如果您无法访问终端或在启动器中找不到终端窗口,则可能是因为 Agent Platform Workbench 实例未启用终端访问权限。
解决方案
您必须创建新的 Agent Platform Workbench 实例并启用终端访问权限选项。实例创建完成后,此选项便无法更改。
打开 JupyterLab 时出现 502 错误
问题
502 错误可能意味着您的 Agent Platform Workbench 实例尚未准备就绪。
解决方案
请等待几分钟,刷新 Google Cloud 控制台浏览器标签页,然后重试。
笔记本无响应
问题
您的 Agent Platform Workbench 实例未在运行单元或似乎被冻结。
解决方案
首先尝试重启内核,方法是点击顶部菜单中的内核,然后点击重启内核。如果这样不起作用,您可以尝试以下操作:
- 刷新 JupyterLab 浏览器页面。系统不会保存未保存的单元输出,因此您必须再次运行这些单元才能重新生成输出。
- 重置实例。
无法使用 SSH 连接到 Agent Platform Workbench 实例
问题
您无法通过终端窗口使用 SSH 连接到您的实例。
Agent Platform Workbench 实例使用 OS Login 启用 SSH 访问权限。创建实例时,Agent Platform Workbench 在默认情况下通过将元数据键 enable-oslogin 设置为 TRUE 来启用 OS Login。如果您无法使用 SSH 连接到您的实例,则可能需要将此元数据键设置为 TRUE。
解决方案
不支持使用 Google Cloud 控制台连接到 Agent Platform Workbench 实例。如果您无法通过终端窗口使用 SSH 连接到您的实例,请参阅以下内容:
如需将元数据键 enable-oslogin 设置为 TRUE,请使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Agent Platform SDK 中的 gcloud workbench instances update 命令。
超出 GPU 配额
问题
您无法使用 GPU 创建 Agent Platform Workbench 实例。
解决方案
如需确定您项目的可用 GPU 数量,请查看配额页面。如果配额页面上未列出 GPU,或者您需要额外的 GPU 配额,您可以申请增加 Compute Engine GPU 配额。请参阅申请更高配额限制。
创建 Agent Platform Workbench 实例
本部分介绍如何排查与创建 Agent Platform Workbench 实例相关的问题。
实例无限期处于待处理状态或卡在预配状态
问题
创建 Agent Platform Workbench 实例后,该实例会无限期地处于待处理状态。串行日志中可能会显示如下错误:
Could not resolve host: notebooks.googleapis.com
如果您的实例卡在预配状态,可能是因为您的实例具有无效的专用网络配置。
解决方案
请按照实例日志显示连接错误或超时错误部分中的步骤操作。
无法在共享 VPC 网络中创建实例
问题
尝试在共享 VPC 网络中创建实例会导致如下错误消息:
Required 'compute.subnetworks.use' permission for 'projects/network-administration/regions/us-central1/subnetworks/v'
解决方案
问题在于,Notebooks 服务账号在没有正确权限的情况下尝试创建实例。
如需确保笔记本服务账号拥有必要的权限,以便在共享 VPC 网络中创建 Agent Platform Workbench 实例,请让管理员为宿主项目中的笔记本服务账号授予 Compute Network User 角色 (roles/compute.networkUser) IAM 角色。
此预定义角色包含确保 Notebooks Service Account 可以在共享 VPC 网络中创建 Agent Platform Workbench 实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需确保 Notebooks Service Account 可以在共享 VPC 网络中创建 Agent Platform Workbench 实例,需要以下权限:
-
使用子网的权限:
compute.subnetworks.use
您的管理员也可以使用自定义角色或其他预定义角色为 Notebooks Service Account 授予这些权限。
无法使用自定义容器创建 Agent Platform Workbench 实例
问题
在 Google Cloud 控制台中创建 Agent Platform Workbench 实例时,无法选择使用自定义容器。
解决方案
不支持将自定义容器添加到 Agent Platform Workbench 实例,并且您无法使用 Google Cloud 控制台添加自定义容器。
建议添加 conda 环境,而不是使用自定义容器。
您可以使用 Notebooks API 将自定义容器添加到 Agent Platform Workbench 实例,但此功能不受支持。
无法使用 Gemini CLI
问题
Gemini CLI 磁贴位于 JupyterLab 启动器中,并且可以成功打开,但 Gemini 不会响应提示。
解决方案
管理员可能已禁止访问 Gemini CLI。请参阅控制对 Gemini CLI 的访问权限。
未显示“装载共享存储空间”按钮
问题
装载共享存储空间按钮不在 JupyterLab 界面的文件浏览器标签页中。
解决方案
如需让装载共享存储空间按钮显示在 Agent Platform Workbench 实例的 JupyterLab 界面中,您必须拥有 storage.buckets.list 权限。请让您的管理员为 Agent Platform Workbench 实例的服务账号授予项目的 storage.buckets.list 权限。
使用 Managed Service for Apache Spark 时出现 599 错误
问题
尝试创建启用了 Managed Service for Apache Spark 的实例会导致如下错误消息:
HTTP 599: Unknown (Error from Gateway: [Timeout while connecting] Exception while attempting to connect to Gateway server url. Ensure gateway url is valid and the Gateway instance is running.)
解决方案
在 Cloud DNS 配置中,为 *.googleusercontent.com 网域添加 Cloud DNS 条目。
无法安装第三方 JupyterLab 扩展程序
问题
尝试安装第三方 JupyterLab 扩展程序会导致 Error: 500 消息。
解决方案
Agent Platform Workbench 实例不支持第三方 JupyterLab 扩展程序。
无法修改底层虚拟机
问题
如果尝试修改 Agent Platform Workbench 实例的底层虚拟机,可能会收到如下所示的错误消息:
Current principal doesn't have permission to mutate this resource.
解决方案
发生此错误是因为您无法使用 Google Cloud 控制台或 Compute Engine API 修改实例的底层虚拟机。
如需修改 Agent Platform Workbench 实例的底层虚拟机,请使用 Notebooks API 中的 projects.locations.instances.patch 方法或 Agent Platform SDK 中的 gcloud workbench instances update命令
添加 conda 环境后,pip 软件包不可用
问题
添加基于 conda 的内核后,pip 软件包将不可用。
解决方案
如需解决此问题,请参阅添加 conda 环境并尝试以下操作:
检查您使用的是否是
DL_ANACONDA_ENV_HOME变量,且该变量包含您的环境名称。检查
pip是否位于类似于opt/conda/envs/ENVIRONMENT/bin/pip的路径中。您可以运行which pip命令来获取路径。
无法访问或复制具有单个用户访问权限的实例的数据
问题
无法访问具有单个用户访问权限的实例上的数据。
对于设置了单个用户访问权限的 Agent Platform Workbench 实例,只有指定的单个用户(所有者)可以访问实例上的数据。
解决方案
如需访问或复制您不是所有者的实例上的数据,请创建支持请求。
意外关停
问题
您的 Agent Platform Workbench 实例意外关停。
解决方案
如果您的实例意外关停,这可能是因为空闲关停已启动。
如果您启用了空闲关停,那么您的实例在指定时间段内没有内核活动时将关停。例如,运行单元或将新输出显示到笔记本是重置空闲超时计时器的活动。CPU 使用率不会重置空闲超时计时器。
实例日志显示连接或超时错误
问题
您的 Agent Platform Workbench 实例的日志显示连接或超时错误。
解决方案
如果您在实例日志中发现连接或超时错误,请确保 Jupyter 服务器在端口 8080 上运行。按照验证 Jupyter Internal API 是否处于活跃状态部分中的步骤操作。
如果您已停用 External IP 且使用的是专用 VPC 网络,请确保您也遵循了网络配置选项文档。请考虑以下事项:
您必须在 VPC 主机项目中实例所在的区域内,为所选子网启用专用 Google 访问通道。如需详细了解如何配置专用 Google 访问通道,请参阅专用 Google 访问通道文档。
如果您使用的是 Cloud DNS,则实例必须能够解析网络配置选项文档中指定的所需 Cloud DNS 网域。如需验证这一点,请按照“验证实例是否可以解析所需的 DNS 域名”部分中的步骤操作。
实例日志显示“无法联系 Jupyter API”“ReadTimeoutError”
问题
您的 Agent Platform Workbench 实例日志显示以下错误:
notebooks_collection_agent. Unable to contact Jupyter API:
HTTPConnectionPool(host=\'127.0.0.1\', port=8080):
Max retries exceeded ReadTimeoutError(\"HTTPConnectionPool(host=\'127.0.0.1\', port=8080
解决方案
请按照实例日志显示连接错误或超时错误部分中的步骤操作。您还可以尝试修改 Notebooks Collection Agent 脚本,将 HTTP_TIMEOUT_SESSION 更改为更大的值(例如 60),以帮助验证请求是否因调用响应时间过长或无法访问请求的网址而失败。
docker0 地址与 VPC 地址分配冲突
问题
默认情况下,系统会使用 IP 地址 172.17.0.1/16 创建 docker0 接口。这可能会与 VPC 网络中的 IP 地址分配发生冲突,导致实例无法连接到具有 172.17.0.1/16 地址的其他端点。
解决方案
您可以使用以下启动后脚本并将启动后脚本行为设置为 run_once,强制使用与 VPC 网络不冲突的 IP 地址创建 docker0 接口。
#!/bin/bash # Wait for Docker to be fully started while ! systemctl is-active docker; do sleep 1 done # Stop the Docker service systemctl stop docker # Modify /etc/docker/daemon.json cat </etc/docker/daemon.json { "bip": "CUSTOM_DOCKER_IP/16" } EOF # Restart the Docker service systemctl start docker
指定的预留不存在
问题
实例创建操作导致 Specified reservations do
not exist 错误消息。操作的输出可能类似于以下内容:
{ "name": "projects/PROJECT/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.notebooks.v2.OperationMetadata", "createTime": "2025-01-01T01:00:01.000000000Z", "endTime": "2025-01-01T01:00:01.000000000Z", "target": "projects/PROJECT/locations/LOCATION/instances/INSTANCE_NAME", "verb": "create", "requestedCancellation": false, "apiVersion": "v2", "endpoint": "CreateInstance" }, "done": true, "error": { "code": 3, "message": "Invalid value for field 'resource.reservationAffinity': '{ \"consumeReservationType\": \"SPECIFIC_ALLOCATION\", \"key\": \"compute.googleapis.com/reservation-name...'. Specified reservations [projects/PROJECT/zones/ZONE/futureReservations/RESERVATION_NAME] do not exist.", "details": [ { "@type": "type.googleapis.com/google.rpc.RequestInfo", "requestId": "REQUEST_ID" } ] } }
解决方案
部分 Compute Engine 机器类型在创建时需要设置额外的参数,例如本地固态硬盘数量或满足最低 CPU 要求的平台。实例规范必须包含这些额外的字段。
- Agent Platform Workbench 实例默认使用自动满足最低 CPU 要求的平台。如果您的预留设置了特定平台,则需要在创建 Agent Platform Workbench 实例时相应地设置
min_cpu_platform。 - Agent Platform Workbench 实例始终会将本地固态硬盘的数量设置为与机器类型相应的默认值。例如,
a2-ultragpu-1g始终有 1 个本地固态硬盘,而a2-highgpu-1g始终有 0 个本地固态硬盘。创建用于 Agent Platform Workbench 实例的预留时,您需要将本地固态硬盘保留为其默认值。
实用流程
本部分介绍了一些可能对您有帮助的流程。
使用 SSH 连接到 Agent Platform Workbench 实例
通过在 Cloud Shell 中或安装了 Google Cloud CLI 的任何环境中输入以下命令,使用 ssh 连接到您的实例。
gcloud compute ssh --project PROJECT_ID \
--zone ZONE \
INSTANCE_NAME -- -L 8080:localhost:8080
替换以下内容:
PROJECT_ID:您的项目 IDZONE:实例所在的 Google Cloud 可用区INSTANCE_NAME:实例的名称。
您还可以打开实例的 Compute Engine 详情页面,然后点击 SSH 按钮,以连接到您的实例。
向“反向代理”服务器重新注册
如需向内部反向代理服务器重新注册 Agent Platform Workbench 实例,您可以从“实例”页面停止和启动虚拟机,或者通过 SSH 连接到 Agent Platform Workbench 实例,然后输入:
cd /opt/deeplearning/bin sudo ./attempt-register-vm-on-proxy.sh
验证 Docker 服务状态
如需验证 Docker 服务状态,您可以使用 ssh 连接到 Agent Platform Workbench 实例,然后输入:
sudo service docker status
验证“反向代理”代理正在运行
如需验证笔记本“反向代理”代理是否正在运行,请通过 SSH 连接到 Agent Platform Workbench 实例,然后输入:
# Confirm Inverting Proxy agent Docker container is running (proxy-agent) sudo docker ps # Verify State.Status is running and State.Running is true. sudo docker inspect proxy-agent # Grab logs sudo docker logs proxy-agent
验证 Jupyter 服务状态并收集日志
如需验证 Jupyter 服务状态,您可以使用 ssh 连接到 Agent Platform Workbench 实例,然后输入:
sudo service jupyter status
如需收集 Jupyter 服务日志,请执行以下操作:
sudo journalctl -u jupyter.service --no-pager
验证 Jupyter Internal API 是否处于活跃状态
Jupyter API 应始终在端口 8080 上运行。您可以通过检查实例的 syslog 是否包含类似以下内容的条目来验证这一点:
Jupyter Server ... running at: http://localhost:8080
如需验证 Jupyter Internal API 是否处于活跃状态,您还可以通过 SSH 连接到 Agent Platform Workbench 实例,然后输入:
curl http://127.0.0.1:8080/api/kernelspecs
如果请求花费的时间过长,您还可以衡量 API 响应所用的时间:
time curl -V http://127.0.0.1:8080/api/status
time curl -V http://127.0.0.1:8080/api/kernels
time curl -V http://127.0.0.1:8080/api/connections
如需在 Agent Platform Workbench 实例中运行这些命令,请打开 JupyterLab 并创建一个新终端。
重启 Docker 服务
如需重启 Docker 服务,您可以从“实例”页面停止并启动虚拟机,或者通过 SSH 连接到 Agent Platform Workbench 实例,然后输入以下命令:
sudo service docker restart
重启“反向代理”代理
如需重启“反向代理”代理,您可以从“实例”页面停止和启动虚拟机,或者通过 SSH 连接到 Agent Platform Workbench 实例,然后输入:
sudo docker restart proxy-agent
重启 Jupyter 服务
如需重启 Jupyter 服务,您可以从“实例”页面停止并启动虚拟机,或者通过 SSH 连接到 Agent Platform Workbench 实例,然后输入以下命令:
sudo service jupyter restart
重启 Notebooks Collection Agent
Notebooks Collection Agent 服务在后台运行 Python 进程,以验证 Agent Platform Workbench 实例的核心服务的状态。
如需重启 Notebooks Collection Agent 服务,您可以从 Google Cloud 控制台停止并重新启动虚拟机;也可以通过 SSH 连接到 Agent Platform Workbench 实例,然后输入以下命令:
sudo systemctl stop notebooks-collection-agent.service
后跟:
sudo systemctl start notebooks-collection-agent.service
如需在 Agent Platform Workbench 实例中运行这些命令,请打开 JupyterLab 并创建一个新终端。
修改 Notebooks Collection Agent 脚本
如需访问和修改脚本,请在我们的实例中打开一个终端,或使用 SSH 连接到 Agent Platform Workbench 实例,然后输入以下命令:
nano /opt/deeplearning/bin/notebooks_collection_agent.py
修改文件后,请务必保存。
然后,您必须重启 Notebooks Collection Agent 服务。
验证实例是否可以解析所需的 DNS 网域
如需验证实例是否可以解析所需的 DNS 域名,您可以使用 SSH 连接到 Agent Platform Workbench 实例,然后输入:
host notebooks.googleapis.com
host *.notebooks.cloud.google.com
host *.notebooks.googleusercontent.com
host *.kernels.googleusercontent.com
或者:
curl --silent --output /dev/null "https://notebooks.cloud.google.com"; echo $?
如果实例已启用 Managed Service for Apache Spark,您可以通过运行以下命令来验证该实例是否解析了 *.kernels.googleusercontent.com:
curl --verbose -H "Authorization: Bearer $(gcloud auth print-access-token)" https://${PROJECT_NUMBER}-dot-${REGION}.kernels.googleusercontent.com/api/kernelspecs | jq .
如需在 Agent Platform Workbench 实例中运行这些命令,请打开 JupyterLab 并创建一个新终端。
创建实例上的用户数据的副本
如需将实例用户数据的副本存储在 Cloud Storage 中,请完成以下步骤:
创建 Cloud Storage 存储桶(可选)
在实例所在的项目中,创建一个 Cloud Storage 存储桶以存储用户数据。如果您已有 Cloud Storage 存储桶,请跳过此步骤。
-
创建 Cloud Storage 存储桶:
将gcloud storage buckets create gs://BUCKET_NAME
BUCKET_NAME替换为符合存储桶命名要求的存储桶名称。
复制用户数据
在实例的 JupyterLab 界面中,选择文件 > 新建 > 终端,以打开终端窗口。对于 Agent Platform Workbench 实例,您可以使用 SSH 连接到实例的终端。
使用 gcloud CLI 将您的用户数据复制到 Cloud Storage 存储桶。以下示例命令会将实例的
/home/jupyter/目录中的所有文件复制到 Cloud Storage 存储桶中的目录。gcloud storage cp /home/jupyter/* gs://BUCKET_NAMEPATH --recursive
替换以下内容:
BUCKET_NAME:Cloud Storage 存储桶的名称。PATH:您要将文件复制到的目录的路径,例如/copy/jupyter/
使用 gcpdiag 调查实例在预配过程中卡住的情况
gcpdiag 是一种开源工具,不是官方支持的 Google Cloud 产品。您可以使用 gcpdiag 工具来帮助识别和修复 Google Cloud项目问题。如需了解详情,请参阅 GitHub 上的 gcpdiag 项目。
gcpdiag 运行手册用于调查 Agent Platform Workbench 实例卡在预配状态的潜在原因,包括以下方面:
- 状态:检查实例的当前状态,确保其处于预配状态,而不是已停止或处于活跃状态。
- 实例的 Compute Engine 虚拟机启动磁盘映像:检查实例是否是使用自定义容器、官方
workbench-instances映像、Deep Learning VM Image 或可能导致实例卡在配置状态的不受支持的映像创建的。 - 自定义脚本:检查实例是否正在使用自定义启动或启动后脚本,这些脚本会更改默认的 Jupyter 端口或破坏依赖关系,从而可能导致实例卡在配置状态。
- 环境版本:通过检查实例的可升级性来检查其是否使用最新的环境版本。较低版本可能会导致实例卡在预配状态。
- 实例的 Compute Engine 虚拟机性能:检查虚拟机的当前性能,确保其不会因 CPU 使用率过高、内存不足或可能中断正常操作的磁盘空间问题而受到影响。
- 实例的 Compute Engine 串行端口或系统日志记录:检查实例是否有串行端口日志,并分析这些日志以确保 Jupyter 在端口
127.0.0.1:8080上运行。 - 实例的 Compute Engine SSH 和终端访问权限:检查实例的 Compute Engine 虚拟机是否正在运行,以便用户可以通过 SSH 并打开终端来验证“home/jupyter”中的空间使用率是否低于 85%。如果没有剩余空间,可能会导致实例卡在预配状态。
- 外部 IP 已关闭:检查是否已关闭外部 IP 访问权限。网络配置不正确可能会导致实例卡在预配状态。
Docker
您可以使用封装容器运行 gcpdiag,以在 Docker 容器中启动 gcpdiag。必须安装 Docker 或 Podman。
- 在本地工作站上复制并运行以下命令。
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- 执行
gcpdiag命令:./gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \ --parameter project_id=PROJECT_ID \ --parameter instance_name=INSTANCE_NAME \ --parameter zone=ZONE
查看此 Runbook 的可用参数。
替换以下内容:
- PROJECT_ID:资源所在项目的 ID。
- INSTANCE_NAME:项目中目标 Agent Platform Workbench 实例的名称。
- ZONE:目标 Agent Platform Workbench 实例所在的可用区。
实用标志:
--universe-domain:如果适用,则为托管资源的可信合作伙伴主权云网域--parameter或-p:Runbook 参数
如需查看所有 gcpdiag 工具标志的列表和说明,请参阅 gcpdiag 使用说明。
将服务账号角色与 Agent Platform 搭配使用时出现权限错误
问题
将服务账号角色与 Agent Platform 搭配使用时,收到一般性权限错误。
这些错误可能会显示在 Cloud Logging 中的产品组件日志或审核日志中。它们也可能会出现在以任意形式组合的各个受影响项目中。
这些问题可能由以下一个或两个原因引起:
本应使用
Service Account User角色的情况下使用了Service Account Token Creator角色,反之亦然。这两个角色会授予对服务账号的不同权限,因此不能互换。如需了解Service Account Token Creator和Service Account User角色之间的区别,请参阅服务账号角色。您向某个服务账号授予了跨多个项目的权限,而默认情况下这是不允许的。
解决方案
如需解决此问题,请尝试以下一项或多项操作:
确定是需要
Service Account Token Creator角色还是Service Account User角色。如需了解详情,请参阅您在使用的 Agent Platform 服务的 IAM 文档,以及您在使用的任何其他产品集成的 IAM 文档。如果您向某个服务账号授予了跨多个项目的权限,请确保
iam.disableCrossProjectServiceAccountUsage未强制执行,以允许跨项目关联服务账号。为确保iam.disableCrossProjectServiceAccountUsage未强制执行,请运行以下命令:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=PROJECT_ID