实时监控开源 AI/ML 模型调用状态的可视化仪表板

Watch-System 是一套针对开源 AI/ML 模型(如 LLaMA2、Mistral、CodeLlama、Phi-2、Gemma、Qwen、DeepSeek 等)的实时监控平台。系统通过模拟真实 API 调用,持续采集请求量、响应时间、Token 用量、错误率等核心指标,并以美观的 Grafana 风格仪表板实时展示。
┌─────────────────────────────────────────────────┐
│ 浏览器 (前端) │
│ ┌───────────────────────────────────────────┐ │
│ │ index.html (Chart.js + Socket.IO Client) │ │
│ │ - 实时图表 - 模型卡片 - 告警面板 │ │
│ └──────────────────┬────────────────────────┘ │
└─────────────────────┼───────────────────────────┘
│ WebSocket / HTTP
┌─────────────────────▼───────────────────────────┐
│ Node.js 后端 (:3001) │
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ Express │ │Socket.IO │ │ REST API │ │
│ │ Server │ │ Server │ │ /api/* │ │
│ └────┬─────┘ └────┬─────┘ └──────┬────────┘ │
│ │ │ │ │
│ ┌────▼──────────────▼───────────────▼────────┐ │
│ │ Services Layer │ │
│ │ ┌─────────────┐ ┌──────────────────┐ │ │
│ │ │ Simulator │ │ AlertManager │ │ │
│ │ │ (模型模拟器) │ │ (告警管理器) │ │ │
│ │ └──────┬──────┘ └────────┬─────────┘ │ │
│ └─────────┼───────────────────┼─────────────┘ │
│ │ │ │
│ ┌─────────▼───────────────────▼─────────────┐ │
│ │ SQLite Database (better-sqlite3) │ │
│ │ requests 表 | models 表 │ │
│ └────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
| 功能 |
说明 |
| 🔴 实时监控 |
通过 Socket.IO WebSocket 推送,毫秒级延迟更新 |
| 📊 多维图表 |
请求量趋势折线图、请求分布饼图、响应时间柱状图 |
| 🤖 多模型支持 |
同时监控 8 个主流开源模型 |
| 🚨 智能告警 |
错误率超阈值、响应过慢、流量突刺自动告警 |
| 📝 请求日志 |
滚动显示最新 20 条请求详情 |
| 🌙 暗色主题 |
Grafana/DataDog 风格深色仪表板 |
| 🐳 Docker 部署 |
一键 docker-compose up 启动 |
| 💾 持久化存储 |
SQLite 本地存储历史数据 |
# 1. 安装后端依赖
cd backend
npm install
# 2. 生产模式启动(同时提供前端服务)
NODE_ENV=production npm start
# 浏览器访问: http://localhost:3001
# 或开发模式(仅 API,前端直接打开 frontend/index.html)
npm run dev
docker-compose up --build
# 前端访问: http://localhost:3000
# 后端 API: http://localhost:3001
| 变量 |
默认值 |
说明 |
| PORT |
3001 |
后端监听端口 |
| NODE_ENV |
development |
运行环境(production 时同时提供前端静态文件) |
| DB_PATH |
./data/watch.db |
SQLite 数据库路径 |
| FRONTEND_ORIGIN |
localhost:3000,3001 |
开发模式允许的 CORS 来源(逗号分隔) |
Watch-System/
├── README.md
├── docker-compose.yml
├── docs/
│ └── project-plan.md
├── frontend/
│ ├── index.html
│ └── lib/ # 本地 JS 库(无需 CDN)
│ ├── chart.umd.min.js
│ └── socket.io.min.js
└── backend/
├── Dockerfile
├── package.json
└── src/
├── server.js
├── database.js
├── routes/
│ └── api.js
└── services/
├── simulator.js
└── alertManager.js
| 方法 |
路径 |
说明 |
| GET |
/api/models |
获取所有模型及实时状态 |
| GET |
/api/metrics |
获取系统总体指标 |
| GET |
/api/metrics/:model |
获取指定模型详细指标 |
| GET |
/api/history/:model |
获取模型最近请求历史 |
| GET |
/api/alerts |
获取当前活跃告警 |
| POST |
/api/simulate |
手动触发一次模拟请求 |
| 事件 |
方向 |
说明 |
| request_completed |
服务端→客户端 |
单次请求完成 |
| metrics_update |
服务端→客户端 |
全量指标推送(每5秒) |
| alert_created |
服务端→客户端 |
新告警产生 |
| alert_resolved |
服务端→客户端 |
告警已解除 |
| 模型 |
特征 |
响应时间 |
| llama2-7b |
通用对话 |
800-2000ms |
| llama2-13b |
大参数通用 |
1500-4000ms |
| mistral-7b |
快速推理 |
400-1200ms |
| codellama-7b |
代码生成 |
600-1800ms |
| phi-2 |
轻量快速 |
300-900ms |
| gemma-7b |
Google 开源 |
500-1500ms |
| qwen-7b |
多语言 |
400-1100ms |
| deepseek-7b |
深度推理 |
600-1600ms |
MIT License