7575import com .xensource .xenapi .Types .VmPowerState ;
7676import com .xensource .xenapi .Types .XenAPIException ;
7777import com .xensource .xenapi .VBD ;
78- import com .xensource .xenapi .VBDMetrics ;
7978import com .xensource .xenapi .VDI ;
8079import com .xensource .xenapi .VGPU ;
8180import com .xensource .xenapi .VIF ;
@@ -2251,23 +2250,15 @@ protected HostStatsEntry getHostStats(Connection conn, GetHostStatsCommand cmd,
22512250
22522251 if (type .equalsIgnoreCase ("host" )) {
22532252
2254- if (param .contains ("pif_eth0_rx" )) {
2255- hostStats .setNetworkReadKBs (getDataAverage (dataNode , col , numRows ));
2256- }
2257-
2258- if (param .contains ("pif_eth0_tx" )) {
2259- hostStats .setNetworkWriteKBs (getDataAverage (dataNode , col , numRows ));
2260- }
2261-
2262- if (param .contains ("memory_total_kib" )) {
2253+ if (param .matches ("pif_eth0_rx" )) {
2254+ hostStats .setNetworkReadKBs (getDataAverage (dataNode , col , numRows )/1000 );
2255+ } else if (param .matches ("pif_eth0_tx" )) {
2256+ hostStats .setNetworkWriteKBs (getDataAverage (dataNode , col , numRows )/1000 );
2257+ } else if (param .contains ("memory_total_kib" )) {
22632258 hostStats .setTotalMemoryKBs (getDataAverage (dataNode , col , numRows ));
2264- }
2265-
2266- if (param .contains ("memory_free_kib" )) {
2259+ } else if (param .contains ("memory_free_kib" )) {
22672260 hostStats .setFreeMemoryKBs (getDataAverage (dataNode , col , numRows ));
2268- }
2269-
2270- if (param .contains ("cpu" )) {
2261+ } else if (param .matches ("cpu_avg" )) {
22712262 // hostStats.setNumCpus(hostStats.getNumCpus() + 1);
22722263 hostStats .setCpuUtilization (hostStats .getCpuUtilization () + getDataAverage (dataNode , col , numRows ));
22732264 }
@@ -2378,13 +2369,16 @@ protected HashMap<String, VmStatsEntry> getVmStats(Connection conn, GetVmStatsCo
23782369 if (param .contains ("cpu" )) {
23792370 vmStatsAnswer .setNumCPUs (vmStatsAnswer .getNumCPUs () + 1 );
23802371 vmStatsAnswer .setCPUUtilization (((vmStatsAnswer .getCPUUtilization () + getDataAverage (dataNode , col , numRows ))));
2381- } else if (param .matches ("vif_\\ d_rx" )) {
2382- vmStatsAnswer .setNetworkReadKBs (vmStatsAnswer .getNetworkReadKBs () + (getDataAverage (dataNode , col , numRows ) / (8 * 2 )));
2383- } else if (param .matches ("vif_\\ d_tx" )) {
2384- vmStatsAnswer .setNetworkWriteKBs (vmStatsAnswer .getNetworkWriteKBs () + (getDataAverage (dataNode , col , numRows ) / (8 * 2 )));
2372+ } else if (param .matches ("vif_\\ d*_rx" )) {
2373+ vmStatsAnswer .setNetworkReadKBs (vmStatsAnswer .getNetworkReadKBs () + (getDataAverage (dataNode , col , numRows )/1000 ));
2374+ } else if (param .matches ("vif_\\ d*_tx" )) {
2375+ vmStatsAnswer .setNetworkWriteKBs (vmStatsAnswer .getNetworkWriteKBs () + (getDataAverage (dataNode , col , numRows )/1000 ));
2376+ } else if (param .matches ("vbd_.*_read" )) {
2377+ vmStatsAnswer .setDiskReadKBs (vmStatsAnswer .getDiskReadKBs () + (getDataAverage (dataNode , col , numRows )/1000 ));
2378+ } else if (param .matches ("vbd_.*_write" )) {
2379+ vmStatsAnswer .setDiskWriteKBs (vmStatsAnswer .getDiskWriteKBs () + (getDataAverage (dataNode , col , numRows )/1000 ));
23852380 }
23862381 }
2387-
23882382 }
23892383
23902384 for (Map .Entry <String , VmStatsEntry > entry : vmResponseMap .entrySet ()) {
@@ -2399,36 +2393,6 @@ protected HashMap<String, VmStatsEntry> getVmStats(Connection conn, GetVmStatsCo
23992393 s_logger .debug ("Vm cpu utilization " + vmStatsAnswer .getCPUUtilization ());
24002394 }
24012395 }
2402-
2403- try {
2404- for (String vmUUID : vmUUIDs ) {
2405- VM vm = VM .getByUuid (conn , vmUUID );
2406- VmStatsEntry stats = vmResponseMap .get (vmUUID );
2407- double diskReadKBs = 0 ;
2408- double diskWriteKBs = 0 ;
2409- for (VBD vbd : vm .getVBDs (conn )) {
2410- VBDMetrics vbdmetrics = vbd .getMetrics (conn );
2411- if (!isRefNull (vbdmetrics )) {
2412- try {
2413- diskReadKBs += vbdmetrics .getIoReadKbs (conn );
2414- diskWriteKBs += vbdmetrics .getIoWriteKbs (conn );
2415- } catch (Types .HandleInvalid e ) {
2416- s_logger .debug ("vbdmetrics doesn't exist " );
2417- }
2418- }
2419- }
2420- if (stats == null ) {
2421- stats = new VmStatsEntry ();
2422- }
2423- stats .setDiskReadKBs (diskReadKBs );
2424- stats .setDiskWriteKBs (diskWriteKBs );
2425- vmResponseMap .put (vmUUID , stats );
2426- }
2427- } catch (Exception e ) {
2428- s_logger .warn ("Error while collecting disk stats from : " , e );
2429- return null ;
2430- }
2431-
24322396 return vmResponseMap ;
24332397 }
24342398
0 commit comments