Libvirt
Libvirt 是一个软件集合,便于使用者管理虚拟机和使用其他虚拟化功能。包括三个部分
- API库
- libvitd 守护进程 daemon
- 命令行工具 virsh
Libivrt 目标是提供一种单一的方式管理多种不同的虚拟化方式
Libvirt 主要功能包括:
- 虚拟机管理:比如:启动、停止、暂停、保存、恢复、迁移(支持多种设备热插拔包括磁盘、网卡、内存、CPU)
- 远程机器支持:只要机器上运行了 libvirtd daemon
- 存储管理
- 网络接口管理
- 虚拟NAT和基于路由的网络
获取每个 instance 的 domain 并获取一些基本信息
import libvirt
conn = libvirt.open("qemu:///system")
conn.listDomainsID()
domain = conn.lookupByID(id)
print domain.name()
###instance-0000094f
print domain.UUIDString()
###a14d2bb4-9f44-4580-b60a-fd94a9ad07f3
print domain.info()
###[1, 2097152L, 2097152L, 2, 123420000000L]
conn.close()
获取CPU使用率
import libvirt
conn = libvirt.open("qemu:///system")
domain = conn.lookupByID(id)
可以通过dom.info()[4]获得cputime
通过dom.info()[3]获得cpu数
获取网流量
import libvirt
from xml.etree import ElementTree
conn = libvirt.open("qemu:///system")
for id in conn.listDomainsID():
domain = conn.lookupByID(id)
tree = ElementTree.fromstring(domain.XMLDesc())
ifaces = tree.findall('devices/interface/target')
for i in ifaces:
iface = i.get('dev')
ifaceinfo = domain.interfaceStats(iface)
print domain.name(),iface,ifaceinfo
conn.close()
[root@kvm opt]# python libvirt_test.py
instance1 vnet12 (90L, 1L, 0L, 0L, 1632L, 24L, 0L, 0L)
instance1 vnet13 (63120L, 256L, 0L, 371L, 0L, 0L, 0L, 0L)
domain.interfaceStats(iface)返回结果说明:
(rx_bytes:24194376L, rx_packets:363592L, rx_errs:0L, rx_drop:0L, tx_bytes:852996L, tx_packets:20302L, tx_errs:0L, tx_drop:0L)
rx:net_out 接收(receive)
tx:net_in 发送(transport)
iface = ifaces[1].get(‘dev’)
ifaceinfo = domain.interfaceStats(iface)【4】
https://blog.51cto.com/10616534/1878609