当前位置:编程学习 > 网站相关 >>

用python做测试--Python实现远程性能监控

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.zzzyk.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会导致数据混乱。
 
补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,