SuperAPI AI 工具集

interactive-tpch-dashboard

部署与运维

查看项目

更新于 10-21 12:53

技能介绍

用途

本技能引导用户将 TPC-H 交互式仪表盘(FastAPI + Chart.js)以及 Locust 负载测试部署到 Snowpark Container Services(SPCS)。仅在用户明确要求部署、更新或管理 TPC-H 仪表盘时使用。

前置条件

  • 已安装 uv(Python 包运行器)
  • 已在 ~/.snowflake/connections.toml 中配置 Snowflake 连接
  • 拥有创建计算池和服务权限的角色(例如 SYSADMIN 或 ACCOUNTADMIN)
  • 已安装 Docker
  • 已设置好 TPC-H 表(需先运行 interactive-tpch-benchmark 技能的 setup)

工作流程

步骤 1:检测意图

询问用户想要执行的操作:

  • 部署仪表盘 — 将 FastAPI 仪表盘 + Locust 负载测试部署到 SPCS
  • 检查状态 — 显示 SPCS 服务状态和入口 URL
  • 更新 — 在不更改 URL 的情况下重新构建并重新部署
  • 拆除 — 移除 SPCS 服务和计算池

然后路由到对应部分。

部署仪表盘到 SPCS

目标:将 FastAPI + Chart.js 仪表盘和 Locust 负载测试部署到 Snowpark Container Services。

操作:

  1. 确保 tpc-h-sample-dashboard/ 中存在 .env:
cp tpc-h-sample-dashboard/.env.example tpc-h-sample-dashboard/.env
  1. 向用户询问:
  • CONNECTION_NAME — Snowflake 连接
  • SOLUTION_NAME — 与 TPC-H 设置时使用的相同(默认:IW_TPCH)
  • DEFAULT_SCALE — 仪表盘查询的规模
  1. 用这些值更新 tpc-h-sample-dashboard/.env。

  2. 确保 tpc-h-sample-dashboard/spcs/config.env 存在(若缺失则从模板创建):

cp tpc-h-sample-dashboard/spcs/config.env.template tpc-h-sample-dashboard/spcs/config.env

然后检查关键设置:

  • CONNECTION — 用于 SPCS 部署的 Snowflake 连接
  • ROLE — 用于创建 SPCS 对象的角色(默认:ACCOUNTADMIN)
  • DEPLOY_WAREHOUSE — 部署 SQL 会话使用的仓库
  • SOLUTION_NAME — 必须与 tpc-h-sample-dashboard/.env 中的值一致
  • DEFAULT_SCALE — 必须与 tpc-h-sample-dashboard/.env 中的规模一致
  1. 创建反规范化仪表盘表:
cd <REPO_ROOT>/tpc-h-sample-dashboard/spcs && ./deploy.sh sql
  1. 部署 SPCS 服务(构建 Docker 镜像、推送、创建计算池和服务):
cd <REPO_ROOT>/tpc-h-sample-dashboard/spcs && ./deploy.sh services

部署的服务:

  • DASHBOARD — 浏览器 UI + API(dashboard 计算池)
  • DASHBOARD_API_LOCUST — 用于负载测试的隔离 API 副本(locust 计算池)
  • DASHBOARD_LOCUST — Locust 负载生成器(locust 计算池)

部署后:脚本会打印入口 URL。在浏览器中打开仪表盘 URL(首次访问会提示 Snowflake 登录)。

检查状态

cd <REPO_ROOT>/tpc-h-sample-dashboard/spcs && ./status.sh

选项:

  • ./status.sh --wait — 轮询直到所有服务就绪
  • ./status.sh --urls-only — 仅打印入口 URL

更新仪表盘(重新构建但不更改 URL)

cd <REPO_ROOT>/tpc-h-sample-dashboard/spcs && ./update.sh

拆除

SPCS 服务(删除服务、计算池、镜像仓库):

cd <REPO_ROOT>/tpc-h-sample-dashboard/spcs && ./teardown.sh

停止点

  • 检测意图后 — 在继续前确认操作
  • 收集配置值后 — 在运行 setup 前确认 .env 内容
  • 运行 deploy.sh services 前 — 警告这会构建 Docker 镜像并创建计算池(有成本影响)
  • 拆除前 — 确认要删除哪些资源

故障排除

问题 解决方案
uv: command not found 安装 uv:curl -LsSf https://astral.sh/uv/install.sh | sh
Docker 构建失败 确保 Docker 守护进程正在运行;检查 docker info
服务卡在 PENDING 运行 ./logs.sh 检查容器日志
服务 FAILED 检查 ./logs.sh;常见原因是缺少授权或网络规则
连接错误 验证连接名称存在于 ~/.snowflake/connections.toml

输出

运行中的 SPCS 服务,提供仪表盘和 Locust UI 的公共入口 URL。