# 服务器运维监控系统探针 **Repository Path**: tianjiguan/serverprobe ## Basic Information - **Project Name**: 服务器运维监控系统探针 - **Description**: 一个运维,想开发一个自己的监控探针系统, Go采集客户端(多服务器) → [WebSocket] → go接入层(WebSocket服务端) → [写入最新数据] → Redis缓存 → [同步层读取 / 处理] → 时序数据库(存历史)+ MySQL(存业务) → [查询 API 封装] → 前端页面(实时+历史查看) 采集器:go 转发器:go 后台页面管理包含告警触发器:fastapi - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-23 - **Last Updated**: 2026-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 服务器运维监控系统探针 #### 介绍 一个运维,想开发一个自己的监控探针系统, Go采集客户端(多服务器) → [WebSocket] → go接入层(WebSocket服务端) → [写入最新数据] → Redis缓存 → [同步层读取 / 处理] → 时序数据库(存历史)+ MySQL(存业务) → [查询 API 封装] → 前端页面(实时+历史查看) #### 软件架构 软件架构说明 采集器:go 转发器:go redis、mysql、时序数据库 后台页面管理包含告警触发器:fastapi框架 一、整体架构(分层拆解 + 数据流向) 【第一层:采集层(多服务器 / 设备端)】 组成:每台需要监控的服务器上部署一个「Go 采集客户端」(比如服务器 1、服务器 2、服务器 N 各一个) 核心动作: 采集本机指标(CPU / 内存 / 磁盘 / 网络等); 给数据打上唯一标识(device_id)和采集时间戳; 通过 WebSocket 协议,定时(如 2 秒 / 次)把数据推送到「接入层」。 【第二层:接入层(WebSocket 服务端)】 组成:一台部署了 FastAPI/Gin 的服务器(核心是 WebSocket 服务) 核心模块 & 动作: 连接管理:接收所有采集客户端的 WebSocket 长连接,处理连接建立 / 断开; 数据校验:验证采集数据的格式,补充服务端接收时间戳; 缓存写入:把每个设备的最新 1 条数据写入 Redis(覆盖旧数据),同时更新 “设备列表集合”; 可选通知:通过 Redis 的 Pub/Sub 发布 “新数据到达” 的消息(告诉同步层有新数据)。 【第三层:缓存层(Redis)】 核心存储内容(按用途分类): 实时数据缓存:Key 为collect_data:{device_id}(String 类型),仅存每个设备的最新 1 条指标数据; 设备列表:Key 为collect_devices(Set 类型),记录所有有数据的设备 ID(方便批量查询); 可选消息队列:Redis Pub/Sub,用于同步层实时感知新数据(替代轮询)。 【第四层:数据同步层(独立服务)】 组成:一个独立运行的程序(Python/Go 均可),和接入层解耦 核心动作: 数据获取:要么定时轮询 Redis 读取最新数据,要么监听 Redis Pub/Sub 的新数据消息; 数据处理:去重(避免重复写入)、格式转换(适配数据库要求); 批量写入:把处理后的数据写入「存储层」的数据库(时序库为主,MySQL 为辅)。 【第五层:存储层(双数据库分工)】 表格 数据库类型 核心用途 存储内容 时序数据库(InfluxDB) 存储全量历史指标数据 设备 ID、CPU / 内存值、采集时间戳等 MySQL(可选) 存储设备业务静态数据 设备 ID、设备名称、负责人、所属机房等 【第六层:应用层(前端 + 查询 API)】 组成:查询 API 服务 + 前端可视化页面 核心动作: 查询 API 服务:封装统一接口,对前端屏蔽底层存储差异: 查 “实时数据”→ 直接读 Redis; 查 “历史趋势”→ 读时序数据库; 查 “设备详情 + 指标”→ 关联 MySQL + 时序数据库; 前端页面:面向用户展示,支持: 实时刷新所有 / 指定设备的最新指标; 按时间范围查历史数据(近 24 小时 / 近 7 天); 趋势图表、设备筛选、数据导出等。 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)