技术开发 频道

利用Python获取KVM虚拟机监控信息

  【IT168 技术】KVM(Kernel-based Virtual Machine)作为一个开源的系统虚拟化模块,已经成为虚拟机虚拟化技术的主流,在越来越多的Cloud环境中使用。为了保证Cloud环境的正常运行,需要在运维过程中对Cloud环境中的VM状态进行监控,比如CPU,内存,Disk,Disk I/O,Network I/O等信息,可以利用这些信息及时的调整分配Cloud环境的资源,保证VM的正常运行。Libvirt是基于KVM的上层封装,提供了操作KVM的原生层接口,可以实现对虚拟机的日常管理操作,如虚拟机的生命周期(创建,删除,查看,管理),开机,关机,重启,网络管理,存储管理等。本文以查看hypervisor的instance为例,讲述通过Libvirt-python模块,查看当前HOST的KVM虚拟机常用监控信息。文章主要包括如下几个方面的内容:

  1、 Libvirt-python模块的简单介绍与环境安装配置;

  2、 利用Python调用API获取 VM相关监控信息;

  1. Libvirt-python模块的简单介绍与安装配置

  Libvirt提供一种虚拟机监控程序不可知的 API 来安全管理运行于主机上的客户操作系统,是一种可以建立工具来管理客户操作系统的 API。Libvirt 本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API,适用于包括基于KVM/QEMU, Xen, LXC, OpenVZ, Virtualbox, VMware, PowerVM等多种虚拟机化技术的虚拟机。Libvirt-python是基于libvirt API的python语言绑定工具包,通过该包,可以使用python对VM进行日常管理操作和监控数据获取。需要运行的Python监控程序可以在KVM的HOST中运行,也可以在基于KVM虚拟机化的任意环境运行,需要做的配置如下:

  1) 环境准备:

  安装python 2.6及以上(下载地址https://www.python.org/downloads/)

  安装libvirt 1.2及以上(http://libvirt.org/sources/)

  安装libvirt-client 1.2及以上(http://libvirt.org/sources/)

  安装libvirt-python1.2及以上(http://libvirt.org/sources/)

  以上环境如果已经在操作系统中存在并且满足要求,不需要进行重复安装,可以在libvirt的官方网站(http://libvirt.org/downloads.html)选择不同的站点和适合自己操作系统的安装包进行下载安装。

利用Python获取KVM虚拟机监控信息

  2) 验证安装环境:

  安装完上述安装包后,在命令行运行rpm -qa | grep libvirt 查看相关安装信息是否正确如图:

利用Python获取KVM虚拟机监控信息

  在命令行运行python命令查看python环境

利用Python获取KVM虚拟机监控信息

  在命令行运行virsh进入virsh命令行窗口

利用Python获取KVM虚拟机监控信息

  执行list –all,列出所有虚拟机,执行dommemstat domainID验证windows虚拟机内存信息

利用Python获取KVM虚拟机监控信息

  unused代表虚机内部未使用的内存量,available代表虚机内部识别出的总内存量,那么虚机内部的内存使用量则是(available-unused)。

  如果windows虚拟机中没有unused值,

利用Python获取KVM虚拟机监控信息

  按下一步安装virtio-win驱动和balloon service,并且启动balloon service

  3) windows虚拟机Windows Virtio Drivers安装。

  1、下载地址http://fedoraproject.org/wiki/Windows_Virtio_Drivers,根据自己需求下载相应版本,这里以下载Stable virtio-win iso为例。

  2、安装驱动

  3、安装Balloon Services,

  在python应用运行环境验证servie,查看该VM 内存信息。

利用Python获取KVM虚拟机监控信息

  2. 利用Python调用API获取 VM相关监控信息

  2.1创建连接

  Python的管理应用程序可以和域位于同一节点上,管理应用程序通过libvirt工作,以控制本地域,如下图:

利用Python获取KVM虚拟机监控信息

  也可以运行在远端,通过本地libvirt连接远端libvirt,以控制本地域,该模式使用一种运行于远程节点上的libvirtd守护进程。当在新节点上安装libvirt时该程序会自动启动,且可自动确定本地虚拟机监控程序并为其安装驱动程序。该管理应用程序通过一种通用协议从本地libvirt连接到远程libvirtd。

利用Python获取KVM虚拟机监控信息

4
相关文章