JHeczko/ServicePulse
GitHub: JHeczko/ServicePulse
一个轻量级的自托管可观测性平台,通过周期性健康检查监控 HTTP/HTTPS 服务的可用性、响应时间和中断事件。
Stars: 1 | Forks: 0
# ServicePuls
一个轻量级的可观测性平台,用于监控 HTTP/HTTPS 服务的可用性和性能。
ServicePuls 持续对配置的 endpoint 执行健康检查,收集响应指标,追踪事件,并提供一个集中的 dashboard 用于监控服务健康状态和运行时间。
该项目的灵感来源于现代可观测性和运行时间监控解决方案,如 Uptime Kuma、Grafana Synthetic Monitoring 和 Datadog Synthetics。
## 功能
### 服务监控
* HTTP/HTTPS endpoint 监控
* 可配置的监控间隔
* 响应时间测量
* 可用性追踪
* 自动事件检测
* 事件历史与恢复追踪
### 仪表盘
* 实时服务状态概览
* 运行时间统计
* 响应时间可视化
* 事件历史
* 特定于服务的指标
### 身份验证与安全
* 基于 JWT 的身份验证
* 受保护的 API endpoint
* 特定于用户的资源
* 密码哈希与验证
### 可观测性
* 健康检查 endpoint
* 结构化 JSON 日志
* 监控执行日志
* 错误追踪
### 验证
* 使用 Pydantic 进行请求验证
* URL 验证
* 输入约束
* 一致的 API 错误响应
### 文档
* OpenAPI 规范
* Swagger UI
* ReDoc 文档
### 后台处理
* Celery worker
* 异步监控作业
* 定时健康检查
* 后台任务中的事件处理
## 架构
```
┌─────────────┐ REST API ┌─────────────────┐
│ React + TS │ ◄────────────────► │ FastAPI Backend │
└─────────────┘ └────────┬────────┘
│
┌────────────────────┴──────────────────┐
│ │
┌──────▼───────┐ ┌────────▼────────┐
│ PostgreSQL │ │ Redis Broker │
│ Persistence │ │ Celery Backend │
└──────────────┘ └────────┬────────┘
│
▼
Celery Worker
Health Check Jobs
```
## 技术栈
### 前端
* React
* TypeScript
* Vite
* React Router
* Axios
* Recharts
### 后端
* FastAPI
* SQLAlchemy 2.x
* Alembic
* Pydantic
* JWT 身份验证
### 数据库
* PostgreSQL
### 后台任务
* Celery
* Redis
### 基础设施
* Docker
* Docker Compose
### 可观测性
* Structlog
* OpenAPI
* Swagger UI
* ReDoc
## 核心领域
### 用户
代表经过身份验证的平台用户。
### 服务
代表受监控的 HTTP/HTTPS endpoint。
**示例**
```
{
"name": "GitHub API",
"url": "https://api.github.com",
"check_interval": 60
}
```
### 检查
代表单次监控结果。
**存储的信息**
* HTTP 状态码
* 响应时间
* 时间戳
* 可用性状态
### 事件
代表服务中断事件。
追踪内容:
* 事件开始时间
* 恢复时间
* 总停机时长
## 监控工作流
1. 用户创建一个受监控的服务。
2. Celery 安排定期的健康检查。
3. Worker 执行 HTTP/HTTPS 请求。
4. 收集响应指标。
5. 结果持久化存储到 PostgreSQL 中。
6. 评估服务可用性。
7. 自动创建和解决事件。
8. Dashboard 显示当前和历史指标。
## API 文档
FastAPI 自动生成 OpenAPI 文档。
### Swagger UI
```
http://localhost:8000/docs
```
### ReDoc
```
http://localhost:8000/redoc
```
## 健康 Endpoint
用于基础设施和容器健康验证。
### Endpoint
```
GET /health
```
### 示例响应
```
{
"status": "ok",
"database": "ok",
"worker": "ok",
"uptime_seconds": 12345
}
```
## 项目结构
```
service-puls/
│
├── backend/
│ ├── alembic/
│ ├── app/
│ │ ├── api/
│ │ ├── core/
│ │ ├── models/
│ │ ├── schemas/
│ │ ├── services/
│ │ ├── tasks/
│ │ └── main.py
│ │
│ ├── requirements.txt
│ └── Dockerfile
│
├── frontend/
│ ├── src/
│ │ ├── pages/
│ │ ├── components/
│ │ ├── services/
│ │ ├── hooks/
│ │ └── types/
│ │
│ ├── package.json
│ └── Dockerfile
│
├── docs/
│ └── adr.md
│
├── docker-compose.yml
└── README.md
```
## 运行项目
### 克隆仓库
```
git clone https://github.com//service-puls.git
cd service-puls
```
### 启动应用
```
docker compose up --build
```
### 数据库迁移
```
PYTHONPATH=backend alembic -c backend/alembic.ini revision --autogenerate -m "migration-name"
```
## 可用服务
| 服务 | URL |
| ----------- | --------------------------- |
| 前端 | http://localhost:5173 |
| 后端 API | http://localhost:8000 |
| Swagger UI | http://localhost:8000/docs |
| ReDoc | http://localhost:8000/redoc |
## 学术要求
### 核心要求
* REST API
* PostgreSQL 数据库
* React 前端
* JWT 身份验证
* Docker Compose 部署
* 公开的 GitHub 仓库
### 附加要求
#### 可观测性
* 健康 endpoint
* 结构化日志
* 监控日志
#### 数据验证
* 请求验证
* URL 验证
* 错误处理
#### API 文档
* OpenAPI 规范
* Swagger UI
* ReDoc
#### 任务队列
* Celery worker
* 定时的监控作业
* 后台任务处理
## 未来改进
* TCP 监控
* SSL 证书过期检查
* 电子邮件通知
* Discord 通知
* Slack 集成
* Prometheus 指标
* Grafana 仪表板
* WebSocket 实时更新
* 多区域监控
* Kubernetes 部署
## 许可证
本项目是出于教育目的,作为 Web 应用程序设计课程的一部分而开发的。
标签:API集成, AV绕过, Celery, FastAPI, React, Syscalls, 可观测性, 异步任务, 搜索引擎查询, 测试用例, 版权保护, 状态监控, 请求拦截, 运维监控