设为首页 收藏本站
查看: 2748|回复: 6

[经验分享] python的kvm虚拟机状态值监控

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-3-14 09:30:55 | 显示全部楼层 |阅读模式

python获取kvm虚拟机状态值

测试代码,其中只包含了基本的信息,所有的信息都是通过libvirt的api来获取的。

具体的实现代码可以优化。


  • [Shell] 纯文本查看 复制代码
    import libvirt 
    import memcache 
    import os 
    import time 
    from xml.etree import ElementTree as ET 
     
     
    mc = memcache.Client(['192.168.0.112:11211']) 
    while True: 
        conn = libvirt.open('qemu:///system') 
     
     
        dom = conn.listDomainsID() 
        for i in dom: 
            vmm_id = conn.lookupByID(i) 
            vmm_name = vmm_id.name() 
            if "wrksp" in vmm_name: 
                try: 
            #    vmm_namevmm_name_id = vmm_name.split('-')[1] 
                    vmm_id_str = str(vmm_name) 
                    vmmid = vmm_id_str.split('-')[1] 
                    print vmmid 
                    vmm_dom_xml = vmm_id.XMLDesc(0) 
                    vmm_xml_name = vmm_id_str + '.' + 'xml' 
                    vmm_xml_path = '/tmp/' + vmm_xml_name 
                    print vmm_xml_path 
                    if os.path.exists(vmm_xml_path): 
                        pass 
                    else : 
                        os.mknod(vmm_xml_path) 
                 
                    xml_open = open(vmm_xml_path,'w') 
                    for lines in vmm_dom_xml: 
                        xml_open.write(lines) 
                    xml_open.close() 
                     
                    vmm_xml_open = ET.parse(vmm_xml_path) 
                    path_list=[] 
                    path = vmm_xml_open.findall('//source') 
                    for i in path: 
                        file1 = i.attrib 
                        filename=file1.get('file') 
                        if filename: 
                            path_list.append(filename) 
                     
        #    print path_list 
                    interface_list = [] 
                    interface = vmm_xml_open.findall('//target') 
                    for j in interface: 
                        interface_network = j.attrib 
                        dev1 = interface_network.get('dev') 
                        dev3 = 'vnet' 
                        dev2 = str(dev1) 
                        if dev3 in dev2: 
                            interface_list.append(dev1) 
                     
            #    print interface_list 
                     
                    totalrd = vmmid + 'rd' 
                    totalrd_byte = 0 
                    totalwr = vmmid + 'wr' 
                    totalwr_byte = 0 
                    totalrx = vmmid + 'rx' 
                    totalrx_byte = 0 
                    totaltx = vmmid + 'tx' 
                    totaltx_byte = 0 
                    totalrp = vmmid + 'rp' 
                    totalrx_packet = 0 
                    totaltp = vmmid + 'tp' 
                    totaltx_packet = 0 
                 
                    for image_file in  path_list:   
            #        print image_file 
            #        size = vmm_id.blockInfo(image_file,0) 
                        block_status = vmm_id.blockStatsFlags(image_file,0) 
             
                        totalrd_bytetotalrd_byte = totalrd_byte + block_status['rd_bytes'] 
                        totalwr_bytetotalwr_byte = totalwr_byte + block_status['wr_bytes'] 
                    print totalrd_byte    
                    print totalwr_byte 
            #        print totalwr_byte 
                 
                 
                    for interfaceinfo_path in interface_list: 
                        interfaceinfo = vmm_id.interfaceStats(interfaceinfo_path) 
                        totalrx_bytetotalrx_byte = totalrx_byte + interfaceinfo[0] 
                        totalrx_packettotalrx_packet = totalrx_packet + interfaceinfo[1] 
                        totaltx_bytetotaltx_byte = totaltx_byte + interfaceinfo[4] 
                        totaltx_packettotaltx_packet = totaltx_packet + interfaceinfo[5] 
                 
                    totalmem = vmmid + 'actual' 
                    totalmem_data = 0 
                    rssmem = vmmid + 'rss' 
                    rssmem_data = 0 
                    mem_status = vmm_id.memoryStats() 
                    totalmem_data = mem_status['actual'] 
                    rssmem_data = mem_status['rss']   
            #    print totalmem_data 
            #    print rssmem_data    
                 
                    totalcpu = vmmid + 'cpu' 
                    totalcpu_usage = 0 
                    cpu_time =  vmm_id.info()[4] 
                    timetime1 = time.time() 
                    time.sleep(3) 
                    timetime2 = time.time() 
                    cpu_new_time = vmm_id.info()[4] 
                    totalcpu_usage = int(((cpu_new_time - cpu_time)/((time2 - time1)*10000000))*100) 
                    print totalcpu_usage 
                 
                    mc.set('centosliran', '1234', 20) 
                    mc.set('centos_clusterliran','345',20) 
                    mc.set_multi({totalrd:totalrd_byte,totalwr:totalwr_byte,totalrx:totalrx_byte,totaltx:totaltx_byte,totalrp:totalrx_packet,totaltp:totaltx_packet,totalmem:totalmem_data,rssmem:rssmem_data,totalcpu:totalcpu_usage},60)   
                        #value = mc.get('key') 
                       # print value 
                except: 
                    pass 




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-3917-1-1.html 上篇帖子: windows脚本--往某个文件里增插数据 下篇帖子: Python实现简单的打包 监控 kvm python 虚拟机

尚未签到

发表于 2013-3-19 05:55:14 | 显示全部楼层
爱护环境,人人有病。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-17 13:49:01 | 显示全部楼层
解释就系掩饰,掩饰等于无出色,无出色不如回家休息!!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-20 21:46:27 | 显示全部楼层
男人与女人,终究也只是欲望的动物吧!真的可以因为爱而结合吗?对不起,我也不知道。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-25 04:12:48 | 显示全部楼层
学习了,不错,讲的太有道理了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-31 16:13:39 | 显示全部楼层
老天,你让夏天和冬天同房了吧?生出这鬼天气!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-5 16:58:04 | 显示全部楼层
沒有激情的亲吻,哪來床上的翻滾?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表