服务器的虚拟化已经越来越多的为企业所采纳,同时对虚拟化环境中服务器的集中监控,也成为企业IT管理标准配置。这种情况下,如何从已经监控得到的海量数据中分析虚拟化环境计算资源的使用情况,成为IT管理者最关心的问题,同时也是企业IT投资的重要参考依据。本文以ITM(IBM Tivoli Monitoring)对VMware 虚拟化环境的监控数据为基础,从以下几个方面,介绍如何获取和分析计算资源的利用率:
·阐述如何配置VMware VI Agent属性组收集虚拟化环境监控数据到数据仓库。
·介绍ITM数据仓库中VMware VI监视代理相关数据表格。
·虚拟机和虚拟化服务器计算资源利用率相关数据分析。
1. 配置VMware VI Agent属性组收集虚拟化环境监控数据到数据仓库
本节以一个典型ITM监控VMware虚拟化环境下的方案为例,介绍如何配置监控数据的收集。图1是一个典型的ITM监控环境部署方案。在这里主要关注TEPS(Tivoli Enterprise Portal Server) 和数据仓库TDW(Tivoli Data Warehouse)。Tivoli Enterprise Portal 提供了历史数据收集和报告功能,配置并启动了历史数据收集后,可将数据复制到Tivoli 数据仓库长期存储。通过“历史收集配置”窗口,可以为各个属性组配置历史数据收集,并指定要从哪些受管系统收集数据、收集数据的频率、短期内数据的存储位置以及是否将数据长期保存到数据仓库。
图1 ITM监控部署典型架构
首先以管理员sysadmin的身份登录到门户服务器TEPS,在工具栏内选择“History Configuration … (Ctrl + H)”,出现如图2所示的历史数据配置界面。
图2 监控历史记录配置界面
历史数据配置页面的左侧列表,显示了所有已安装的监视代理程序。选择“VMware VI agent”应用,右侧会显示此应用所包含的所有属性组的信息。如图3所示:
图3 配置VMware VI Agent历史数据界面
对于VMware虚拟化环境收集利用率数据,主要配置有关CPU和内存的属性组如下:
· KVM_SERVER à“服务器”属性组:ESX服务器的基本信息
· KVM_SERVER_CPU à“服务器CPU”属性组:服务器的CPU利用率信息
· KVM_SERVER_MEMORY à“服务器内存”属性组:服务器的内存利用率信息
· KVM_VIRTUAL_MACHINES à“虚拟机”属性组:服务器上运行的虚拟机的基本信息
· KVM_VM_CPU à“VM CPU”属性组:虚拟机的CPU利用率信息
· KVM_VM_MEMORY à“VM 内存”属性组:虚拟机的内存利用率信息
在摘要区域,选择要收集的所有时间段的复选框:每年、每季度、每月、每周、每日和每小时。在修剪区域,选择要修剪的所有时间段的复选框:每年、每季度、每月、每周、每日和每小时。在相应的字段中,指定要保留数据的天数、月数或年数。单击应用以保存选中的属性组的配置。这样就可以将历史数据保存到ITM数据仓库。
#p#
2. ITM数据仓库中VMware VI监视代理相关数据表格介绍
ITM监控数据收集到数据仓库后,针对不同的收集频率,会存储到不同的数据库表中。不同频率的监控数据,可以根据不同的需求进行分析。下面以虚拟机CPU数据信息为例,列出了对应数据表和存储内容。数据库中表的显示如图4中所示。
· KVM_VM_CPU_H:每小时
· KVM_VM_CPU_D:每日
· KVM_VM_CPU_W:每周
· KVM_VM_CPU_M:每月
· KVM_VM_CPU_Q:每季度
· KVM_VM_CPU_Y:每年
图4 ITM数据仓库中虚拟机CPU相关数据表
下面详细介绍虚拟机和主机利用率分析中所需要考虑的属性,同时对于每个属性,都从不同的角度进行记录(如最小CPU利用率:MIN_CPU_Utilization和平均CPU利用率:AVG_CPU_Utilizaiton),在这里从某一天天的平均利用率的角度进行分析。
虚拟机CPU “利用率”属性是指CPU利用率的百分比,计算方法是用户时间除以已用时间、就绪时间和等待时间之和,一般取每天的平均利用率数据,在数据库表KVM_VM_CPU_D中字段名称为“AVG_Utilization”。
虚拟机内存“主机利用率”属性是指在上一个数据采样时间间隔内,虚拟机所用内存的百分比(平均值),是MemoryHostUsage除以MemoryTotalSize的百分比,在数据库表KVM_VM_MEMORY_D中字段名称是“AVG_Host_Util”。
服务器CPU“利用率”属性记录虚拟化主机的CPU利用率,数据库表KVM_SERVER_CPU_D中字段名称是“AVG_CPU_Utilization”。
服务器内存“利用率”属性记录虚拟化主机物理内存的利用率,即所有物理内存除以已安装的物理内存所得的百分比,数据库表KVM_SERVER_MEMORY_D中字段名称是“AVG_Memory_Utilization”。
除了上面的利用率数据字段外,还有两个重要的字段需要注意。
· “SHIFTPERIOD”是 “轮班和休假周期”的标志位。如果启用轮班,根据数据仓库中配置的高峰期和非高峰期,小时轮班表中为1或2,日轮班表中相对应的值是1和2,与日摘要值相对应的是-1。如果不启用轮班,缺省是-1。如果未启用休假周期,缺省为-1。在按照天的数据中,这个字段的值为“-1”。
“WRITETIME”记录的是数据写入时间,格式为“1120907000000000”。字段中第二,三位为年份的最后两位,接下来是两位月和两位的日。上面的例子代表的是2012年9月7日的数据。
[page]WITH temp1
AS (SELECT concat('20',(substr(a.WRITETIME,2,6))) as Date, a."VM_Name" AS VM_NAME, a."AVG_Host_Util" AS AVG_Host_UtilFROM ITMUSER.KVM_VM_MEMORY_D AS a
WHERE a.SHIFTPERIOD =-1AND a.WRITETIME ='1120923000000000'ORDER BY a."VM_Name"),
temp2
AS (SELECT concat('20',(substr(b.WRITETIME,2,6))) as Date, b."VM_Name" AS VM_NAME, AVG(b."AVG_Utilization") AS AVG_CPU_UtilFROM ITMUSER.KVM_VM_CPU_D AS b
WHERE b.SHIFTPERIOD =-1AND b.WRITETIME ='1120923000000000'GROUP BY b.WRITETIME, b."VM_Name", b."AVG_Utilization")
SELECT temp1.Date,
temp1.VM_NAME,
temp1.AVG_Host_Util,
temp2.AVG_CPU_Util
FROM temp1
LEFT OUTER JOIN temp2
ON ( temp1.VM_NAME = temp2.VM_NAME )
图5 虚拟机CPU/内存利用率查询结果
图6 虚拟机CPU/内存利用率分析
从上图中可以看到,大部分的虚拟机的CPU利用率都比较低,同时有些特殊的情况,比如内存利用率过高但是CPU利用率很低。对于这些虚拟机,可以进行进一步的分析如何对他们合理分配资源,以提高利用率。
#p#
3. 虚拟化服务器利用率
对于虚拟化服务器的利用率情况,我们采用类似虚拟机的方法来分析。下面的查询语句所得到的查询结果如图7中所示。
WITH temp1
AS(SELECT concat('20',(substr(b.WRITETIME,2,6))) as Date, b."Server_Hostname" AS Server_Name, AVG(b."AVG_CPU_Utilization") as CPU_Utilization FROM itmuser.kvm_server_cpu_d b
WHERE b.shiftperiod =-1AND b.writetime ='1120923000000000' GROUP BY b.writetime, b."Server_Hostname"),
temp2 AS(SELECT concat('20',(substr(a.WRITETIME,2,4))) as Date, a."Server_Hostname" AS Server_Name, a."AVG_Memory_Utilization" as Memory_Utilization FROM itmuser.kvm_server_memory_d a
WHERE a.shiftperiod =-1AND a.writetime ='1120923000000000' )SELECT temp1.Date,
temp1.Server_NAME,
temp1.CPU_Utilization,
temp2.Memory_Utilization
FROM temp1
LEFT OUTER JOIN temp2
ON ( temp1.Server_NAME = temp2.Server_NAME )[page]
图7 虚拟服务器CPU/内存利用率查询结果
图8 虚拟服务器CPU/内存利用率分析
从图8中可以看到,大部分的虚拟服务器的CPU利用率都很低,也就是说整个虚拟化环境中CPU并不是计算资源的瓶颈,但是也有几台是CPU利用率很高同时内存利用率很低,这些机器是需要进一步的分析如何对他们合理分配资源。
#p#
4. 总结
本文主要以VMware虚拟化环境为例,讨论了ITM监控解决方案中虚拟机和虚拟化主机的CPU,内存利用率数据的获得和分析。这里的利用率数据是基于历史记录中某一天的数据,如果综合考虑某一段时间的利用率情况,就可以生成虚拟机和服务器主机的利用率的发展趋势,从而可以用来衡量IT部门在计算资源利用率的提高方面所取得的成效。
基于ITM监控数据的VMware虚拟化环境资源利用率的分析,不仅可以考虑CPU,内存的数据,还可以包含硬盘,网络等方面,在ITM数据仓库中对应的属性组分别是“VM磁盘”属性组(KVM_VM_DISK_D),“VM 网络”属性组(KVM_VM_NETWORK_D),“服务器磁盘”属性组(KVM_SERVER_DISK_D)和“服务器网络”属性组(KVM_SERVER_NETWORK_D)。更多的VMware虚拟化环境中属性相关信息,可以参考VMware VI Agent 监视代理用户手册的 “属性参考”部分。
ITM同时还可以支持其他虚拟化环境的数据收集,下面简单列出了部分有关属性组的信息供参考:
· KVM虚拟化环境:KV1_HOST_CPU,KV1_HOST_MEMORY,KV1_VIRTUAL_MACHINES
· Citrix Xen虚拟化环境:KXI_HOST_CPU,KXI_HOST_VMS,KXI_HOST_DETAILS
· Hyper-v虚拟化环境:KHV_HYPER_V_VIRTUAL_MACHINE_SUMMARY,KHV_PROCESSOR, KHV_MEMORY,KHV_DISK,KHV_HYPER_V_VIRTUAL_SWITCH