Hello,
I'm looking to get a throughput calculation from vROps PowerCLI as follows:
Get a group of VMs
Use the 'virtualDisk|Read_Average' metric
It has a measurement for every 5 minutes.
For each 5 minute interval over the last 90 days, get the sum of this 'virtualDisk|Read_average' metric for all VMs in the environment.
Create a list that shows in one column, the time stamp for the particular time interval, and in the other column the sum of 'virtuaDisk|Read_average' for all VMs at that particular time.
For example:
Time | Sum of virtualDisk|Read_average for all VMs |
---|---|
1:00 PM 2/1/2017 | 2364856 KBps |
1:05 PM 2/1/2017 | 2394824 KBps |
1:10 PM 2/1/2017 | 1934895 KBps |
I'm looking to do a get-omstat and then group the results by time, and then sum the metrics for each time stamp.
What I've got so far is below - any input on how I could get the output to look like above chart?
$From = (Get-Date).adddays(-90)
$To = get-date
#Get a list of VMs
$vmlist = Get-VM | select -ExpandProperty name
$omVM = Get-OMResource -ResourceKind VirtualMachine -Name $vmList
# vROps metrics
$omStatNames = 'virtualDisk|Read_Average'
$omStat = Get-OMStatKey -Name $omStatNames -ResourceKind VirtualMachine
# Get the vROps statistics
$p1Stat = Get-OMStat -Resource $omVM -Key $omStat -From $From -To $To | select -expandproperty value | group-object -property time
I think this will do what you want. This will group the stats by time first and then create a new object containing the time and the sum of all the values in each group. It only replaces the last line in what you already had:
$p1Stat = Get-OMStat -Resource $omVM -Key $omStat -From $From -To $To | Group-Object -Property Time | %{
New-Object psobject -Property @{
Time = $_.Name
Sum = ($_.Group | Measure-Object Value -Sum).Sum
}
}
I think this will do what you want. This will group the stats by time first and then create a new object containing the time and the sum of all the values in each group. It only replaces the last line in what you already had:
$p1Stat = Get-OMStat -Resource $omVM -Key $omStat -From $From -To $To | Group-Object -Property Time | %{
New-Object psobject -Property @{
Time = $_.Name
Sum = ($_.Group | Measure-Object Value -Sum).Sum
}
}
Thanks a million. Only problem is this takes days to run on a 90 day window. Any ideas on how to optimize?
also, if I wanted to add the corresponding "write_average" counter as well as a separate calculation, how could I do that without breaking the existing grouping that your report does?
Thanks!
I did some testing and all the time is being spent in group-object. I don't know a good way to speed this up. I think using super metrics to sum the read/write averages might be a better way to do this. You can create custom groups for the VMs in vROps if necessary and assign the super metrics to the groups.
If you want try getting two metrics with powercli, put both key names in $omStatNames:
$omstatNames = 'virtualDisk|Read_Average', 'virtualDisk|write_average'
And then change the last line - this will group by time first, then group by the key names. The sum of values for each key is added to the results for each time period. This should accommodate as many metrics as you want, but unfortunately it will still be slow.
$p1Stat = Get-OMStat -Resource $omVM -Key $omStat -From $From -To $To | Group-Object -Property Time | %{
$timeGroups = $_
$timeGroups | % {
$results = New-Object psobject -Property @{
Time = $timeGroups.Name
}
$_.Group | Group-Object -Property Key | % {
$results | Add-Member -MemberType NoteProperty -Name $_.Name -Value ($_.Group | Measure-Object Value -Sum).Sum
}
$results
}
}
OK thanks - I tried your suggestion but I get this result. I ran it for just a hour's worth of history to stop it from going long. I get only one row of data. Seems like something isn't right - any ideas?
Time | virtualDisk:ide0:0|read_average | virtualDisk|write_average | virtualDisk:ide0:0|write_average | virtualDisk|read_average | virtualDisk:scsi0:0|write_average | virtualDisk:scsi0:0|read_average | virtualDisk:scsi0:2|write_average | virtualDisk:scsi0:2|read_average | virtualDisk:scsi0:1|write_average | virtualDisk:scsi0:1|read_average | virtualDisk:scsi2:0|write_average | virtualDisk:scsi2:0|read_average | virtualDisk:scsi1:0|write_average | virtualDisk:scsi1:0|read_average | virtualDisk:scsi3:0|write_average | virtualDisk:scsi3:0|read_average | virtualDisk:scsi0:3|read_average | virtualDisk:scsi0:3|write_average | virtualDisk:scsi1:8|read_average | virtualDisk:scsi1:8|write_average | virtualDisk:scsi3:1|write_average | virtualDisk:scsi3:1|read_average | virtualDisk:scsi1:1|write_average | virtualDisk:scsi1:2|read_average | virtualDisk:scsi1:3|read_average | virtualDisk:scsi1:3|write_average | virtualDisk:scsi1:2|write_average | virtualDisk:scsi1:1|read_average | virtualDisk:scsi0:4|write_average | virtualDisk:scsi0:4|read_average | virtualDisk:scsi0:5|write_average | virtualDisk:scsi0:5|read_average | virtualDisk:scsi3:15|read_average | virtualDisk:scsi3:15|write_average | virtualDisk:scsi3:2|read_average | virtualDisk:scsi3:2|write_average | virtualDisk:scsi3:10|write_average | virtualDisk:scsi3:10|read_average | virtualDisk:scsi0:8|read_average | virtualDisk:scsi0:8|write_average | virtualDisk:scsi0:6|write_average | virtualDisk:scsi0:6|read_average | virtualDisk:scsi2:1|read_average | virtualDisk:scsi2:1|write_average | virtualDisk:scsi2:9|write_average | virtualDisk:scsi2:9|read_average | virtualDisk:scsi1:11|read_average | virtualDisk:scsi1:11|write_average | virtualDisk:sata0:0|read_average | virtualDisk:sata0:0|write_average | virtualDisk:scsi1:4|write_average | virtualDisk:scsi1:4|read_average | virtualDisk:scsi3:14|read_average | virtualDisk:scsi3:14|write_average | virtualDisk:scsi2:2|read_average | virtualDisk:scsi2:2|write_average | virtualDisk:scsi2:8|write_average | virtualDisk:scsi2:8|read_average | virtualDisk:scsi2:5|write_average | virtualDisk:scsi2:5|read_average | virtualDisk:scsi3:5|read_average | virtualDisk:scsi3:5|write_average | virtualDisk:scsi3:3|read_average | virtualDisk:scsi3:3|write_average | virtualDisk:scsi3:4|read_average | virtualDisk:scsi3:4|write_average | virtualDisk:scsi2:3|write_average | virtualDisk:scsi2:3|read_average | virtualDisk:scsi2:12|write_average | virtualDisk:scsi2:12|read_average | virtualDisk:scsi3:12|write_average | virtualDisk:scsi3:12|read_average | virtualDisk:scsi3:8|read_average | virtualDisk:scsi3:8|write_average | virtualDisk:scsi1:5|write_average | virtualDisk:scsi1:5|read_average | virtualDisk:scsi1:9|write_average | virtualDisk:scsi1:6|read_average | virtualDisk:scsi1:9|read_average | virtualDisk:scsi1:6|write_average | virtualDisk:scsi1:15|write_average | virtualDisk:scsi1:15|read_average |
2/28/2017 19:29 | 575.1333618 | 377523.1339 | 285.0666687 | 484498.6105 | 309545.0684 | 225510.6007 | 43221.53184 | 41860.26823 | 8118.599909 | 46348.53434 | 6005.39998 | 2020.333362 | 4567.933324 | 4964.33338 | 152.8666698 | 13.53333367 | 159712.074 | 1517.066726 | 0.200000003 | 0.06666667 | 143.8666674 | 2.800000042 | 58.93333431 | 0 | 0 | 0 | 0.200000003 | 1.733333349 | 3258.400121 | 3062.333414 | 0.533333339 | 0 | 0.13333334 | 0 | 0 | 0.600000024 | 0 | 0 | 0 | 0 | 0 | 0 | 160.3333282 | 328.9333374 | 0.733333349 | 0 | 0.533333361 | 3.400000095 | 0 | 0 | 4.666666508 | 0 | 0 | 155.7333374 | 247.1999969 | 7.400000095 | 0 | 0 | 1.933333278 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0.266666681 | 0 |