(实验)简单的 Linux 服务器监控系统(一)

实验场景:

服务器的管理和监控需要一定的服务器运维经验,普通非计算机用户很难监控和管理,本实验做一款简单的 Linux 服务器监控系统,实现收集服务器基本信息并查看的功能。

需求:

在设计一个软件的时候,我们必须先了解软件的用户需求,谈到用户需求,首先要和软件需求区别开来,用户需求不同于软件需求。需求是软件设计的范围界定,需求确定了什么需要开发,什么不需要开发,哪些是关键的,哪些只是锦上添花,从而划定出开发的范围,防止过度开发或者缺少功能等问题。

  • 用户需求是站在用户的角度去思考业务如何处理,是要帮助用户去解决业务问题的范畴,基本不涉及软件领域词汇,用户需求一般用用例图(use case)来分析和表示。
  • 软件需求是经过需求工程师/开发人员分析用户需求后,逐条转化为在设计软件方面需要考虑到的开发范围。

例如:

  • 用户的总体需求是:我希望我可以很方便的查看和管理这些服务器,就像管理我的个人电脑一样。
  • 软件的总体需求是:一款单机、C/S、B/S或者分布式的 Linux/Window 服务器监控管理系统,可以实时监控、管理服务器系统和服务应用。

用户需求分析:

  1. 用户可以注册管理账号,来登录管理平台。
  2. 普通用户查看服务器的信息即可,不能启动和停止任何服务器应用。
  3. 管理员用户不仅可以查看信息,也可以管理服务器应用。
  4. 监控内容,服务器的状态,服务应用的状态,如 CPU,内存,硬盘空间等,某些服务是否开启,状态如何。
  5. 管理内容,启动和停止某些服务应用。

软件需求分析:

  • 用户登录系统需求
  1. 超级用户(软件自身需求):软件系统自带默认超级用户,默认密码登录进行管理。
  2. 管理员用户(限制级别和个数),首次登录,通过 C/B 端界面,输入个人邮箱/手机号/等进行用户注册,使用超级用户审批生效。
  3. 普通用户,首次登录,通过 C/B 端界面,输入个人邮箱/手机号/等进行用户注册,等待管理员用户审批生效。

思路扩展:可以思考是否需要邮箱验证、手机验证等,密码样式,是否加密等更复杂的内容。

复杂度越高,成本越高,开发难度越大,但是不一定能解决用户关心的核心问题,开发需要明确哪些是核心功能,哪些只是辅助功能。开发时,核心功能的优先级最高。

  • 用户权限需求
  1. 管理员权限:审批和注销普通用户,改普通用户信息,监控和管理监控平台。
  2. 普通用户权限:查看监控平台的监控信息。
  • 监控内容需求
  1. 服务器设备的基本信息,如:CPU信息,操作系统信息,host信息,硬盘,内存容量,时间等。
  2.  服务器系统实时信息,如:负载信息,内存使用率,硬盘使用率等。(可以参考 Linux top 命令来学习)
  3. 服务器应用实时信息,比如服务器上安装的 MySQL 数据库:mysqld 运行状态,包括进程ID,进程状态,内存使用,CPU消耗,运行时长等。
  4. 被监控的服务器应用可配置,以防止用户增加或者减少监控应用范围。
  5. 服务器类型:Linux 为主,是否需要兼容 Windows 服务器等。

思路扩展:可以思考是否使用配置的方式来使软件监控范围可扩展,避免使用 hard code 方式写死应用。配置方式是否需要支持 C/B 端配置等等。

  • 监控要求
  1. 监控的频率设置、监控范围设置等。
  2. 监控的服务器类型要求:Linux 型号等,Window 型号等。
  3. 监控服务器的分布要求:分布式、P2P、单台服务器、横向、纵向扩展服务等。

思路扩展:是否需要支持报警,日志记录,日志分析等功能。

软件总体设计:

架构分析:

使用什么样的架构能覆盖这种需求,如何去安装,如何去发送和接收监控信息,怎样最容易扩展和配置是需要思考的问题。我们可以做成典型的 C/S 样式,在每个被监控的服务器上面安装监控服务,然后依次登录每台服务器的监控服务去查看和管理服务器,对于只有很少服务器需要监控的场景,此类设计可以简化开发。也可以集中到一台专门的监控服务器上面,收集被监控的服务器信息,让被监控服务器成为监控节点,访问者只登录专门的监控服务器即可查看所有的信息,此类设计较复杂,但扩展性好。我们选第二种尝试。

按照设计,软件应该被分为三部分部署:

  • 监控平台服务器
  1. 安装监控服务主软件,支持客户端登陆访问。
  2. 负责收集各个监控节点服务软件发送来的监控信息。
  3. 分析和处理信息,形成报告。
  4. 可向各个监控节点发送管理命令。
  5. 可自动探测各个被监控点。
  6. 其他扩展功能。
  • 监控节点服务器
  1. 安装监控服务节点软件,不支持客户端登陆访问。
  2. 负责收集本节点服务器的信息。
  3. 可配置和管理该节点收集信息的类型。
  4. 可接收来自主服务器的命令,管理本节点服务应用。
  5. 可生成日志信息等。
  6. 其他扩展功能。
  • 监控管理客户端
  1. 安装客户端软件或者浏览器,取决于使用 C/S 还是 B/S。
  2. 可通过登录界面或者登录网址来登录监控平台。
  3. 普通用户可以查看当前用户可查看的信息。
  4. 管理员用户可以查看并管理被监控的所有服务器。
  5. 管理员用户可以管理普通用户的信息和权限。
  6. 其他扩展功能。

系统模块:

从设计上面,软件应该分为两个子系统:

  • 服务器监控子系统:核心业务系统,负责整个监控系统的全部监控业务。
  1. 服务器信息收集模块:负责收集该节点服务器的基本信息、配置监控的服务应用信息。
  2. 服务器管理模块:负责接收管理命令和执行管理命令。
  3. 信息管理模块:该模块为通信模块,负责节点和主服务器的通信,负责汇总存储和处理收集的监控信息,负责给用户搜索和查找信息接口,负责提供发送命令接口。
  4. 用户访问模块:负责调取信息管理模块的接口,将监控信息展示给用户;
  5. 管理访问模块:负责提供管理界面给管理员,可根据管理员点击的命令,调取信息管理模块接口,管理相应节点服务器。

思路扩展:可以把通信模块单独抽取出来,形成一个统一的分布式通信模式。

  • 用户管理子系统:辅助系统,负责实现用户提出的用户管理业务。
  1. 提供用户登录界面/网页。
  2. 提供所有用户访问节点监控信息的界面/网页。
  3. 提供管理员用户对普通用户的管理模块。

至此,该监控系统的大致框架基本完成,后续可能会适当修改模型,但大致框架不会改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值