aakif-abrar/pulseops-cloud
GitHub: aakif-abrar/pulseops-cloud
一个开源的可用性监控与事件响应平台,提供真实 HTTP 探测、自动化事件管理、公共状态页和多角色权限控制。
Stars: 0 | Forks: 0
# PulseOps Cloud
开源的可用性监控、事件响应和公共状态页平台。
## 项目状态
积极维护的作品集项目。核心监控、事件自动化、RBAC 以及公共状态页均已实现并完成测试。
## 功能亮点
- 由后台 worker 执行的真实 HTTP 监控(非模拟),具备防范 SSRF 的 URL 验证。
- 自动化事件生命周期:连续 N 次失败后开启,连续 N 次恢复后解决,无重复的活动事件。
- 公共免登录状态页,提供 90 天的可用性百分比。
- 四角色 RBAC(Owner、Admin、Responder、Viewer),在每次变更时均由服务端强制执行。
- Webhook 通知发送,并保留持久化的投递历史记录。
- 组织范围的审计日志。
## 截图 / 产品预览
营销页 (`/`) 包含一个基于实际 UI 组件实时渲染的仪表盘预览。在本地运行应用(见下文)以查看完整的仪表盘、监控详情图表和公共状态页。
## 技术栈
**前端**:Next.js (App Router)、TypeScript、Tailwind CSS、TanStack Query、React Hook Form、Zod、Recharts、Headless UI。
**后端**:FastAPI、SQLAlchemy 2.x、Alembic、Pydantic、PostgreSQL、Argon2 密码哈希、通过 HTTP-only cookies 实现的 JWT。
**Worker**:独立 Python 进程,使用 HTTPX 进行出站检查。
**基础设施**:Docker Compose、GitHub Actions CI。
## 架构
请参阅 [docs/architecture.md](docs/architecture.md) 获取完整的剖析以及请求流程的 Mermaid 图表。
## 仓库结构
```
pulseops-cloud/
├── apps/web/ Next.js frontend
├── services/api/ FastAPI backend + Alembic migrations
├── services/worker/ Background monitoring worker
├── docs/ Architecture, demo guide, cover image
├── docker-compose.yml
└── .github/workflows/ci.yml
```
## 本地设置
### 使用 Docker(推荐)
```
docker compose up -d
```
这将构建所有服务,等待 PostgreSQL 变得健康,应用数据库迁移,填充演示数据,并启动 API、worker 和 Web 应用。
- Web: http://localhost:3000
- API: http://localhost:8000/api/v1
- API 健康检查: http://localhost:8000/api/v1/health
### 不使用 Docker
**API**
```
cd services/api
python -m venv .venv && source .venv/bin/activate # .venv\Scripts\activate on Windows
pip install -r requirements-dev.txt
cp .env.example .env # edit DATABASE_URL / JWT_SECRET
python -m alembic upgrade head
python -m app.db.seed
uvicorn app.main:app --reload
```
**Worker**
```
cd services/worker
python -m venv .venv && source .venv/bin/activate
pip install -r requirements-dev.txt
cp .env.example .env
python -m worker.main
```
**Web**
```
cd apps/web
npm install
cp .env.example .env.local
npm run dev
```
## 环境变量
请参阅仓库根目录下的 `.env.example` 以及 `services/api`、`services/worker` 和 `apps/web` 中的对应文件,获取带有本地开发占位符的完整变量列表。未提交任何真实的密钥。
## 数据库设置
PostgreSQL 迁移使用 Alembic (`services/api/alembic`) 进行管理。在设置 `DATABASE_URL` 后,从 `services/api` 目录下运行 `python -m alembic upgrade head`。
## 使用 Docker 运行
```
docker compose up -d # start everything
docker compose logs -f # follow logs
docker compose down # stop
docker compose down -v # stop and delete the Postgres volume
```
## 演示账号
| 角色 | 邮箱 | 密码 |
| --------- | ------------------------- | ------------ |
| Owner | owner@pulseops.local | DemoPass123! |
| Responder | responder@pulseops.local | DemoPass123! |
仅供本地开发使用。请参阅 [docs/demo-guide.md](docs/demo-guide.md) 获取引导式演练。
## 测试命令
```
# API
cd services/api && pytest -q
# Worker
cd services/worker && pytest -q
# Web
cd apps/web && npx vitest run
```
## API 文档
当 API 运行时,FastAPI 会在 `/docs` (Swagger UI) 和 `/redoc` 提供交互式 OpenAPI 文档。完整的路由列表记录在 [docs/architecture.md](docs/architecture.md) 中。
## 安全说明
请参阅 [SECURITY.md](SECURITY.md) 了解报告流程和已知限制(SSRF 缓解范围、限流器范围、演示凭证)。
## 未来改进
- 多区域检查 worker。
- 在通用 webhooks 之外提供 Slack/PagerDuty 原生通知渠道。
- 可暂停事件自动化的维护窗口。
## 作者
**Aakif Abrar**
- GitHub: [@aakif-abrar](https://github.com/aakif-abrar)
- 邮箱: aakifabrar74@gmail.com
- Treemate US 软件开发人员
- FAST NUCES 计算机科学专业本科生
## 许可证
[MIT](LICENSE)
标签:AV绕过, FastAPI, PostgreSQL, 可用性监控, 告警系统, 搜索引擎查询, 测试用例, 状态页, 请求拦截, 运维监控, 逆向工具