# monitor **Repository Path**: newitman/monitor ## Basic Information - **Project Name**: monitor - **Description**: 服务器监控 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-09 - **Last Updated**: 2026-02-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Monitor — 网站与服务器监控 参考 [UptimeRobot](https://uptimerobot.com/) 实现的完整前后端监控系统,支持 HTTP、关键词、Ping、端口、心跳(Cron)监控,告警与公开状态页。 ## 功能概览 - **监控类型**:HTTP(s)、关键词、Ping、端口、心跳(定时任务) - **告警**:邮件、Webhook;监控可关联多个告警联系人 - **状态页**:公开状态页,可选密码保护 - **仪表盘**:监控列表、最近检查记录、响应时间 ## 技术栈 - **后端**:Node.js + Express + MySQL(mysql2) - **前端**:React + Vite + React Router - **定时检查**:node-cron 每分钟调度,按每个监控的间隔执行 ## 快速开始 ### 1. 安装依赖 ```bash # 根目录 npm install # 后端 cd backend && npm install # 前端 cd frontend && npm install ``` ### 2. 配置 MySQL 并初始化表 先创建数据库(如使用 MySQL 客户端或 Navicat): ```sql CREATE DATABASE monitor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 在 `backend/.env` 中配置(可复制 `.env.example`): ``` MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=你的密码 MYSQL_DATABASE=monitor ``` 首次启动 API 时会自动创建表;也可手动执行: ```bash cd backend && npm run init-db ``` ### 3. 启动 ```bash # 终端 1:API 服务 cd backend && npm run dev # 终端 2:监控 worker(执行实际探测) cd backend && node src/worker/index.js # 终端 3:前端 cd frontend && npm run dev ``` 或根目录一键启动前后端(需再单独开终端跑 worker): ```bash npm run dev ``` - 前端:http://localhost:5173 - 后端 API:http://localhost:3001 ### 4. 使用 1. 打开 http://localhost:5173,注册/登录。 2. 在「仪表盘」添加监控(HTTP/关键词/Ping/端口/心跳)。 3. 在「告警联系人」添加邮箱或 Webhook,编辑监控时可关联。 4. 在「状态页」创建公开页,选择要展示的监控,分享链接(如 `/status/your-slug`)。 心跳监控:创建类型为「心跳」的监控后,在编辑页复制「心跳 URL」,在 crontab 或 CI 中定期请求该 URL 即可(未在预期间隔内收到请求会告警)。 ## 环境变量(后端) 在 `backend/.env` 中配置: - `PORT`:API 端口,默认 3001 - `JWT_SECRET`:JWT 密钥,生产环境务必修改 - `MYSQL_HOST` / `MYSQL_PORT` / `MYSQL_USER` / `MYSQL_PASSWORD` / `MYSQL_DATABASE`:MySQL 连接 - `SMTP_URL`:邮件告警(如 `smtp://user:pass@smtp.example.com`) - `SMTP_FROM`:发件人地址 ## API 概览 - `POST /api/auth/register`、`POST /api/auth/login` — 注册、登录 - `GET /api/auth/me` — 当前用户(需 Bearer Token) - `GET/POST/PUT/DELETE /api/monitors` — 监控 CRUD - `GET /api/monitors/:id/logs` — 检查日志 - `GET /api/heartbeat/:token` — 心跳上报(公开,无鉴权) - `GET/POST/PUT/DELETE /api/alert-contacts` — 告警联系人 - `GET /api/incidents` — 故障事件 - `GET /api/status-pages/public/:slug` — 公开状态页 - `POST /api/status-pages/public/:slug/verify` — 状态页密码验证并返回数据 ## 许可证 MIT