VMware Cloud Community
TheVMinator
Expert
Expert
Jump to solution

vROps PowerCLI throughput peak

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/20172364856 KBps
1:05 PM 2/1/20172394824 KBps
1:10 PM 2/1/20171934895 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

Reply
0 Kudos
1 Solution

Accepted Solutions
dtaliafe
Hot Shot
Hot Shot
Jump to solution

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

    }

}

View solution in original post

Reply
0 Kudos
5 Replies
dtaliafe
Hot Shot
Hot Shot
Jump to solution

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

    }

}

Reply
0 Kudos
TheVMinator
Expert
Expert
Jump to solution

Thanks a million.  Only problem is this takes days to run on a 90 day window.  Any ideas on how to optimize?

Reply
0 Kudos
TheVMinator
Expert
Expert
Jump to solution

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!

Reply
0 Kudos
dtaliafe
Hot Shot
Hot Shot
Jump to solution

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

    }

}

TheVMinator
Expert
Expert
Jump to solution

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?

                                                                       

TimevirtualDisk:ide0:0|read_averagevirtualDisk|write_averagevirtualDisk:ide0:0|write_averagevirtualDisk|read_averagevirtualDisk:scsi0:0|write_averagevirtualDisk:scsi0:0|read_averagevirtualDisk:scsi0:2|write_averagevirtualDisk:scsi0:2|read_averagevirtualDisk:scsi0:1|write_averagevirtualDisk:scsi0:1|read_averagevirtualDisk:scsi2:0|write_averagevirtualDisk:scsi2:0|read_averagevirtualDisk:scsi1:0|write_averagevirtualDisk:scsi1:0|read_averagevirtualDisk:scsi3:0|write_averagevirtualDisk:scsi3:0|read_averagevirtualDisk:scsi0:3|read_averagevirtualDisk:scsi0:3|write_averagevirtualDisk:scsi1:8|read_averagevirtualDisk:scsi1:8|write_averagevirtualDisk:scsi3:1|write_averagevirtualDisk:scsi3:1|read_averagevirtualDisk:scsi1:1|write_averagevirtualDisk:scsi1:2|read_averagevirtualDisk:scsi1:3|read_averagevirtualDisk:scsi1:3|write_averagevirtualDisk:scsi1:2|write_averagevirtualDisk:scsi1:1|read_averagevirtualDisk:scsi0:4|write_averagevirtualDisk:scsi0:4|read_averagevirtualDisk:scsi0:5|write_averagevirtualDisk:scsi0:5|read_averagevirtualDisk:scsi3:15|read_averagevirtualDisk:scsi3:15|write_averagevirtualDisk:scsi3:2|read_averagevirtualDisk:scsi3:2|write_averagevirtualDisk:scsi3:10|write_averagevirtualDisk:scsi3:10|read_averagevirtualDisk:scsi0:8|read_averagevirtualDisk:scsi0:8|write_averagevirtualDisk:scsi0:6|write_averagevirtualDisk:scsi0:6|read_averagevirtualDisk:scsi2:1|read_averagevirtualDisk:scsi2:1|write_averagevirtualDisk:scsi2:9|write_averagevirtualDisk:scsi2:9|read_averagevirtualDisk:scsi1:11|read_averagevirtualDisk:scsi1:11|write_averagevirtualDisk:sata0:0|read_averagevirtualDisk:sata0:0|write_averagevirtualDisk:scsi1:4|write_averagevirtualDisk:scsi1:4|read_averagevirtualDisk:scsi3:14|read_averagevirtualDisk:scsi3:14|write_averagevirtualDisk:scsi2:2|read_averagevirtualDisk:scsi2:2|write_averagevirtualDisk:scsi2:8|write_averagevirtualDisk:scsi2:8|read_averagevirtualDisk:scsi2:5|write_averagevirtualDisk:scsi2:5|read_averagevirtualDisk:scsi3:5|read_averagevirtualDisk:scsi3:5|write_averagevirtualDisk:scsi3:3|read_averagevirtualDisk:scsi3:3|write_averagevirtualDisk:scsi3:4|read_averagevirtualDisk:scsi3:4|write_averagevirtualDisk:scsi2:3|write_averagevirtualDisk:scsi2:3|read_averagevirtualDisk:scsi2:12|write_averagevirtualDisk:scsi2:12|read_averagevirtualDisk:scsi3:12|write_averagevirtualDisk:scsi3:12|read_averagevirtualDisk:scsi3:8|read_averagevirtualDisk:scsi3:8|write_averagevirtualDisk:scsi1:5|write_averagevirtualDisk:scsi1:5|read_averagevirtualDisk:scsi1:9|write_averagevirtualDisk:scsi1:6|read_averagevirtualDisk:scsi1:9|read_averagevirtualDisk:scsi1:6|write_averagevirtualDisk:scsi1:15|write_averagevirtualDisk:scsi1:15|read_average
2/28/2017 19:29575.1333618377523.1339285.0666687484498.6105309545.0684225510.600743221.5318441860.268238118.59990946348.534346005.399982020.3333624567.9333244964.33338152.866669813.53333367159712.0741517.0667260.2000000030.06666667143.86666742.80000004258.933334310000.2000000031.7333333493258.4001213062.3334140.53333333900.13333334000.600000024000000160.3333282328.93333740.73333334900.5333333613.400000095004.66666650800155.7333374247.19999697.400000095001.9333332780000000000000010000000.2666666810
Reply
0 Kudos