基于Django的轻量级生产环境接口监控平台
GitHub:
https://github.com/yjlch1016/dmonitor
一、参考文档:
Django官方文档
https://docs.djangoproject.com/zh-hans/3.0/
django-xadmin官方文档
https://xadmin.readthedocs.io/en/docs-chinese/
Django REST framework官方文档
https://www.django-rest-framework.org/
drf-yasg官方文档
https://drf-yasg.readthedocs.io/en/stable/
django-redis官方文档
https://django-redis-chs.readthedocs.io/zh_CN/latest/
uWSGI官方文档
https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/
Celery官方文档
https://docs.celeryproject.org/en/stable/
钉钉机器人开发文档
https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
pyecharts官方文档
https://pyecharts.org/#/zh-cn/intro
二、设计思想:
进程管理工具:Supervisor
反向代理服务器:Nginx
Web服务器:uWSGI
Web开发框架:Django
消息中间件:Redis
缓存中间件:Redis
数据库:MySQL
任务队列:Celery
监控可视化:Grafana
三、目录结构:
3.1 PyCharm截图:
3.2 GitHub:
https://github.com/yjlch1016/dmonitor
四、第三方依赖库:
Django==2.2.2
PyMySQL==0.9.3
xadmin==2.0.1
xlrd==1.2.0
XlsxWriter==1.1.8
xlwt==1.3.0
uWSGI==2.0.18
uwsgitop==0.11
djangorestframework==3.10.2
drf-yasg==1.16.1
django-redis==4.12.1
django-import-export==2.2.0
django-silk==4.0.1
requests==2.23.0
demjson==2.2.4
celery==4.3.0
django-celery-beat==1.5.0
django-celery-results==1.1.2
redis==3.2.1
pyecharts==1.8.1
五、工程说明:
5.1 模型:
微服务表一对多用例表
用例表一对多步骤表
步骤表一对多运行结果表
微服务表一对一环境配置表
表 | 字段 |
---|---|
微服务表 | 微服务名称、Swagger地址、微服务开关、钉钉开关、邮件开关、微服务简介、创建时间、修改时间 |
用例表 | 外键、用例名称、用例开关、钉钉开关、邮件开关、创建时间、修改时间 |
步骤表 | 外键、步骤名称、步骤开关、请求方式、接口路径、请求体、请求头、请求参数、预期的响应时间、预期的响应代码、预期的响应结果、正则、创建时间、修改时间 |
运行结果表 | 外键、是否通过、失败原因、运行时间、实际的响应时间、实际的响应代码、实际的响应结果 |
环境配置表 | 外键、域名、钉钉Webhook、密钥、收件人邮箱、创建时间、修改时间 |
5.2 参数化:
类型 | 写法 | 作用域 | 数量 |
---|---|---|---|
正则表达式 | ${变量名} | 全局 | 不限 |
随机数字 | {__RN位数} | 本条用例 | 不限 |
随机英文字母 | {__RL位数} | 本条用例 | 不限 |
随机手机号码 | {__MP} | 本条用例 | 不限 |
随机日期时间 | {__RD开始年份,结束年份} | 本条用例 | 不限 |
5.3 本地调试:
python manage.py collectstatic
复制xadmin静态文件
python manage.py makemigrations
激活模型
python manage.py migrate
迁移
python manage.py createsuperuser
创建超级管理员账号
输入账号:admin
输入邮箱:123456789@qq.com
输入密码:test123456
二次确认
python manage.py runserver
启动服务
http://127.0.0.1:8000/admin/
用户名:admin
密码:test123456
5.4 本地打包:
docker build -t monitor .
monitor为镜像名称,随便取
docker run -d --name monitor2020 -p 80:80 monitor:latest
启动容器
后台运行
给容器取个别名monitor2020
映射80端口
http://x.x.x.x/admin/
宿主机的IP地址
账号:admin
密码:test123456
docker exec -it monitor2020 /bin/bash
进入容器内部
exit
退出容器内部
docker stop monitor2020
停止容器
docker rm monitor2020
删除容器
5.5 公网访问地址:
(此为虚拟地址,真实并不存在,因为没买域名和服务器)
http://www.monitor.com/admin/
账号:admin
密码:test123456
5.6 Supervisor访问地址:
http://www.monitor.com/supervisor/
账号:admin
密码:test123456
5.7 Django性能分析:
六、Web页面:
七、钉钉报警示例:
7.1 响应代码错误报警:
7.2 响应时间过长报警:
7.3 响应结果错误报警:
八、API:
http://www.monitor.com/swagger/
九、容器日志:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构