I am executing following piece of code to get the performance metrics. When I set intervalId other 20 in PerfQuerySpec api and execute api QueryPerf(querySpec => [$perfQuerySpec]) i get error -
A specified parameter was not correct.
querySpec.interval'
Need help to resolve this issue. I want to setup rollup interval as 1 hr so that we get average cpu and memeory usage of past 1 hr.
my $serviceInst = Vim::get_view (mo_ref => ManagedObjectReference->new(type => 'ServiceInstance', value => 'ServiceInstance')); |
my $perfMgr = Vim::get_view (mo_ref => $serviceInst->content->perfManager); | |
my (@hosts,@metrics,%metricResults) = (); |
my $perfCounterInfo = $perfMgr->perfCounter; | |
my @metricIDs ; |
my $metric ; | |
my $groupInfo ; | |
my $nameInfo ; | |
my $instance ; | |
my $key ; | |
my $rollupType ; | |
my $statstype ; | |
my $unitInfo ; | |
my $res; | |
my $unitString; | |
my $values; | |
my $metricRef; |
#grab all counter defs | |
my %allCounterDefintions = (); | |
foreach(@$perfCounterInfo) | |
{ | |
$allCounterDefintions{$_->key} = $_; | |
} |
# enumerate all performance counters by their IDs | |
my %perfCounter = map { $_->key => $_ } @{$perfMgr->perfCounter}; |
foreach my $vm_view (@$vm_views) | |
{ | |
my $vmref ; | |
my @vmdk ; | |
while (my ($key, $value) = each(%{$vm_info})) | |
{ | |
my $vmname = $$vm_info{$key}{VMName}; | |
if (defined($vmname) && $vm_view->name eq $vmname ) | |
{ | |
$vmref = $$vm_info{$key}; | |
} | |
} | |
if (!$vmref) | |
{ | |
next; | |
} | |
$vmref->{'averagePercentCapacityContention'} = (); | |
$vmref->{'cpuAveragePercentUsage'} = (); | |
$vmref->{'memoryAverageUsage'} = (); | |
if (!defined($vm_view)) | |
{ | |
next; | |
} |
my $availmetricid = $perfMgr->QueryAvailablePerfMetric(entity => $vm_view); |
foreach(sort {$a->counterId cmp $b->counterId} @$availmetricid) | |
{ | |
if($allCounterDefintions{$_->counterId}) | |
{ | |
$metric = $allCounterDefintions{$_->counterId}; | |
$groupInfo = $metric->groupInfo->key; | |
$nameInfo = $metric->nameInfo->key; | |
$instance = $_->instance; | |
$key = $metric->key; | |
$rollupType = $metric->rollupType->val; | |
$statstype = $metric->statsType->val; | |
$unitInfo = $metric->unitInfo->key; |
#e.g. cpu.usage.average | |
my $vmwInternalName = $groupInfo . "." . $nameInfo . "." . $rollupType; |
foreach(@metrics) | |
{ | |
if($_ eq $vmwInternalName) | |
{ | |
my $metricId = PerfMetricId->new(counterId => $key, instance => '*'); | |
if(! grep(/^$key/,@metricIDs)) | |
{ | |
push @metricIDs,$metricId; | |
} | |
} | |
} | |
my $metricId = PerfMetricId->new(counterId => $key, instance => '*'); | |
} | |
} |
my $perfQuerySpec = PerfQuerySpec->new(entity => $vm_view, maxSample => 10, intervalId => 20, metricId => \@metricIDs); |
my $metrics = $perfMgr->QueryPerf(querySpec => [$perfQuerySpec]); |