服務器的虛擬化已經越來越多的為企業所采納,同時對虛擬化環境中服務器的集中監控,也成為企業IT管理標準配置。這種情況下,如何從已經監控得到的海量數據中分析虛擬化環境計算資源的使用情況,成為IT管理者最關心的問題,同時也是企業IT投資的重要參考依據。本文以ITM(IBM Tivoli Monitoring)對VMware 虛擬化環境的監控數據為基礎,從以下幾個方面,介紹如何獲取和分析計算資源的利用率:
闡述如何配置VMware VI Agent屬性組收集虛擬化環境監控數據到數據倉庫。
介紹ITM數據倉庫中VMware VI監視代理相關數據表格。
虛擬機和虛擬化服務器計算資源利用率相關數據分析。
1. 配置VMware VI Agent屬性組收集虛擬化環境監控數據到數據倉庫
本節以一個典型ITM監控VMware虛擬化環境下的方案為例,介紹如何配置監控數據的收集。圖1是一個典型的ITM監控環境部署方案(關于如何部署ITM監控VMware虛擬化環境,請參考IT168上的文章: 應用IBM Tivoli實現虛擬化環境的監控)。在這里主要關注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數據倉庫。
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日的數據。
3. 計算資源的利用率分析
根據以上ITM數據倉庫中數據表的分析,就可以通過SQL語句取得所需要的利用率數據,下面分別對虛擬機和虛擬化主機利用率進行分析。
3.1 虛擬機利用率
首先從數據庫中查詢出某一天所有虛擬機的CPU和內存的利用率信息。下面的示例SQL語句可以查詢出ITM監控環境中所有的VMware VI agent監視代理所監控到的虛擬機在2012年9月23日的CPU和內存利用率數據信息。查詢所得到的結果如圖5所示。
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_Util
FROM ITMUSER.KVM_VM_MEMORY_D AS a
WHERE a.SHIFTPERIOD = -1
AND 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_Util
FROM ITMUSER.KVM_VM_CPU_D AS b
WHERE b.SHIFTPERIOD = -1
AND 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/內存利用率查詢結果
虛擬機CPU和內存的利用率數據已經取得,那么如何對這些數據進行分析呢?這里可以定義不同的利用率狀態如下:
低:小于20%
較低:20%到40%之間
正常:40%到60%之間
高:60%到80%之間
過高:大于80%
根據以上的定義,可以得到如圖6所示的利用率情況報表。我們可以從圖上清楚的了解到在虛擬化環境中,有多少虛擬機的CPU和內存利用率低,有多少已經達到了很高的值。根據這些基本數據,管理員可以對虛擬機的配置進行重新分配,以提高主機利用率,同時提高虛擬機運行性能。
▲圖6 虛擬機CPU/內存利用率分析
從上圖中可以看到,大部分的虛擬機的CPU利用率都比較低,同時有些特殊的情況,比如內存利用率過高但是CPU利用率很低。對于這些虛擬機,可以進行進一步的分析如何對他們合理分配資源,以提高利用率。
3.2 虛擬化服務器利用率
對于虛擬化服務器的利用率情況,我們采用類似虛擬機的方法來分析。下面的查詢語句所得到的查詢結果如圖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 = -1
AND 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 = -1
AND 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 )
▲圖7 虛擬服務器CPU/內存利用率查詢結果
▲圖8 虛擬服務器CPU/內存利用率分析
從圖8中可以看到,大部分的虛擬服務器的CPU利用率都很低,也就是說整個虛擬化環境中CPU并不是計算資源的瓶頸,但是也有幾臺是CPU利用率很高同時內存利用率很低,這些機器是需要進一步的分析如何對他們合理分配資源。
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