python的kvm虚拟机状态值监控

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

时间: 2024-12-16 08:16:23

python的kvm虚拟机状态值监控的相关文章

通过python获取kvm虚拟机的监控信息(基于libvirt API)

通常在我们的云环境中,为了保证云平台中虚拟机的正常运行,基本都需要这样一个功能,就是收集虚拟机的监控数据,比如cpu的使用率.内存的使用率.磁盘io.网络io等基本信息.可以利用这些信息及时调整云平台环境中出现的一些问题,从而实现保证VM的正常运行. 说到KVM管理工具,首先应该想到的就是libvirt,因为目前对KVM使用最为广泛的管理工具(应用程序接口)就是libvirt.Libvirt本身构建于一种抽象的概念上,它为受支持的虚拟机监控程序实现常用功能提供通用的API.Libvirt提供了操

linux系统下kvm虚拟机的安装

一 KVM虚拟机简介 KVM是kernel-based Virtual Machine的简称,目前已成为学术界的主流VMM之一.KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术) 是基于硬件的完全虚拟化.KVM的安装和使用相对于XEN来说十分的简单和方便,并且功能强大,比较适用于高性能计算服务的云计算环境中作为IAAS层的虚拟化部署工作 不得不提的是甲骨文公司的VirtualBox也很强大,各方面与KVM可以相媲美,但是现在不开源比较昂贵一般的云计算平台很少使用.至于完全虚拟

KVM虚拟机的安装和日常管理

公司为了节约成本,需要把一部分业务迁到虚拟化平台上,今天把虚拟机装了出来,记一下笔记 1.物理机的系统安装(硬盘为300G+300G): centos6.5 64位,不安装桌面环境,默认运行级别为3 分区: /boot 128M swap 8G / 20G /data1  第一块硬盘剩余空间 /data2  第二块硬盘全部空间 采用最小化安装+以下软件包: BaseSystem -- Base Development-- Development tools 要配置好dns 确定系统时间与北京时间

KVM虚拟机快照链创建,合并,删除及回滚研究

1 QEMU,KVM,libvirt关系 QEMU QEMU提供了一个开源的服务器全虚拟化解决方案,它可以使你在特定平台的物理机上模拟出其它平台的处理器,比如在X86 CPU上虚拟出Power的CPU,此时的guest OS感觉不到虚拟机的存在,就像运行在物理机上,QEMU可以单独使用模拟CPU和各种外设,也可以作为一个用户空间工具和运行在内核中的KVM结合使用以充分发挥KVM的功能,QEMU的wiki KVM KVM是一个基于内核的虚拟机(Linux中一个可加载模块),在硬件支持虚拟化(int

使用collectd与visage收集kvm虚拟机性能实时图形

软件功能: 通过collectd软件来监控收集kvm虚拟机的性能数据,包含cpu,memory.磁盘IO.网络流量等 通过visage软件将收集到的数据绘制图形. 安装: 系统环境:ubuntu12.04 collectd 首先.在collectd官网下载collectd包collectd-5.4.0 安装collectd依赖包 apt-get install bison flex autoconf pkg-config libtool libgcrypt11-dev librrd-dev 安装

centos下C编程调用libvirt的API访问KVM虚拟机

一.简介 libvirt是一套免费.开源的支持Linux下主流虚拟化工具的C函数库,其旨在为包括Xen在内的各种虚拟化工具提供一套方便.可靠的编程接口,支持与C,C++,Ruby,Python等多种主流开发语言的绑定.当前主流Linux平台上默认的虚拟化管理工具virt-manager(图形化),virt-install(命令行模式)等均基于libvirt开发而成. 本文基于libvirt,使用它的C函数库进行虚拟机的相应操作. 二.详解 1.创建虚拟机 (1)C语言代码 /**********

KVM虚拟机的安装和使用方法

一 KVM虚拟机简介 KVM是kernel-based Virtual Machine的简称,目前已成为学术界的主流VMM之一.KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化.KVM的安装和使用相对于XEN来说十分的简单和方便,并且功能强大,比较适用于高性能计算服务的云计算环境中作为IAAS层的虚拟化部署工作.不得不提的是甲骨文公司的VirtualBox也很强大,各方面与KVM可以相媲美,但是现在不开源比较昂贵一般的云计算平台很少使用.至于完全虚拟

KVM虚拟机快照研究(一)

KVM虚拟机的快照用来保存虚拟机在某个时间点的内存.磁盘或者设备状态,如果将来有需要可以把虚拟机的状态回滚到这个时间点. 根据被做快照的对象不同,快照可以分为磁盘快照和内存快照,两者加起来构成了一个系统还原点,记录虚拟机在某个时间点的全部状态:根据做快照时虚拟机是否在运行,快照又可以分为在线快照和离线快照. 磁盘快照根据存储方式的不同,又分为内部快照和外部快照:内部快照只支持qcow2格式的虚拟机镜像,把快照及后续变动都保存在原来的qcow2文件内:外部快照在创建时,快照被保存在单独一个文件中,

KVM虚拟机快照研究(二)

使用Python脚本操作快照 上一篇中介绍了KVM虚拟机各种快照的原理和命令行操作方法,由于磁盘外部快照最实用,所以本篇主要讲怎么利用Libvirt api操作磁盘外部快照.其中会涉及一些Libvirt api的基本用法,也会一起介绍. 操作环境 环境同上篇.Python与libvirt服务交互用的是libvirt模块:操作虚拟机的XML描述文件用的是xml.dom模块. 创建快照 我们要完成的功能是,给出一个虚拟机的名称,创建这个虚拟机的磁盘快照. 首先建立与libvirt服务的连接,然后根据