Hi-
I have this script (various pieces found on this forum) that gives me some stats for daily and weekly activity on my VM. How would I be able to update this to a mini-script to also give me the below details in intervals of 120 min with full detail. So for example this pulls one number for avg daily cpu and avg daily memory...this is great, but how would I also get the numbers every 120 minutes that make up this average sample?So what I am looking for is essentially an extension of below to include the numbers that make up those averages...it makes it easier to graph...
Also, is there any sampling of DiskIO that is possible to get like Mem and CPU? I had no idea how to get that.
function VM-statavg ($vmImpl, $StatStart, $StatFinish, $statId) {
$stats = $vmImpl | get-stat -stat $statId -intervalmin 120 -maxsamples 360 `
-Start $StatStart -Finish $StatFinish
$statAvg = "{0,9:#.00}" -f ($stats | Measure-Object value -average).average
$statAvg
}
$DaysBack = 1 # Number of days to go back
$DaysPeriod = 1 # Number of days in the interval
$DayStart = (Get-Date).Date.adddays(- $DaysBack)
$DayFinish = (Get-Date).Date.adddays(- $DaysBack + $DaysPeriod).addminutes(-1)
$DaysBack = 7 # Number of days to go back
$DaysPeriod = 7 # Number of days in the interval
$WeekStart = (Get-Date).Date.adddays(- $DaysBack)
$WeekFinish = (Get-Date).Date.adddays(- $DaysBack + $DaysPeriod).addminutes(-1)
$Report = @()
get-vm | Sort Name -Descending | % {
$vm = Get-View $_.ID
$vms = "" | Select-Object VMName,DayAvgCpuUsage, WeekAvgCpuUsage, TotalCPU, TotalMemory, MemoryUsage, DayAvgMemUsage, WeekAvgMemUsage
$vms.VMName = $vm.Name
$vms.DayAvgCpuUsage = VM-statavg $_ $DayStart $DayFinish "cpu.usage.average"
$vms.WeekAvgCpuUsage = VM-statavg $_ $WeekStart $WeekFinish "cpu.usage.average"
$vms.TotalCPU = $vm.summary.config.numcpu
$vms.TotalMemory = $vm.summary.config.memorysizemb
$vms.MemoryUsage = $vm.summary.quickStats.guestMemoryUsage
$vms.DayAvgMemUsage = VM-statavg $_ $DayStart $DayFinish "mem.usage.average"
$vms.WeekAvgMemUsage = VM-statavg $_ $WeekStart $WeekFinish "mem.usage.average"
}
$Report |
I have this script (various pieces found on this forum) that gives me some stats for daily and weekly activity on my VM. How would I be able to update this to a mini-script to also give me the below details in intervals of 120 min with full detail. So for example this pulls one number for avg daily cpu and avg daily memory...this is great, but how would I also get the numbers every 120 minutes that make up this average sample?So what I am looking for is essentially an extension of below to include the numbers that make up those averages...it makes it easier to graph...
Also, is there any sampling of DiskIO that is possible to get like Mem and CPU? I had no idea how to get that.
function VM-statavg ($vmImpl, $StatStart, $StatFinish, $statId) {
$stats = $vmImpl | get-stat -stat $statId -intervalmin 120 -maxsamples 360 `
-Start $StatStart -Finish $StatFinish
$statAvg = "{0,9:#.00}" -f ($stats | Measure-Object value -average).average
$statAvg
}
$DaysBack = 1 # Number of days to go back
$DaysPeriod = 1 # Number of days in the interval
$DayStart = (Get-Date).Date.adddays(- $DaysBack)
$DayFinish = (Get-Date).Date.adddays(- $DaysBack + $DaysPeriod).addminutes(-1)
$DaysBack = 7 # Number of days to go back
$DaysPeriod = 7 # Number of days in the interval
$WeekStart = (Get-Date).Date.adddays(- $DaysBack)
$WeekFinish = (Get-Date).Date.adddays(- $DaysBack + $DaysPeriod).addminutes(-1)
$Report = @()
get-vm | Sort Name -Descending | % {
$vm = Get-View $_.ID
$vms = "" | Select-Object VMName,DayAvgCpuUsage, WeekAvgCpuUsage, TotalCPU, TotalMemory, MemoryUsage, DayAvgMemUsage, WeekAvgMemUsage
$vms.VMName = $vm.Name
$vms.DayAvgCpuUsage = VM-statavg $_ $DayStart $DayFinish "cpu.usage.average"
$vms.WeekAvgCpuUsage = VM-statavg $_ $WeekStart $WeekFinish "cpu.usage.average"
$vms.TotalCPU = $vm.summary.config.numcpu
$vms.TotalMemory = $vm.summary.config.memorysizemb
$vms.MemoryUsage = $vm.summary.quickStats.guestMemoryUsage
$vms.DayAvgMemUsage = VM-statavg $_ $DayStart $DayFinish "mem.usage.average"
$vms.WeekAvgMemUsage = VM-statavg $_ $WeekStart $WeekFinish "mem.usage.average"
}
$Report |