ChinmayyK/DeployWatch
GitHub: ChinmayyK/DeployWatch
DeployWatch 是一个基于事件驱动架构的轻量级 API 监控与自动化事件响应平台,通过弹性轮询和智能告警帮助工程团队及时发现接口中断与延迟退化。
Stars: 1 | Forks: 0
# DeployWatch
## 问题所在
工程团队经常面临无提示的 API 故障以及延迟逐渐退化的问题。传统的 ping 监控过于简单,而企业级的可观测性平台又过于复杂,与基础设施深度耦合,且价格昂贵。当一个 endpoint 宕机或承受重负载时,团队需要立即获得可靠且独立于故障系统本身的警报,同时无需承担安装庞大 server agent 的开销,也无需处理嘈杂且不协调的 incident 报告。
## 解决方案
DeployWatch 是一个高频轮询和自动化 incident 响应平台,旨在做到既轻量又具备高弹性。
它通过解耦的、事件驱动的架构来解决问题:
- **解耦的 Task Queue:** 使用 BullMQ 和 Redis 来隔离监控工作负载。dispatcher worker 负责调度到期需要检查的 API,而不会与 cron job 紧密耦合或占用请求周期。
- **弹性的轮询:** 目标 API 超时、worker 节点崩溃或数据库连接激增都不会导致监控引擎崩溃。停滞的 job 会自动重新分配给活跃的 worker。
- **智能检测:** 检测逻辑不会在单次抖动时发出警报,而是评估持续性的故障和随时间推移的延迟阈值突破情况,从而防止警报疲劳。
- **自动化 Incident 响应:** 当确认发生中断时,DeployWatch 会自动创建 incident,记录历史时间线,并使用专门的 worker 异步触发警报(Email、Slack、Webhook),以确保快速的响应时间。
DeployWatch 以分割 workspace 的形式组织:
```
DeployWatch/
frontend/ Next.js SaaS frontend
backend/ Node.js API, Prisma, BullMQ workers
docs/ Architecture notes
README.md
```
## Workspace
### `frontend`
frontend 是一个基于 Next.js App Router 构建的应用,使用了 TypeScript、Tailwind CSS、React Query 和 Recharts。
常用命令:
```
cd frontend
npm install
npm run dev
```
### `backend`
backend 是一个面向生产的 Node.js + TypeScript 服务,基于以下技术构建:
- Express
- PostgreSQL + Prisma ORM
- BullMQ + Redis
- Zod validation
常用命令:
```
cd backend
npm install
npm run prisma:generate
npm run dev
```
在第二个终端中启动 worker:
```
cd backend
npm run dev:worker
```
## 文档
架构说明位于 [docs/architecture.md](/Users/chinmayk/Projects/DeployWatch/docs/architecture.md)。
## Docker
仓库包含一个根目录下的 [docker-compose.yml](/Users/chinmayk/Projects/DeployWatch/docker-compose.yml),用于运行:
- `frontend`
- `backend`
- `worker`
- `postgres`
- `redis`
启动所有服务:
```
docker compose up --build
```
应用可通过以下地址访问:
- Frontend: `http://localhost:3000`
- Backend API: `http://localhost:4000`
Compose 技术栈还会运行一个一次性的 migration 容器,它会在 API 和 worker 启动之前使用 `prisma db push` 应用 Prisma schema。
标签:API集成, BullMQ, GNU通用公共许可证, MITM代理, Node.js, Redis, 可观测性, 告警系统, 搜索引擎查询, 测试用例, 自动化攻击, 请求拦截, 运维监控