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]); |