1. 概述
本项目旨在开发一个 Golang 守护进程,用于管理和监控 OpenResty (OP) 的状态,并与 Redis 和管理端进行交互。主要功能包括:
监控 OP 和服务器状态,并实时上报到管理端。
控制 OP 的启停、重启和配置重载。
定期从 Redis 中读取配置并更新 OP。
收集 OP 的统计数据并上报到管理端。
2. 功能需求
2.1 监控 OpenResty 和服务器状态
定期检查 OpenResty 的运行状态(通过 PID 文件或进程名称)。
监控服务器资源使用情况(CPU、内存、磁盘等)。
2.2 控制 OpenResty 的启停、重启和重载
提供接口,用于启动、停止和重启 OpenResty。
支持配置文件重载,确保配置变更能够及时生效。
2.3 配置管理和同步
定期从 Redis 中读取最新的配置数据。
将配置数据写入本地文件,确保 OpenResty 即便是重启,也能够读取到最新配置。
通过 Unix 套接字将新配置下发给 OpenResty,实现实时更新。
2.4 数据收集和上报
收集 OpenResty 的运行统计数据(如请求数、响应时间等)。
整理统计数据并定期上报到管理端,供运维和分析使用。
3. 详细设计
3.1 监控模块
OpenResty 状态监控:通过检查进程是否存在以及读取 PID 文件来判断 OpenResty 的运行状态。
服务器状态监控:使用系统库获取 CPU、内存、磁盘使用情况,并监控关键资源的使用率。
3.2 控制模块
启动 OpenResty:调用系统命令启动 OpenResty,记录 PID。
停止 OpenResty:通过 PID 文件停止 OpenResty 进程。
重启 OpenResty:先停止再启动,确保配置生效。
重载配置:向 OpenResty 发送信号或通过 Unix 套接字通知其重新加载配置。
或者将命令写入system中,Go通过systemctl来控制启停。
3.3 配置管理模块
读取 Redis 配置:定期从 Redis 拉取最新配置数据。
写入本地文件:将配置数据写入指定路径的文件中。
通知 OpenResty:通过 Unix 套接字通知 OpenResty 有新的配置可用。
Openresty更新:通过event将配置同步到所有进程中
3.4 数据收集模块
收集统计数据:从 OpenResty 获取访问统计信息。
收集服务器数据:Go自行获取服务器信息。
整理数据:对收集到的数据进行处理,生成管理端需要的格式。
上报数据:定期将整理后的数据通过 HTTP 请求或其他协议发送到管理端。
3. 流程图

联系邮箱:sales@99cdn.com
授权平台:www.99cdn.com
云平台:www.vmrack.com