码迷,mamicode.com
首页 > 编程语言 > 详细

python的kvm虚拟机状态值监控

时间:2016-07-13 23:27:21      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:python   import   虚拟机   信息   监控   


python获取kvm虚拟机状态值

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

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


本文出自 “目标:印度” 博客,请务必保留此出处http://shunzi115.blog.51cto.com/5184443/1826170

python的kvm虚拟机状态值监控

标签:python   import   虚拟机   信息   监控   

原文地址:http://shunzi115.blog.51cto.com/5184443/1826170

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!