• 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_active
  • hosts: 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_at
  • host_groups: id, name, parent_id (用于多级分组), created_by
  • alert_rules: id, name, host_id (或 group_id), metric_name, operator (>, <, =), threshold, duration, level, notification_channels
  • alert_logs: id, rule_id, host_id, message, level, status (pending/fired/resolved), created_at, resolved_at
  • api_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: float
    • memory_usage: float
    • disk_usage: float
    • network_rx_bytes: integer
    • network_tx_bytes: integer
  • Timestamp: 默认的时间戳字段。

商业化考量

  • 授权与激活:引入License Key机制,控制用户数、主机数、功能模块。
  • 版本迭代:区分“社区版”(功能有限)和“商业版”(功能齐全)。
  • 技术支持:提供付费技术支持服务,包括问题排查、定制开发等。
  • 数据安全:强调数据加密(传输、存储)、操作审计日志,这是商业客户非常看重的点。

这个蓝图为您提供了一个从架构到功能的完整“模板”,您可以根据实际团队的技术栈和开发资源,选择合适的技术进行实现,祝您项目顺利!