Quantcast
Channel: VMware Communities : Discussion List - vRealize Orchestrator
Viewing all articles
Browse latest Browse all 6251

VcPerformanceManager and its query

$
0
0

Hello, i trie to get the Energy-Information from  an single ESXi Host via the PerformanceManager. (see attached picture)

 

I used Onyx Proxy to get the Informations which classes are used there.

I used as basic this example: https://communities.vmware.com/thread/419294 and modified a little bit to a single query.

This is my code of a Scriptable Task (Input to this Scriptable Task is a single Host (VC:HostSystem) named: host) :

 

var currentTime = System.getCurrentTime();
// reduce 15 Minutes
var startTime = currentTime - (900 * 1000);
var myEndDate = new Date();
myEndDate.setTime(currentTime);
var myStartDate = new Date();
myStartDate.setTime(startTime);
// https://communities.vmware.com/thread/419294
var myQuery = new Array();
myQuery[0] = new VcPerfQuerySpec();
myQuery[0].startTime = myStartDate;
myQuery[0].endTime = myEndDate;
myQuery[0].format = VcPerfFormat.normal;
myQuery[0].entity = host.reference;
myQuery[0].intervalId = 20;
myQuery[0].metricId = host.sdkConnection.perfManager.queryAvailablePerfMetric(host.reference,null,null,20);
/* Return Type: VcPerfEntityMetricBase[] -> Base type for the various VcPerfEntityMetric encodings. */
var result = host.sdkConnection.perfManager.queryPerf(myQuery);
for(var i in result)
{       var perfMetricSeries = result[i].value; //VcPerfMetricSeries[]    var perfSampleInfo = result[i].sampleInfo; //VcPerfSampleInfo[]    for(var j in perfSampleInfo)    {        //System.log(j+"->"+perfSampleInfo[j].timestamp);    }    var y = 0;    for(var k in perfMetricSeries)    {        if(host.sdkConnection.perfManager.perfCounter[perfMetricSeries[k].id.counterId] != null)        {            var labelInfo = host.sdkConnection.perfManager.perfCounter[perfMetricSeries[k].id.counterId].nameInfo.label            var groupInfo = host.sdkConnection.perfManager.perfCounter[perfMetricSeries[k].id.counterId].groupInfo.label;            var unitInfo = host.sdkConnection.perfManager.perfCounter[perfMetricSeries[k].id.counterId].unitInfo.label;                       if(unitInfo == "Joule")            {                // this was a try to find which Group / Label has "Joule" as unit                //System.log("Group: "+groupInfo+ " - "+ labelInfo);            }            if(groupInfo == "Power")            {                // this wa a test to see what is in the group "Power"                // System.log("Label: " +labelInfo +" - "+ unitInfo);            }            if(perfMetricSeries[k].id.counterId == 314)            {                // CounterID 314 was displayed in Onyx Proxy                System.log("314!!!! Group: "+groupInfo+ " - "+ labelInfo +" - "+ unitInfo);            }                       if(groupInfo == "Power" && labelInfo == "Host Power Capacity Provisioned" && unitInfo =="Percent")            {                System.log("Power -> Host Power Capacity Provisioned -> Percent")                var m = 0;                for(var z in perfMetricSeries[k].value)                {                    if(perfMetricSeries[k].value[z] != 0 && perfMetricSeries[k].value[z]!= "0")                    {                        System.log(m+"->"+perfMetricSeries[k].value[z]);                        m++;                    }                }                           }            if(groupInfo == "Power" && labelInfo == "Energy usage" && unitInfo =="Joule")            {                System.log("Power -> Energy usage -> Joule")                // System.log(y + "-> Power");                y++;                var m = 0;                for(var z in perfMetricSeries[k].value)                {                    if(perfMetricSeries[k].value[z] != 0 && perfMetricSeries[k].value[z]!= "0")                    {                        System.log(m+"->"+perfMetricSeries[k].value[z]);                        m++;                        // System.log(perfSampleInfo[k].timestamp[z]);                    }                }                           }            if(groupInfo == "System" && labelInfo == "Resource memory zero" && unitInfo =="KB")            {                System.log("System - Resource memory zero - KB")                               var m = 0;                for(var z in perfMetricSeries[k].value)                {                    if(perfMetricSeries[k].value[z] != 0 && perfMetricSeries[k].value[z]!= "0")                    {                        System.log(m +"->"+perfMetricSeries[k].value[z]);                        m++;                    }                }                           }                   }                   }
}

 

After now hours of testing I have a few Questions:

 

If you have a value of the Type VCPerfCounterInfo.unitInfo "Percent" (https://www.vmware.com/support/orchestrator/doc/vco_vsphere55_api/html/VcPerfCounterInfo.html#key )  why is that somewhere around 10 000 000 ? In my case the "Host Power Capacity Provisioned" was between 9 700 000 and 9 900 000.

 

groupInfo == "Power" && labelInfo == "Energy usage" && unitInfo =="Joule"

This was my first try because i exspected that the informations i'm looking for are storred here - but it is a static value about 1975. I think it is the power of the two 1000 watt PowerSupplys of the host. Correct?

 

groupInfo == "System" && labelInfo == "Resource memory zero" && unitInfo =="KB"

Well, Onyx displayed correct that this are the values I were looking in the vCenter chart - what has "Resource memory zero" to do with the energy that the host is using? Are that real datas or only calculated?


Viewing all articles
Browse latest Browse all 6251

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>