🌐 网站监控服务 (Web Monitoring Service)
一个基于Flask的轻量级网站监控服务,支持多站点监控、邮件告警、自定义检测间隔等功能。
✨ 功能特性
🔍 多站点监控: 支持同时监控多个网站 ⚡ 实时检测: 可自定义检测间隔(最小1分钟) 📧 邮件告警: 支持QQ邮箱SMTP,异常时自动发送告警邮件 🎨 美观界面: 响应式Web界面,支持PC和移动端 ⚙️ 灵活配置: 支持自定义邮件模板和检测参数 📊 状态展示: 实时显示网站状态、响应时间、最后检测时间 🔧 易于部署: 一键启动,配置简单
🚀 快速开始
环境要求
Python 3.7+ 网络连接(用于监控目标网站) QQ邮箱账号(用于发送告警邮件)
安装步骤
-
克隆项目 。。bash git clone xxxx cd webmonitoringservice 。。
-
创建虚拟环境 。。bash python m venv venv source venv/bin/activate Linux/Mac 或 venv\Scripts\activate Windows 。。
-
安装依赖 。。bash pip install r requirements.txt 。。
-
启动服务 。。bash python app.py 。。
-
访问界面 打开浏览器访问
http://localhost:5000
📖 使用说明
-
配置邮箱
-
在Web界面中点击"邮箱配置"部分
-
填写QQ邮箱地址和SMTP授权码
-
设置接收告警的邮箱地址
-
点击"保存邮箱配置"
-
可点击"发送测试邮件"验证配置
注意: SMTP授权码不是QQ邮箱密码,需要在QQ邮箱设置中开启SMTP服务并获取授权码
-
添加监控点
-
在"添加监控点"部分输入要监控的网站URL
-
设置检测间隔(分钟)
-
点击"添加监控点"
-
查看监控状态
在"监控点列表"中查看所有监控点的状态 绿色表示正常,红色表示异常 显示响应时间和最后检测时间
- 自定义邮件模板
在"邮件模板设置"中可以自定义告警邮件的主题和内容,支持以下变量:
{url} 监控网址
{msg} 异常信息
{time} 检测时间
🔧 配置说明
配置文件
config.py 系统级配置(SMTP服务器等)
email_config.json 邮箱配置(自动生成)
monitors_config.json 监控点配置(自动生成)
环境变量
可以通过环境变量覆盖默认配置:
。。bash export FLASK_ENV=production export FLASK_DEBUG=0 。。
📁 项目结构
。。 webmonitoringservice/ ├── app.py 主应用文件 ├── config.py 配置文件 ├── requirements.txt Python依赖 ├── README.md 项目说明 ├── LICENSE 开源协议 ├── .gitignore Git忽略文件 ├── static/ 静态资源 │ ├── css/ │ │ └── index.css 样式文件 │ └── js/ │ └── index.js JavaScript文件 └── templates/ HTML模板 └── index.html 主页面 。。
🚀 部署指南
使用Docker部署
-
构建镜像 。。bash docker build t webmonitoring . 。。
-
运行容器 。。bash docker run d p 5000:5000 name webmonitor webmonitoring 。。
使用systemd部署(Linux)
-
创建服务文件 。。bash sudo nano /etc/systemd/system/webmonitor.service 。。
-
添加服务配置 。。ini [Unit] Description=Web Monitoring Service After=network.target
[Service] Type=simple User=wwwdata WorkingDirectory=/path/to/webmonitoringservice Environment=PATH=/path/to/webmonitoringservice/venv/bin ExecStart=/path/to/webmonitoringservice/venv/bin/python app.py Restart=always
[Install] WantedBy=multiuser.target 。。
- 启动服务 。。bash sudo systemctl enable webmonitor sudo systemctl start webmonitor 。。
🤝 贡献指南
欢迎提交Issue和Pull Request!
如果这个项目对你有帮助,请给个 ⭐️ 支持一下!