频道栏目
首页 > 程序开发 > Web开发 > Python > 正文
用python做测试--Python实现远程性能监控
2012-12-16 09:23:00           
收藏   我要投稿
telnetoperate.py代码说明:

1.  __init__(self,host,prompt,account,accountPasswd,RootPasswd="")

  这里用到了多个登陆账号(account,root),原因是我们的机器开始不能直接root登陆,需要先用普通用户登陆,才能切换到root账号,所以这里出现了account, rootPasswd这2个参数,如果你的机器可以直接root账号登陆,或者你不需要切换到root账号,可以就用account, accountPasswd就可以了 

  prompt是命令行提示符,机器配置不一样,可能是$或者#,用来判断一个命令执行是否完成。

 

2.  send_command(self,command,sleeptime=0.5)

    这里sleeptime=0.5是为了避免很多机器性能不好,命令执行比较慢,命令还没返回,会导致获取命令后的结果失败。如果你嫌这样太慢了,可以调用的时候send_command(command,0)

3. process_is_running(self,process_name,output_string)

  在远程机器上执行ps -ef | grep process_name  | grep -v grep,执判断输出结果是不是期望的 output_string, 这里使用的时候,你先手工执行下确保你这个过滤出来的进程是你期望的。这种其结果的唯一性

 

监控远程机器:

#simplemonitor.py

[python]  

#!/usr/bin/env python  

#coding=utf-8  

  

import time  

import telnetoperate  

  

  

  

remote_server=telnetoperate.TelnetAction("192.168.23.235","#","user","passwd123")  

#get cpu information  www.2cto.com

cpu=remote_server.get_output("sar 1 1 |tail -1")  

memory=remote_server.get_output("top | head -5 |grep -i memory")  

io=remote_server.get_output("iostat -x 1 2|grep -v '^$' |grep -vi 'dev'")  

      

 

这样在任何一台机器上就可以实现监控远程多个机器了,信息集中化管理,方便进一步分析。如果你想cpu, memory, io独立的监控,可以多线程或者起多个监控进程,在多线程中需要注意的时候,必须对每个监控实例建立一个telnet连接,get_output是从telnet 建立的socket里面去获取数据,如果多个监控实例用同一个socket会导致数据混乱。

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 性能
上一篇:opencv for python 之 突出点检测
下一篇:python+pygtk+api写的一个简单的词典
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站