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