## 项目说明 ### 简述 用于监控服务器状态。 api用于服务器状态上报,上报到admin里面的接口,通过token进行设备识别。 ### 部署方式 - 需安装lombok插件,不然会提示找不到entity的get set方法 - 创建数据库mydatabase,数据库编码为UTF-8 - 执行db/mydatabase.sql文件,初始化数据 - 修改application-dev.yml文件,更新MySQL账号和密码 - IDEA运行AdminApplication.java,则可启动项目【admin】 - vscode运行前端项目npm install安装依赖 - vscode运行前端项目npm run dev 运行项目 - 前端访问路径:http://localhost:8001/ - admin接口文档路径:http://localhost:8080/admin/doc.html - client 接口文档路径:http://localhost:8081/api/doc.html - 账号密码:admin 密码应该是123456或者admin我也忘记了 ## 设计规划 ### 双端 admin为服务端后台,sys_monitor_FrontEnd为服务器端前台项目 client为客户端,仅需配置好客户端的server-monitor的内容即可 ### 功能规划 - [x] client作为数据主动推送,每隔1s(自定义时间)进行信息状态推送。api传输地址标识比如 传入服务器名称和识别token。 - [ ] 在线ssh功能/在线终端 - [ ] frp穿透功能 - [ ] 点击服务器查看服务器详情信息,即查看该服务器的当前心跳信息及其基本信息 - [ ] admin后端日志筛选方式:昨天/今天/最近七天/自定义事件 - [x] 客户端单次上报基础信息/config/reporting #### 服务器资源压力指数计算 ```python RPI = w_cpu × (CPU_usage / CPU_max) + w_mem × (Mem_usage / Mem_total) + N(w_disk x (Disk_usage / Disk_total)) ``` - `CPU_usage`:当前 CPU 使用率(例如 45 表示 45%) - `CPU_max`:通常为 100 × 核心数(但更推荐使用 **整体使用率百分比**,即 0~100% 范围,避免多核复杂化) - `Mem_usage`:已用内存(单位 MB 或 GB) - `Mem_total`:总物理内存 - `N`代表有几块磁盘,根据实际情况进行计算 - `Disk_usage`:已用磁盘空间(单位 MB 或 GB) - `Disk_total`:总磁盘空间 - `w_cpu` 、`w_mem` 、`w_disk` :权重,满足 `w_cpu + w_mem + w_disk = 1` 未涉及到使用swap和使用率超90%的**阈值惩罚**的功能。 ### 关键数据库结构 #### 服务器信息存储表 | 字段名称 | 类型 | 注释 | | ---------------- | -------- | ----------------------------------------------------------- | | id | bigint | id编号 | | server_name | varchar | 服务器名称 | | token | varchar | 与客户端一致的token(唯一性)可以自动生成 | | isEmail | varchar | 是否启用邮件告警(1开启 0关闭) | | ip_addr | varchar | ip地址(map存储,公网ip和局域网ip,手动设置) | | server_pwd | varchar | 服务密码(map存储,ssh密码,桌面密码,mysql密码等保存方式) | | service_provider | varchar | 提供厂商(阿里云/腾讯云/家用服务器) | | remark | longtext | 备注信息 | | create_time | datetime | 创建时间 | | create_user | varchar | 创建人 | | update_time | datetime | 更新时间 | | update_user | varchar | 更新人 | #### 接收客户端心跳信息表 | 字段名称 | 类型 | 注释 | | -------- | ---- | ------------------------------------------------------------ | | | | id编号(雪花算法) | | | | 主机名称 | | | | 主机token | | | | 平均负载 | | | | 当前负载 | | | | cpu负载 | | | | cpu温度 | | | | 内存占比 | | | | 剩余可用内存 | | | | 磁盘占用 (当前容量/总容量) | | | | 磁盘IO (读取/写入/每秒读写/IO延迟) | | | | 网络IO (上行/下行/总发送/总接收) | | | | 当前进程所占用的进程top10(map存储)记录pid、进程名、cpu占用、内存占用 | | | | 创建时间 | 仓库地址:https://gitee.com/wonder19991209/sys-monitor Loading... ## 项目说明 ### 简述 用于监控服务器状态。 api用于服务器状态上报,上报到admin里面的接口,通过token进行设备识别。 ### 部署方式 - 需安装lombok插件,不然会提示找不到entity的get set方法 - 创建数据库mydatabase,数据库编码为UTF-8 - 执行db/mydatabase.sql文件,初始化数据 - 修改application-dev.yml文件,更新MySQL账号和密码 - IDEA运行AdminApplication.java,则可启动项目【admin】 - vscode运行前端项目npm install安装依赖 - vscode运行前端项目npm run dev 运行项目 - 前端访问路径:http://localhost:8001/ - admin接口文档路径:http://localhost:8080/admin/doc.html - client 接口文档路径:http://localhost:8081/api/doc.html - 账号密码:admin 密码应该是123456或者admin我也忘记了 ## 设计规划 ### 双端 admin为服务端后台,sys_monitor_FrontEnd为服务器端前台项目 client为客户端,仅需配置好客户端的server-monitor的内容即可 ### 功能规划 - [x] client作为数据主动推送,每隔1s(自定义时间)进行信息状态推送。api传输地址标识比如 传入服务器名称和识别token。 - [ ] 在线ssh功能/在线终端 - [ ] frp穿透功能 - [ ] 点击服务器查看服务器详情信息,即查看该服务器的当前心跳信息及其基本信息 - [ ] admin后端日志筛选方式:昨天/今天/最近七天/自定义事件 - [x] 客户端单次上报基础信息/config/reporting #### 服务器资源压力指数计算 ```python RPI = w_cpu × (CPU_usage / CPU_max) + w_mem × (Mem_usage / Mem_total) + N(w_disk x (Disk_usage / Disk_total)) ``` - `CPU_usage`:当前 CPU 使用率(例如 45 表示 45%) - `CPU_max`:通常为 100 × 核心数(但更推荐使用 **整体使用率百分比**,即 0~100% 范围,避免多核复杂化) - `Mem_usage`:已用内存(单位 MB 或 GB) - `Mem_total`:总物理内存 - `N`代表有几块磁盘,根据实际情况进行计算 - `Disk_usage`:已用磁盘空间(单位 MB 或 GB) - `Disk_total`:总磁盘空间 - `w_cpu` 、`w_mem` 、`w_disk` :权重,满足 `w_cpu + w_mem + w_disk = 1` 未涉及到使用swap和使用率超90%的**阈值惩罚**的功能。 ### 关键数据库结构 #### 服务器信息存储表 | 字段名称 | 类型 | 注释 | | ---------------- | -------- | ----------------------------------------------------------- | | id | bigint | id编号 | | server_name | varchar | 服务器名称 | | token | varchar | 与客户端一致的token(唯一性)可以自动生成 | | isEmail | varchar | 是否启用邮件告警(1开启 0关闭) | | ip_addr | varchar | ip地址(map存储,公网ip和局域网ip,手动设置) | | server_pwd | varchar | 服务密码(map存储,ssh密码,桌面密码,mysql密码等保存方式) | | service_provider | varchar | 提供厂商(阿里云/腾讯云/家用服务器) | | remark | longtext | 备注信息 | | create_time | datetime | 创建时间 | | create_user | varchar | 创建人 | | update_time | datetime | 更新时间 | | update_user | varchar | 更新人 | #### 接收客户端心跳信息表 | 字段名称 | 类型 | 注释 | | -------- | ---- | ------------------------------------------------------------ | | | | id编号(雪花算法) | | | | 主机名称 | | | | 主机token | | | | 平均负载 | | | | 当前负载 | | | | cpu负载 | | | | cpu温度 | | | | 内存占比 | | | | 剩余可用内存 | | | | 磁盘占用 (当前容量/总容量) | | | | 磁盘IO (读取/写入/每秒读写/IO延迟) | | | | 网络IO (上行/下行/总发送/总接收) | | | | 当前进程所占用的进程top10(map存储)记录pid、进程名、cpu占用、内存占用 | | | | 创建时间 | 仓库地址:https://gitee.com/wonder19991209/sys-monitor 最后修改:2025 年 10 月 28 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏