Назад | Перейти на главную страницу

Мониторинг производительности и использования Xen Dom0

В нашей компании мы используем разные платформы виртуализации Citrix XenServer и Gentoo / Xen. В общем, мы используем XenServer там, где у нас есть общее хранилище (SAN, iSCSI или что-то еще), и Gentoo / Xen, где мы хотим использовать локальное хранилище.

С XenServer мы можем получить подробную статистику использования как Dom0, так и различных DomU на платформе. Мы также отслеживаем DomU через SNMP (Cacti). Мы можем получить статистику от Gentoo / Xen DomU, используя SNMP, SAR или что-то еще, но мы не можем получить хорошую статистику использования от Dom0. Без этого мы не сможем оценить, насколько эффективно мы используем оборудование и когда нам нужно рассмотреть возможность строительства.

Я уверен, что это решенная проблема, но мой Google-Fu меня несколько подвел, поэтому я надеюсь, что у кого-то здесь могут быть идеи.

Ура

Дэйв

Ваши вопросы немного неясны относительно того, какую статистику вы надеетесь собрать с dom0, но я думаю, что вы ищете понимание того, как распределяются ваши существующие аппаратные ресурсы.

Мы очень успешно используем привязки Python для libvirt для получения этой информации. Вот фрагмент сценария 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))

Может быть, если вы сообщите нам, какой именно тип статистики использования вы ищете, это поможет вам выбрать нужный инструмент (ы). Я полностью понимаю, почему вам нужна статистика DomU, но я не совсем понимаю, зачем вам нужна подробная информация о Dom0. Думаю, если бы я точно знал, что вы ищете, я бы понял :-)