一键启动 cwc-workshops 事故仪表盘:Streamlit+Mock 数据全流程指南
【免费下载链接】cwc-workshops项目地址: https://gitcode.com/GitHub_Trending/cw/cwc-workshops
cwc-workshops 仓库里的ship-your-first-managed-agent工作区,是一套基于Streamlit + Mock 数据的电商事故仪表盘(代号 Incident-2277)。Metrics、Logs、Deploys 三大页面开箱即用,右侧还挂着一个离线的 SRE Agent 聊天面板。本文带你一键启动这套事故仪表盘,走通从克隆、装依赖到streamlit run的完整流程。
项目速览:这套事故仪表盘是什么
想象一个真实的 2 点场景:PagerDuty 报警,checkout 服务 P99 延迟飙到基线的10 倍。你得打开仪表盘、grep 日志、翻部署记录,反复猜测——40 分钟后才发现是有人上线了一条N+1 查询。
这套仪表盘就是为此而生:
- 🖥️开箱即跑:Metrics / Logs / Deploys 三个页面全部由 Mock 数据驱动,不需要任何真实后端
- 🧪自带"假故障":内置一场真实感十足的线上事故,证据散落在日志、指标、部署记录里
- 🤖预留 Agent 位:每个页面右侧都有 SRE Agent 聊天面板(初始离线),补全 7 个小函数即可让它在线排查
💡 想快速理解全貌,先看这份说明:ship-your-first-managed-agent/README.md
快速上手前的 3 项准备
启动前,只需确认三样东西:
| # | 准备项 | 要求 |
|---|---|---|
| 1 | Python 版本 | 3.10+ |
| 2 | 依赖包 | Streamlit / Plotly / anthropic / python-dotenv |
| 3 | 环境变量 | .env中配置ANTHROPIC_API_KEY |
依赖清单见 ship-your-first-managed-agent/requirements.txt,核心依赖一览:
| 依赖 | 用途 |
|---|---|
streamlit | 渲染仪表盘四大页面 |
plotly | 绘制 Metrics 时序曲线 |
anthropic | 驱动 SRE Agent(离线阶段可不用) |
python-dotenv | 读取.env中的 API Key |
⚠️ 只跑仪表盘看 Mock 数据时,无需联网调 Agent,API Key 可留空;只有接入聊天面板才需要。
一键启动:4 步跑起 Streamlit 事故仪表盘
把下面这段复制进终端,依次执行即可:
git clone https://gitcode.com/GitHub_Trending/cw/cwc-workshops cd cwc-workshops/ship-your-first-managed-agent python -m venv .venv source .venv/bin/activate # Windows 用 .venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # 然后把你的 ANTHROPIC_API_KEY 填进 .env streamlit run app.py✅ 启动后浏览器打开localhost:8501,即可看到仪表盘主界面。
- 📄 入口文件:ship-your-first-managed-agent/app.py
- 🧩 首次运行会自动生成 7 万行的
data/app.log日志夹具(约 0.5 秒,结果确定),之后再也不会重复生成
页面导览:四大页面分别看什么
仪表盘通过侧边导航切换 4 个页面,每个页面右侧都挂着聊天面板:
| 页面 | 看什么 | 对应文件 |
|---|---|---|
| Overview | 事故总览:P99 延迟、错误率、DB 池、持续时长 | app.py |
| Metrics | P99 延迟 / 错误率 / DB 池三条时序曲线(带部署标记线) | pages/1_Metrics.py |
| Logs | 70 万行级 JSON 日志流式过滤(按 service / level / 行数) | pages/2_Logs.py |
| Deploys | 近 6 小时部署列表 + 提交 diff 查看 | pages/3_Deploys.py |
在Metrics页面里,三条曲线会在部署时刻(a3f9c21)出现一条虚线标注,直观呈现"上线 → 指标跳水"的因果关系;Logs页面则支持按服务、级别、行数三级过滤,逐行流式加载。
Mock 数据拆解:一场"假故障"是怎么演出来的
data/目录内置了一整套真实感十足的事故证据链:
- 📉14:31:18 UTC,提交
a3f9c21部署到 checkout 服务,把批量查询改成了逐行循环 - 🚀 几分钟后 P99 延迟从65 ms飙升到3,600 ms,DB 连接池打满,20% 的 checkout 开始失败
- 📂 证据分散在四类文件,Agent 需要把它们关联起来才能定位根因
| 文件 | 作用 |
|---|---|
data/app.log | 7 万行 JSON 日志,Agent 需在沙箱里 grep 分析 |
data/metrics.json | 各服务时序指标(延迟 / 错误率 / DB 池) |
data/deploys.json | 近 6 小时部署记录 |
data/diff.txt | 问题提交的代码 diff |
🎯 关键点:
get_metrics/get_recent_deploys/get_diff三个工具跑在你本机(读 Mock JSON),而非云端——这正是"本地工具 + 云端 Agent"混合架构的精髓。
从离线到在线:SRE Agent 的 7 步
打开 ship-your-first-managed-agent/agent.py,里面有 7 个待实现的函数(每个只对应一次Managed Agents API 调用)。补全后,聊天面板就逐步在线:
| # | 函数 | 作用 |
|---|---|---|
| 1 | setup_agent() | 创建 Agent(模型 + 系统提示 + 工具) |
| 2 | setup_environment() | 创建云端沙箱环境 |
| 3 | upload_log() | 上传日志到 Files API |
| 4 | start_session() | 绑定 Agent + 环境,挂载日志 |
| 5 | stream_reply() | 打开事件流,发送消息并流式返回 |
| 6 | handle_tool() | 本地执行工具,读data/*.json |
| 7 | delete_session() | 清理云端会话资源 |
全部加起来约34 行。系统提示、工具 schema、聊天 UI、会话选择器都已预置在 ship-your-first-managed-agent/provided.py。卡住了?参考 ship-your-first-managed-agent/agent_complete.py。
核心文件在哪里:目录速览
| 路径 | 说明 |
|---|---|
| agent.py | 唯一需要编辑的文件(7 个函数) |
| agent_complete.py | 参考实现 |
| provided.py | 系统提示 / 工具 schema / 聊天 UI |
| e2e.py | 全流程无头测试 |
| app.py | 事故总览入口 |
| ui.py + assets/style.css | 深色主题样式 |
| data/ | 日志 + 指标 + 部署 + diff 夹具 |
常见问题 FAQ
Q1:启动报错说找不到 API Key?只跑仪表盘看 Mock 数据不需要 Key;若想接入 SRE Agent,把ANTHROPIC_API_KEY填进.env再重启即可。
Q2:data/app.log生成失败怎么办?按页面提示手动执行python data/generate_log.py,然后刷新页面。
Q3:聊天面板一直显示"agent offline"?这是正常现象——对应函数还没实现。补全 agent.py 中相应函数后,面板会逐步点亮。
Q4:Windows 下激活虚拟环境?用.venv\Scripts\activate代替source .venv/bin/activate。
写在最后
这套cwc-workshops 事故仪表盘用 Mock 数据把"线上事故排查"浓缩成了一个可本地一键启动的 Streamlit 应用:四大页面开箱即用,7 万行日志、指标、部署、diff 一应俱全。补上 7 个小函数,你还能让 SRE Agent 在线帮你 grep 日志、关联时间戳、直接点出有问题的提交——这正是从"手动排查 40 分钟"到"Agent 自动定位"的完整闭环。🚀
【免费下载链接】cwc-workshops项目地址: https://gitcode.com/GitHub_Trending/cw/cwc-workshops
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考