无奈接受任务
—
进入新公司差不多到半个月多了,刚好碰到稳定性相关测试-需要24H监控设备的CPU和内存使用率,来确认CPU使用是否过高(不超过80%),是否有内存泄漏的情况发生(稳定)。之前测试的人好像直接用Linux-top命令,然后筛选出现相关信息写到文件,在自己检查整个趋势?带我的老哥来一句:你是会Python是吧?要不你看看能不能写个工具?那我只能说好吧!我是个新人,不敢说话呀!然后开始了4个晚上加班才完成这个工具。
开始doing
—
整体思路:
涉及到相关的库安装:
Pyqt5:pip install PyQt5-写界面要用到
Pyqt5-tools:pip install Pyqt5-tools -QtDesigner界面设计要用到
paramiko:pip install paramiko-连接Linux获取数据要用到
matplotlib:pip install matplotlib-数据处理画图需要用到
那就实现啦-关键的那几部分(具体的就不写啦)
—
第一步:连接Linux且执行Linux命令
代码语言:javascript复制import paramiko
#连接Linux
def get_ssh_client(hostName,port,userName,password):
try:
client = paramiko.SSHClient() #得到SSH2客户dUAN
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())#设置不需要密钥
client.connect(hostName, port, userName, password)#连接Linux
except:
print("获取*****连接失败")
#exit()
else:
print("获取*****连接成功")
return client
#执行Linux相关命令
def sshExcommand(client,command):
stdin, stdout, stderr = client.exec_command(command) #执行Linux
lines=stdout.readlines()#读取输出
return lines
第二步:QtDesigner设计界面,设计的很丑
然后用Pyuic命令生成py文件:
pyuic5 -o xxx.py monitor.ui,xxx随便取个名字
第三步:matplotlib显示数据,并且要把画布放入以上的红色框框的地方,且画图呢?这部分代码写吗?还是不写了吧?(最后给出所有代码的github地址吧)感觉写得有点乱,大概说下用到的几个类和作用:
还有说一个定时器去采集数据的吧。我用的是PyQt5里面的定时QTimer,在PyQt5.QtCore里面。用法也是很简单。
代码语言:javascript复制timer = QTimer() #得到定时器实例
timer.timeout.connect(self.append_data)#定时器需要执行的函数,其中append_data是我自己写的数据处理函数
timer.start(5000)#启动定时器,参数是单位是ms,5000表示5s执行1次append_data函数
最后一步就是写好逻辑,然后就是效果啦:
这个是之前的效果图,后来加了说明在绘图中加了说明哪个线表示什么指标。
感受:
1、发觉自己的英文阅读能力真的很差(网上的API帮助文档都是英文)
2、找资料太杂,导致实现功能时很容易受影响
3、看对应类的源码,找API挺方便的
还好公司可以上外网,可以随便查找资料,这点很喜欢呢。
PS工具源码github地址:
https://github.com/graceMik/monitor.git