KVM 使用 Libvirt遠程獲取虛擬機信息

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章