最终效果展示
最终实现的效果分为服务器管理,任务管理,数据看板查询服务器的性能数据
服务器管理
服务器管理主要功能:实现服务器信息的增删改查
任务管理
任务管理主要功能:实现任务的新增停止查询删除功能
数据监控
系统总览
主要查询系统运行时间,当前用户数,系统平均负载情况
系统任务
系统任务主要统计系统当前的进程使用情况
系统CPU
系统内存
系统交换分区
收集服务器的性能数据我们需要思考哪些问题?
- 服务器的性能测试数据有哪些?
- 如何查看服务器性能数据?
- 如何保存服务器性能数据?
- 如何通过python获取保存的性能数据?
- 如何将获取的性能数据进行可视化展示?
服务器的性能测试数据有哪些?
服务器性能测试数据主要包括: 内存,CPU,进程数,运行时间,负载情况,交换区大小相关的数据
如何查看服务器性能数据?
以linux服务器为例,我们在查看服务器的性能数据,可以使用top命令去查询
top执行查询的前5行,具体参数详见: https://baike.baidu.com/item/top/16179030
这些数据就是我们需要的收集的性能测试数据
[root@192168114215 ~]# top
top - 16:00:14 up 3 days, 1:09, 2 users, load average: 7.88, 8.05, 8.03
Tasks: 211 total, 2 running, 209 sleeping, 0 stopped, 0 zombie
%Cpu(s): 76.1 us, 11.9 sy, 0.0 ni, 9.0 id, 0.0 wa, 0.0 hi, 3.0 si, 0.0 st
KiB Mem : 32782152 total, 2231908 free, 12902128 used, 17648116 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 18981216 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22881 panguad+ 20 0 11.395g 3.895g 36400 S 256.2 12.5 760:16.18 java
23418 panguad+ 20 0 9.903g 3.504g 16636 S 93.8 11.2 263:35.00 java
21786 clickho+ 20 0 13.716g 658476 349080 S 6.2 2.0 26:09.85 clickhouse
1 root 20 0 193624 6720 3920 S 0.0 0.0 1:46.31 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:01.01 kthreadd
..........
如何保存服务器性能数据?
保存服务器性能数据我们可以使用top指令将服务器的前5行数据存储到服务器的本地日志文件中
top -b -d 3 | grep ^top -A 5 > top_20230323.log
[root@192168114215 ~]# top -b -d 3 | grep ^top -A 5 > top_20230323.log
可以使用cat命令验证一下数据有没有保存成功
[root@192168114215 ~]# cat top_20230323.log
top - 16:13:01 up 3 days, 1:22, 2 users, load average: 6.95, 7.77, 7.96
Tasks: 210 total, 1 running, 209 sleeping, 0 stopped, 0 zombie
%Cpu(s): 78.2 us, 12.8 sy, 0.0 ni, 6.4 id, 0.0 wa, 0.0 hi, 2.6 si, 0.0 st
KiB Mem : 32782152 total, 1963876 free, 13153044 used, 17665232 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 18729872 avail Mem
--
top - 16:13:04 up 3 days, 1:22, 2 users, load average: 6.95, 7.77, 7.96
Tasks: 210 total, 1 running, 209 sleeping, 0 stopped, 0 zombie
%Cpu(s): 80.1 us, 10.6 sy, 0.0 ni, 6.0 id, 0.1 wa, 0.0 hi, 3.2 si, 0.0 st
KiB Mem : 32782152 total, 2053332 free, 13057268 used, 17671552 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 18825608 avail Mem
--
top - 16:13:07 up 3 days, 1:22, 2 users, load average: 7.03, 7.77, 7.96
Tasks: 210 total, 2 running, 208 sleeping, 0 stopped, 0 zombie
%Cpu(s): 79.9 us, 10.6 sy, 0.0 ni, 6.4 id, 0.1 wa, 0.0 hi, 2.9 si, 0.0 st
KiB Mem : 32782152 total, 2107532 free, 13007636 used, 17666984 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 18875124 avail Mem
--
top - 16:13:10 up 3 days, 1:22, 2 users, load average: 7.03, 7.77, 7.96
Tasks: 210 total, 1 running, 209 sleeping, 0 stopped, 0 zombie
%Cpu(s): 80.6 us, 10.4 sy, 0.0 ni, 6.0 id, 0.0 wa, 0.0 hi, 3.0 si, 0.0 st
KiB Mem : 32782152 total, 2174896 free, 12940772 used, 17666484 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 18942132 avail Mem
如何通过python获取保存的性能数据?
使用paramiko这个库可以连接linux并进行相关的操作
import paramiko
class ServerTools(object):
def __init__(self, user_id, ip, port, username, password):
self.user_id = user_id
self.ip = ip
self.port = port
self.username = username
self.password = password
# 建立连接
self.ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh.connect(self.ip, username=self.username, port=self.port, password=self.password)