技术新讯 > 电子通信装置的制造及其应用技术 > 一种服务器资源管理系统及方法  >  正文

一种服务器资源管理系统及方法

  • 国知局
  • 2024-08-02 15:01:23

本发明涉及服务器,尤其涉及一种服务器资源管理系统及方法。

背景技术:

1、ssh是一种安全网络协议,用于在网络上安全地进行远程登录和传输数据,它为用户提供了一种加密的通信通道,以保护敏感信息的安全,服务器运维人员常用此协议登录服务器并对服务器进行管理。

2、传统手动管理服务器资源和脚本的方式在软件开发和服务器管理中被广泛使用,这种方式通常在通过ssh连接到服务器后,在终端上输入命令手动配置和管理服务器脚本。

3、传统手动管理服务器资源的方式存在一些明显的缺陷,如下所述:

4、首先,手动管理服务器脚本需要耗费大量精力和时间。管理员需要手动通过ssh登录到服务器,通过在终端输入命令的方式逐个配置和管理脚本的运行,这种方式不仅低效,而且容易导致脚本配置不一致或不准确。

5、其次,终端表达能力有限。命令行交互的方式同一时间仅能同时管理少数脚本,且切换起来较为繁琐,无法直观掌握脚本或程序的运行状态。

6、最后,缺乏可扩展性。传统手动管理方式对大型系统或复杂的配置来说往往不够灵活,缺乏可扩展性。随着系统规模的扩大,管理员很难有效地管理和调配各个服务器资源和脚本的状态。

技术实现思路

1、针对现有技术的不足,本发明提供一种服务器资源管理系统及方法,本发明对传统手工命令行管理服务器资源的方式进行优化,设计了一套基于web的便捷远程服务器资源管理工具,用户仅需要通过网页访问该系统,即可对服务器资源占用信息进行查看,对服务器上的脚本进行管理,同时可以通过可视化的界面在运行时与脚本进行交互。

2、一方面,一种服务器资源管理系统,包括:服务器状态仪表盘模块、脚本管理模块和用户鉴权模块;

3、所述服务器状态仪表盘模块用于展示当前服务器设备资源占用信息;

4、所述脚本管理模块用于管理linux或windows操作系统中脚本的启动、停止、创建、删除和开机自动启动功能,每个脚本能够指定特定的环境变量,并且能够展示脚本实时运行状态和标准输出,具体包括脚本目录子模块、脚本信息子模块和脚本执行子模块;

5、其中所述脚本目录子模块以树形目录结构存储脚本,用户对脚本进行重命名、复制、移动、克隆、编辑操作,并且支持创建目录用以将脚本归类存储;所述脚本信息子模块用于管理脚本信息,包括脚本名称、脚本运行命令、脚本启动目录、是否开机自启动以及环境变量列表,所述脚本执行子模块用于执行脚本的运行,在运行时支持由网页端向脚本的标准输入流中输入数据,并能够将脚本的标准输出流和标准错误流内容输出到网页上;

6、所述用户鉴权模块基于jwt技术验证用户身份,避免未授权的用户对服务器进行攻击;同时,使用固定密钥和用户密码拼接新密钥,避免用户修改密码而原令牌仍有效的问题。

7、另一方面,一种服务器资源管理方法,基于前述一种服务器资源管理系统实现,包括以下步骤:

8、所述服务器状态仪表盘模块用于执行以下步骤:

9、步骤a1:将gopsutil库导入项目中,并引入该库内的cpu、mem和net包;

10、步骤a2:创建websocket中间件;

11、步骤a2.1:创建websocket.upgrader类型的实例upgrader;

12、步骤a2.2:使用upgrader将上下文升级为websocket协议,并得到websocket连接;

13、步骤a2.3:使用wsconnection作为键,将websocket连接存入上下文中;

14、步骤a2.4:调用上下文中的next函数,交由请求处理链继续执行;

15、步骤a3:获取操作系统资源占用情况,具体包括获取cpu占用信息、获取内存信息以及获取网络资源使用信息;

16、所述获取cpu占用信息具体包括以下步骤:

17、步骤a3.1.1:以1秒为周期,计算全部cpu核心的使用情况百分比;

18、步骤a3.1.2:以json格式将cpu占比数据发送到前端,执行步骤a3.1.1;

19、所述获取内存信息具体包括以下步骤:

20、步骤a3.2.1:以json格式将已使用内存、总内存和内存使用百分比数据发送到前端;

21、步骤a3.2.2:等待1秒,执行步骤a3.2.1;

22、所述获取网络资源使用信息具体包括以下步骤:

23、步骤a3.3.1:声明变量lastsent和lastrecv;

24、步骤a3.3.2:获取当前网卡发送的字节数和接收的字节数,分别存入lastsent和lastrecv变量中;

25、步骤a3.3.3:以json格式将当前网卡字节数差值数据发送到前端;

26、步骤a3.3.4:等待1秒,执行步骤a3.3.2;

27、所述脚本执行子模块用于执行以下步骤:

28、步骤b1:构造命令实例;

29、步骤b1.1:分割启动命令;

30、步骤b1.1.1:导入go-shellquote包;

31、步骤b1.1.2:将启动命令切割为字符串类型的命令数组words;

32、步骤b1.1.3:使用命令数组words的第一个成员作为要启动的程序,其余成员作为参数,创建命令实例cmd;

33、步骤b1.2:设置待启动程序的环境变量;

34、步骤b1.2.1:将当前全部环境变量复制到命令实例cmd的env成员中;

35、步骤b1.2.2:遍历自定义环境变量列表,使用key=value的键值对形式将每个自定义环境变量加入到命令实例cmd的env成员中;

36、步骤b1.3:设置待启动程序的工作目录;

37、步骤b1.3.1:若自定义工作目录为空,则将当前目录设置到命令实例cmd的dir成员中;否则将自定义工作目录设置到该成员中;

38、步骤b1.4:处理标准输入流、标准输出流和标准错误流;

39、步骤b1.4.1:通过命令实例cmd,分别获取标准输入管道、标准输出管道和标准错误管道,若当前操作系统为linux,则跳转到步骤b1.5,否则执行步骤b1.4.2;

40、步骤b1.4.2:使用gbk到utf8的编码转换器分别包装标准输入管道、标准输出管道和标准错误管道;

41、步骤b1.5:获取当前时间,记录到启动时间变量中;

42、步骤b1.6:将脚本状态设置为已启动;

43、步骤b1.7:将表示脚本启动的元数据添加到脚本输出的缓冲队列中,网页端将提供不同样式的展示;

44、步骤b2:处理脚本的输出内容;

45、步骤b2.1:创建负责处理脚本的标准输出流的协程;

46、步骤b2.1.1:从标准输出管道中读取一行输出内容;

47、步骤b2.1.2:将输出内容添加到脚本输出的缓冲队列中;

48、步骤b2.2:创建负责处理脚本的标准错误流的协程;

49、步骤b2.2.1:从标准错误管道中读取一行输出内容;

50、步骤b2.2.2:将表示错误的元数据添加到脚本输出的缓冲队列中;

51、步骤b2.2.3:将错误内容添加到脚本输出的缓冲队列中;

52、步骤b3:释放退出后的脚本资源;

53、步骤b3.1:创建资源清理协程;

54、步骤b3.2:获取当前时间,将脚本执行总时间添加到脚本输出的缓冲队列中;

55、步骤b3.3:释放启动程序相关资源;

56、步骤b3.4:将脚本状态设置为已停止;

57、所述用户鉴权模块用于执行以下步骤:

58、步骤c1:创建jwt中间件;

59、步骤c1.1:引入jwt包,用于对身份令牌进行校验处理;

60、步骤c1.2:获取请求头中的身份令牌;

61、步骤c1.3:若令牌为空,则执行步骤c1.4,否则执行步骤c1.5;

62、步骤c1.4:返回错误信息,并结束中间件执行;

63、步骤c1.5:若令牌算法为hmac算法,则执行步骤c1.6,否则执行步骤c1.4;

64、步骤c1.6:使用配置文件中的密钥和用户密码整体作为新的密钥,对令牌进行解密;若解密成功,则执行步骤c1.7,否则执行步骤c1.4;

65、步骤c1.7:若令牌尚未过期,则执行步骤c1.8,否则执行步骤c1.4;

66、步骤c1.8:调用上下文中的next函数,交由请求处理链继续执行;

67、步骤c2:将jwt中间件绑定到需要身份验证的路由处理器前。

68、采用上述技术方案所产生的有益效果在于:

69、本发明提供一种服务器资源管理系统,用户可以在手机和电脑上通过web页面监控服务器运行状态,以及对服务器运行的程序和脚本等资源进行远程管理。其中,用户鉴权模块使用jwt技术存储用户令牌,采用固定密钥和用户密码混合验证的方式提高了系统的安全性。本发明后端基于gin框架开发,前端基于vue框架开发,并通过embed技术将前端生成的html等资源文件打包嵌入最终的程序中。

本文地址:https://www.jishuxx.com/zhuanli/20240801/244664.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。