Retrieving vSphere Performance Data

To retrieve collected data, your client application creates a query specification and passes the specification to a performance query method. The query specification is composed of one or more PerfQuerySpec objects. Each object identifies the following:

  • Performance provider – managed entity for which the Server will return performance data (PerfQuerySpec.entity).
  • Performance counters – PerfMetricId objects that identify performance counter instances (PerfQuerySpec.metricId).
  • Performance interval – the sampling period that defines the data rollup (PerfQuerySpec.intervalId).
  • Amount of data to be returned – start and end times (PerfQuerySpec.startTime, PerfQuerySpec.endTime) and maximum number of values (PerfQuerySpec.maxSample) to limit the amount of data to be returned.
  • Output data format (PerfQuerySpec.format) – one of two kinds:
    • Normal output returned as values contained in data objects.
    • Formatted output returned as strings containing comma-separated values.

The combination of the entity and metricID properties determine the set of counters for which the server will return performance data. The combination of the interval, startTime, endTime properties produce instance, aggregated instance, rollup, or summarized data. The following table summarizes the different classifications of performance data that you can retrieve from a vCenter Server.

Performance Data Description
Instance ESXi Servers sample performance data every 20 seconds. 20-second interval data is called instance data or real-time data. To retrieve instance data, specify a value of 20 seconds for the PerfQuerySpec.intervalId property.
Aggregated Instance A vSphere client can retrieve aggregated instance data. To obtain aggregated instance data, specify the following PerfQuerySpec properties.
  • intervalId – Specify 20 seconds to indicate instance data.
  • metricId[].instance – specify a zero-length string ("") for aggregated instance data.
Rollup The vCenter Server uses the historical intervals to rollup performance data from the servers that it manages. To retrieve historical performance data, specify the following PerfQuerySpec properties.
  • intervalId – Specify a value that corresponds to one of the historical intervals (PerformanceManager.historicalInterval[].samplingPeriod) .
  • startTime/endTime – If specified, use time values that are not within the last 30 minutes of the current time. If you do not specify a starting time, the Server will return values starting with the earliest data. If you do not specify an end time, the Server will return values that include the latest data.
Summary When you call the QueryPerf method and specify a performance interval (PerfQuerySpec.intervalId) that does not match one of the historical intervals (PerformanceManager.historicalInterval[].samplingPeriod), the Server will attempt to summarize the stored data for the specified interval. In this case, the Server may return values that are different from the values that were stored for the historical intervals.