<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic When doesn't the available PerfMeticIds return Data? in vSphere SDK for Java Discussions</title>
    <link>https://communities.vmware.com/t5/vSphere-SDK-for-Java-Discussions/When-doesn-t-the-available-PerfMeticIds-return-Data/m-p/2836453#M707</link>
    <description>&lt;P&gt;I'm trying to use vmware sdk for java to collect the perfomance data of each entity (cluster/datastore/Host/VM) in the vmware environment. The idea is to get the available PerfMetricIds for the target entity with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;queryAvailablePerfMetric, query those and report the details of the counter, the timestamp and the value.&lt;/P&gt;&lt;P&gt;However when I get the PerfMetricIds for an entity, not every detected (returned) PerfMetricId is reporting data. For example for each Datastore I get at least 4 ids which do not return data when queried, these IDs represent the counters associated with the average number of read and write operations, and for a cluster I'm missing the cpu usage, and so on ...&lt;/P&gt;&lt;P&gt;so I was wondering when does this happen? Shouldn't every metric returned by&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;queryAvailablePerfMetric&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;report data? what am I missing here?&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="hljs-comment"&gt;// VMWare credentials&lt;/SPAN&gt;
String vmwareUrl = args[&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;];
String vmwareUsername = args[&lt;SPAN class="hljs-number"&gt;1&lt;/SPAN&gt;];
String vmwarePassword = args[&lt;SPAN class="hljs-number"&gt;2&lt;/SPAN&gt;];

&lt;SPAN class="hljs-comment"&gt;// connect to vCenter&lt;/SPAN&gt;
ServiceInstance si = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; ServiceInstance(&lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; URL(vmwareUrl), vmwareUsername, vmwarePassword, &lt;SPAN class="hljs-keyword"&gt;true&lt;/SPAN&gt;);
&lt;SPAN class="hljs-comment"&gt;// get performance manager&lt;/SPAN&gt;
PerformanceManager perfMgr = si.getPerformanceManager();

&lt;SPAN class="hljs-comment"&gt;// define the time window (the last one hour)&lt;/SPAN&gt;
Calendar calTo = Calendar.getInstance();
Calendar calFrom = Calendar.getInstance();
calFrom.setTime(calTo.getTime());
calFrom.add(Calendar.HOUR, -&lt;SPAN class="hljs-number"&gt;1&lt;/SPAN&gt;);

&lt;SPAN class="hljs-comment"&gt;// get any datastore for testing purposes&lt;/SPAN&gt;
Folder rootFolder = si.getRootFolder();
ManagedEntity[] datastores = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; InventoryNavigator(rootFolder).searchManagedEntities(&lt;SPAN class="hljs-string"&gt;"Datastore"&lt;/SPAN&gt;);
ManagedEntity me = datastores[&lt;SPAN class="hljs-number"&gt;1&lt;/SPAN&gt;];

&lt;SPAN class="hljs-comment"&gt;// query all available metrics for the entity&lt;/SPAN&gt;
PerfMetricId[] availablePmis = perfMgr.queryAvailablePerfMetric(me, calFrom, calTo, perfMgr.getHistoricalInterval()[&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;].getSamplingPeriod());

&lt;SPAN class="hljs-comment"&gt;// create PerfQuerySpec&lt;/SPAN&gt;
PerfQuerySpec qSpec = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; PerfQuerySpec();
qSpec.setEntity(me.getMOR());
qSpec.setMetricId(availablePmis);
qSpec.setFormat(&lt;SPAN class="hljs-string"&gt;"csv"&lt;/SPAN&gt;);
qSpec.setStartTime(calFrom);
qSpec.setEndTime(calTo);

&lt;SPAN class="hljs-comment"&gt;// query perf&lt;/SPAN&gt;
PerfEntityMetricBase[] perfValues = perfMgr.queryPerf(&lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; PerfQuerySpec[]{qSpec});

&lt;SPAN class="hljs-comment"&gt;// Printing&lt;/SPAN&gt;
System.out.println(&lt;SPAN class="hljs-string"&gt;"Found pmis (CounterIDs only): "&lt;/SPAN&gt;);
&lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (PerfMetricId pmi : availablePmis){
    System.out.print(pmi.getCounterId() + &lt;SPAN class="hljs-string"&gt;", "&lt;/SPAN&gt;);
}
System.out.print(&lt;SPAN class="hljs-string"&gt;"\nPmis with values:"&lt;/SPAN&gt;);
&lt;SPAN class="hljs-keyword"&gt;int&lt;/SPAN&gt; pmisCount=&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;;
&lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (PerfEntityMetricBase value : perfValues) {
    PerfMetricSeriesCSV[] csvValues = ((PerfEntityMetricCSV) value).getValue();
    pmisCount += csvValues.length;;
    &lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (PerfMetricSeriesCSV csv : csvValues) {
        System.out.println(&lt;SPAN class="hljs-string"&gt;"Counter ID: "&lt;/SPAN&gt; + csv.getId().getCounterId() + &lt;SPAN class="hljs-string"&gt;" ---- Metric instance: "&lt;/SPAN&gt; + csv.getId().getInstance());
        System.out.println(&lt;SPAN class="hljs-string"&gt;"\tInfo: "&lt;/SPAN&gt; + ((PerfEntityMetricCSV) value).getSampleInfoCSV());
        System.out.println(&lt;SPAN class="hljs-string"&gt;"\tValues: "&lt;/SPAN&gt; + csv.getValue());
    }
}
System.out.println(&lt;SPAN class="hljs-string"&gt;"---------------"&lt;/SPAN&gt;);
System.out.println(&lt;SPAN class="hljs-string"&gt;"Detected PMIs: "&lt;/SPAN&gt; + availablePmis.length);
System.out.println(&lt;SPAN class="hljs-string"&gt;"PMIs with values: "&lt;/SPAN&gt; + pmisCount);&lt;/PRE&gt;&lt;P&gt;Any help (or discussions) would be appreciated&lt;/P&gt;</description>
    <pubDate>Mon, 19 Jul 2021 12:21:34 GMT</pubDate>
    <dc:creator>DJom</dc:creator>
    <dc:date>2021-07-19T12:21:34Z</dc:date>
    <item>
      <title>When doesn't the available PerfMeticIds return Data?</title>
      <link>https://communities.vmware.com/t5/vSphere-SDK-for-Java-Discussions/When-doesn-t-the-available-PerfMeticIds-return-Data/m-p/2836453#M707</link>
      <description>&lt;P&gt;I'm trying to use vmware sdk for java to collect the perfomance data of each entity (cluster/datastore/Host/VM) in the vmware environment. The idea is to get the available PerfMetricIds for the target entity with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;queryAvailablePerfMetric, query those and report the details of the counter, the timestamp and the value.&lt;/P&gt;&lt;P&gt;However when I get the PerfMetricIds for an entity, not every detected (returned) PerfMetricId is reporting data. For example for each Datastore I get at least 4 ids which do not return data when queried, these IDs represent the counters associated with the average number of read and write operations, and for a cluster I'm missing the cpu usage, and so on ...&lt;/P&gt;&lt;P&gt;so I was wondering when does this happen? Shouldn't every metric returned by&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;queryAvailablePerfMetric&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;report data? what am I missing here?&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="hljs-comment"&gt;// VMWare credentials&lt;/SPAN&gt;
String vmwareUrl = args[&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;];
String vmwareUsername = args[&lt;SPAN class="hljs-number"&gt;1&lt;/SPAN&gt;];
String vmwarePassword = args[&lt;SPAN class="hljs-number"&gt;2&lt;/SPAN&gt;];

&lt;SPAN class="hljs-comment"&gt;// connect to vCenter&lt;/SPAN&gt;
ServiceInstance si = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; ServiceInstance(&lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; URL(vmwareUrl), vmwareUsername, vmwarePassword, &lt;SPAN class="hljs-keyword"&gt;true&lt;/SPAN&gt;);
&lt;SPAN class="hljs-comment"&gt;// get performance manager&lt;/SPAN&gt;
PerformanceManager perfMgr = si.getPerformanceManager();

&lt;SPAN class="hljs-comment"&gt;// define the time window (the last one hour)&lt;/SPAN&gt;
Calendar calTo = Calendar.getInstance();
Calendar calFrom = Calendar.getInstance();
calFrom.setTime(calTo.getTime());
calFrom.add(Calendar.HOUR, -&lt;SPAN class="hljs-number"&gt;1&lt;/SPAN&gt;);

&lt;SPAN class="hljs-comment"&gt;// get any datastore for testing purposes&lt;/SPAN&gt;
Folder rootFolder = si.getRootFolder();
ManagedEntity[] datastores = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; InventoryNavigator(rootFolder).searchManagedEntities(&lt;SPAN class="hljs-string"&gt;"Datastore"&lt;/SPAN&gt;);
ManagedEntity me = datastores[&lt;SPAN class="hljs-number"&gt;1&lt;/SPAN&gt;];

&lt;SPAN class="hljs-comment"&gt;// query all available metrics for the entity&lt;/SPAN&gt;
PerfMetricId[] availablePmis = perfMgr.queryAvailablePerfMetric(me, calFrom, calTo, perfMgr.getHistoricalInterval()[&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;].getSamplingPeriod());

&lt;SPAN class="hljs-comment"&gt;// create PerfQuerySpec&lt;/SPAN&gt;
PerfQuerySpec qSpec = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; PerfQuerySpec();
qSpec.setEntity(me.getMOR());
qSpec.setMetricId(availablePmis);
qSpec.setFormat(&lt;SPAN class="hljs-string"&gt;"csv"&lt;/SPAN&gt;);
qSpec.setStartTime(calFrom);
qSpec.setEndTime(calTo);

&lt;SPAN class="hljs-comment"&gt;// query perf&lt;/SPAN&gt;
PerfEntityMetricBase[] perfValues = perfMgr.queryPerf(&lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; PerfQuerySpec[]{qSpec});

&lt;SPAN class="hljs-comment"&gt;// Printing&lt;/SPAN&gt;
System.out.println(&lt;SPAN class="hljs-string"&gt;"Found pmis (CounterIDs only): "&lt;/SPAN&gt;);
&lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (PerfMetricId pmi : availablePmis){
    System.out.print(pmi.getCounterId() + &lt;SPAN class="hljs-string"&gt;", "&lt;/SPAN&gt;);
}
System.out.print(&lt;SPAN class="hljs-string"&gt;"\nPmis with values:"&lt;/SPAN&gt;);
&lt;SPAN class="hljs-keyword"&gt;int&lt;/SPAN&gt; pmisCount=&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;;
&lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (PerfEntityMetricBase value : perfValues) {
    PerfMetricSeriesCSV[] csvValues = ((PerfEntityMetricCSV) value).getValue();
    pmisCount += csvValues.length;;
    &lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (PerfMetricSeriesCSV csv : csvValues) {
        System.out.println(&lt;SPAN class="hljs-string"&gt;"Counter ID: "&lt;/SPAN&gt; + csv.getId().getCounterId() + &lt;SPAN class="hljs-string"&gt;" ---- Metric instance: "&lt;/SPAN&gt; + csv.getId().getInstance());
        System.out.println(&lt;SPAN class="hljs-string"&gt;"\tInfo: "&lt;/SPAN&gt; + ((PerfEntityMetricCSV) value).getSampleInfoCSV());
        System.out.println(&lt;SPAN class="hljs-string"&gt;"\tValues: "&lt;/SPAN&gt; + csv.getValue());
    }
}
System.out.println(&lt;SPAN class="hljs-string"&gt;"---------------"&lt;/SPAN&gt;);
System.out.println(&lt;SPAN class="hljs-string"&gt;"Detected PMIs: "&lt;/SPAN&gt; + availablePmis.length);
System.out.println(&lt;SPAN class="hljs-string"&gt;"PMIs with values: "&lt;/SPAN&gt; + pmisCount);&lt;/PRE&gt;&lt;P&gt;Any help (or discussions) would be appreciated&lt;/P&gt;</description>
      <pubDate>Mon, 19 Jul 2021 12:21:34 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/vSphere-SDK-for-Java-Discussions/When-doesn-t-the-available-PerfMeticIds-return-Data/m-p/2836453#M707</guid>
      <dc:creator>DJom</dc:creator>
      <dc:date>2021-07-19T12:21:34Z</dc:date>
    </item>
  </channel>
</rss>

