我们公司混合使用 Citrix XenServer 和 Gentoo/Xen 虚拟化平台。一般来说,我们在有共享存储(SAN、iSCSI 或其他)的地方使用 XenServer,而在想要使用本地存储的地方使用 Gentoo/Xen。
使用 XenServer,我们可以获得 Dom0 和平台上各种 DomU 的详细使用情况统计信息。我们还通过 SNMP(Cacti)监控 DomU。我们可以使用 SNMP 或 SAR 或其他任何方式从 Gentoo/Xen DomU 获取统计信息,但我们无法从 Dom0 获取良好的使用情况统计信息。没有这些,我们就无法评估硬件的使用效率以及何时需要考虑扩容。
我确信这一定是一个已经解决的问题,但是我的 Google-Fu 让我有些失望,所以我希望这里有人可能有一些想法。
干杯
戴夫
答案1
您的问题有点不清楚您希望从 dom0 收集什么样的统计数据,但我认为您想要了解的是现有硬件资源是如何分配的。
我们非常成功地使用 libvirt 的 Python 绑定来获取此信息。以下是说明此想法的 Python 脚本片段:
#!/usr/bin/env python
import sys
import libvirt
def main(options,args):
hypervisors = sys.argv[1:]
print "%16s%18s%18s%18s" % ("dom0 IP", "Free Memory (MB)", "Disk Used (GB)", "Disk Free (GB)")
for ip in hypervisors:
# this assumes "remote" connection to libvirtd using TCP
url = "xen+tcp://%s" % (ip)
conn = libvirt.open(url)
# you may want to do more error handling here
if conn == None:
continue
mem = conn.getFreeMemory() / 1048576 #convert bytes -> megabytes
pool = conn.storagePoolLookupByName('vol0')
# a refresh() is necessary because libvirtd's internal information isn't
# always in sync with the host.
pool.refresh(0)
disk_info = pool.info()
disk_used = disk_info[2] / 1073741824 #convert bytes -> gigabytes
disk_free = disk_info[3] / 1073741824 #convert bytes -> gigabytes
print "%16s%18d%18s%18d" % (ip, mem, disk_used, disk_free)
if __name__ == '__main__':
sys.exit(main(options,args))
答案2
也许如果您让我们确切地知道您正在寻找哪种类型的利用率统计数据,这将有助于引导您找到正确的工具。我完全理解您为什么想要 DomU 统计数据,但我不太明白您为什么想要有关 Dom0 的详细信息。我想如果我确切地知道您在寻找什么,我可能会理解 :-)