【使用python如何收集服务器性能指标数据,并进行可视化】

文章介绍了如何在Linux环境中进行服务器性能数据的收集、查看、保存以及通过Python的paramiko库远程获取这些数据。主要内容包括使用top命令查看CPU、内存等信息,保存数据到日志文件,以及利用Python进行远程数据获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最终效果展示

最终实现的效果分为服务器管理,任务管理,数据看板查询服务器的性能数据

服务器管理

服务器管理主要功能:实现服务器信息的增删改查
在这里插入图片描述

任务管理

任务管理主要功能:实现任务的新增停止查询删除功能
在这里插入图片描述

数据监控

系统总览

主要查询系统运行时间,当前用户数,系统平均负载情况
在这里插入图片描述

系统任务

系统任务主要统计系统当前的进程使用情况
在这里插入图片描述

系统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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值