- n点管理:能够同时监控和管理多个(理论上无限个)远程或本地服务器主机。
- 商业级:功能完整、稳定可靠、安全、可扩展,适合企业级应用。
- 单机版:所有数据和逻辑都集中在一台服务器上部署,方便中小型企业快速部署和使用,无需复杂的分布式架构。
- 模板:提供一个清晰、可扩展的架构和功能蓝图,可以作为实际开发的指导。
下面我将为您提供一个详细的设计蓝图,包含系统架构、核心功能模块、技术选型建议和数据库设计。
n点主机管理系统商业单机版 - 设计蓝图
系统定位与目标用户
- 系统定位:一个轻量级、集中式、功能全面的IT基础设施监控与管理平台。
- 目标用户:
- 中小型企业 (SMEs):IT运维人员,需要同时管理公司内部的几台到几十台服务器、虚拟机。
- 初创公司/开发团队:需要管理云服务器(如阿里云ECS, 腾讯云CVM)和本地测试环境。
- 个人开发者/高级用户:拥有多个VPS或云服务器,需要一个统一的管理界面。
系统架构设计 (单机版)
为了满足“单机版”和“商业级”的要求,我们推荐采用 前后端分离 的架构,所有服务部署在一台高性能服务器上。
+-------------------------------------------------------------+
| 用户浏览器 |
| (Web UI - HTML, CSS, JavaScript) |
+---------------------------+---------------------------------+
| HTTP/HTTPS (Nginx 反向代理)
+---------------------------+---------------------------------+
| Nginx (反向代理) | |
| - 负载均衡 (单机无效,但为未来扩展预留) |
| - SSL/TLS 终止 |
| - 静态资源服务 |
+---------------------------+---------------------------------+
| API Request (RESTful API)
+---------------------------+---------------------------------+
| 后端服务应用层 | 后台任务服务 |
| - API Gateway (可选,统一入口) | |
| - Host Management API | |
| - Monitoring & Alerting API | |
| - User & Auth API | |
| - Report API | |
+---------------------------+---------------------------------+
| 数据持久化
+---------------------------+---------------------------------+
| 数据存储层 | 缓存/消息队列 |
| - PostgreSQL (主数据库) | |
| - InfluxDB (时序数据库) | |
| - Redis (缓存/会话) | |
+---------------------------+---------------------------------+
| 数据采集
+---------------------------+---------------------------------+
| Agent / SSH | 第三方API集成 |
| - 部署在各被管理主机上 | |
| - 负责数据采集和指令执行 | |
+---------------------------+---------------------------------+
架构说明:
- 前端:标准的Web界面,通过API与后端交互。
- Nginx:作为反向代理服务器,接收所有外部请求,并将API请求转发给后端服务,同时提供静态文件服务,这是生产环境的最佳实践。
- 后端服务:核心业务逻辑,采用微服务思想,即使部署在同一台机器上,也按功能模块拆分为独立的服务(如用户服务、主机服务、监控服务),便于维护和未来扩展。
- 数据存储:
- PostgreSQL:关系型数据库,存储用户信息、主机资产信息、告警规则、配置等结构化数据。
- InfluxDB:时序数据库,专门用于存储主机性能指标(CPU、内存、磁盘、网络等),其高效的数据写入和查询性能非常适合监控场景。
- Redis:用于缓存热点数据(如主机列表、用户权限)、存储用户Session,提高系统响应速度。
- 数据采集:
- Agent (推荐):在每个被管理主机上部署一个轻量级的Agent程序(如Python/Go编写),Agent主动向管理平台发送数据,可以穿透防火墙,配置更灵活。
- SSH 方案 (备选):通过Paramiko等库,管理平台主动通过SSH连接到各主机执行命令并获取数据,无需在客户端部署,但需要主机开放SSH端口,且对平台网络有要求。
- 后台任务:使用Celery + Redis/RabbitMQ,用于执行周期性任务(如数据采集、报表生成、告警检查)。
核心功能模块设计
A. 用户与权限管理模块
- 用户管理:用户注册、登录、个人资料修改。
- 角色管理:预定义角色(如管理员、普通用户、只读用户)。
- 权限控制:基于角色的访问控制,管理员拥有所有权限,普通用户只能管理自己权限范围内的主机,只读用户只能查看。
- API Token管理:为第三方工具或自动化脚本提供API访问凭证。
B. 主机资产管理模块
- 主机录入:
- 通过Agent方式录入:输入Agent ID或扫描二维码添加。
- 通过SSH方式录入:输入主机IP、端口、用户名、密码/私钥进行连接测试并添加。
- 主机分组:支持创建多级文件夹/标签对主机进行分类(如“按部门”->“研发部”->“Web服务器”)。
- 主机详情:展示主机基本信息(IP、操作系统、内核版本、主机名等)、连接状态、最后在线时间。
- 主机编辑/删除:支持对主机信息进行修改或移除。
C. 监控与告警模块 (核心)
- 监控指标:
- 系统:CPU使用率、负载、内存使用率、磁盘空间/IO、网络流量。
- 服务:端口状态、进程存活状态。
- 自定义:通过Agent支持自定义脚本,返回特定数值(如业务QPS、数据库连接数)。
- 数据展示:
- 实时仪表盘:展示选定主机的关键指标实时曲线。
- 历史图表:支持按时间范围(1小时、24小时、7天、30天)查看历史性能数据。
- 告警管理:
- 告警规则:为每个主机或分组设置阈值规则(如“CPU使用率 > 80% 持续5分钟”)。
- 告警级别:支持定义不同级别(如:警告、严重、致命),并配置不同的通知方式。
- 通知渠道:支持邮件、企业微信/钉钉机器人、Webhook、短信(需集成第三方服务)。
- 告警抑制:防止同一告警在短时间内频繁发送。
- 告警历史:记录所有告警事件,支持已读/未读、处理状态标记。
D. 远程操作模块
- Web终端:直接在浏览器中通过SSH连接到目标主机进行命令行操作,支持多标签页、命令历史、文件上传下载。
- 文件管理器:基于Web的文件浏览器,支持上传、下载、创建、删除、重命名文件和目录。
- 批量命令:选择多台主机,批量执行相同的Shell命令,并查看各主机的执行结果。
E. 日志审计模块
- 日志收集:通过Agent收集主机的系统日志、应用日志(需配置Agent)。
- 日志存储:将日志集中存储在PostgreSQL或专门的日志系统(如ELK Stack,但会增加单机版复杂度,初期可简化)。
- 日志查询:提供关键词、时间范围等条件的日志搜索功能。
F. 报表中心模块
- 报表生成:自动生成日报、周报、月报。
- :包含主机资源利用率TOP N、告警事件汇总、系统健康评分等。
- 报表导出:支持将报表导出为PDF或Excel文件。
技术选型建议 (单机版部署)
| 模块 | 技术选型 | 理由 |
|---|---|---|
| 前端 | Vue.js 3 + Element Plus / Ant Design Vue | 现代化、组件化、生态成熟,能快速构建美观且功能强大的后台管理界面。 |
| 后端 | Python (Django/FastAPI) / Go (Gin) | Python:开发效率高,库丰富(如Paramiko用于SSH, InfluxDB客户端)。Go:性能高,并发能力强,适合构建高性能服务,FastAPI是Python中的高性能选择。 |
| 数据库 | PostgreSQL + InfluxDB | PostgreSQL功能强大,稳定可靠,InfluxDB是时序数据的事实标准,性能远超传统关系型数据库。 |
| 缓存 | Redis | 轻量级、高性能,满足缓存和Session存储需求。 |
| 反向代理 | Nginx | 业界标准,配置简单,性能稳定。 |
| 任务队列 | Celery + Redis/RabbitMQ | Python生态中异步任务处理的最佳实践。 |
| 前端构建 | Vite / Webpack | 现代前端项目构建工具。 |
| UI框架 | Element Plus / Ant Design Vue | 提供丰富的后台管理UI组件,减少重复开发。 |
数据库设计概要
A. PostgreSQL (核心业务数据)
users表:id,username,password_hash,email,role,created_at,is_activehosts表:id,name,ip_address,port,auth_type(ssh/agent),username,encrypted_password,private_key_path,group_id,os_info,status(online/offline),last_seen_at,created_by,created_athost_groups表:id,name,parent_id(用于多级分组),created_byalert_rules表:id,name,host_id(或group_id),metric_name,operator(>, <, =),threshold,duration,level,notification_channelsalert_logs表:id,rule_id,host_id,message,level,status(pending/fired/resolved),created_at,resolved_atapi_tokens表:id,user_id,token,name,created_at,expires_at
B. InfluxDB (监控指标数据)
- Measurement:
system_metrics - Tags (用于快速查询和分组):
host_id: 关联到PostgreSQL中的主机ID。host_name: 主机名称,方便在UI上显示。
- Fields (存储具体数值):
cpu_usage: floatmemory_usage: floatdisk_usage: floatnetwork_rx_bytes: integernetwork_tx_bytes: integer
- Timestamp: 默认的时间戳字段。
商业化考量
- 授权与激活:引入License Key机制,控制用户数、主机数、功能模块。
- 版本迭代:区分“社区版”(功能有限)和“商业版”(功能齐全)。
- 技术支持:提供付费技术支持服务,包括问题排查、定制开发等。
- 数据安全:强调数据加密(传输、存储)、操作审计日志,这是商业客户非常看重的点。
这个蓝图为您提供了一个从架构到功能的完整“模板”,您可以根据实际团队的技术栈和开发资源,选择合适的技术进行实现,祝您项目顺利!
