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, 可观测性, 异步任务, 搜索引擎查询, 测试用例, 版权保护, 状态监控, 请求拦截, 运维监控