Attempt to save vm cpu,mem min, average, max.
I want to do this.
January vm cpu - min,average,max mem - min average max
February vm cpu - min,average,max mem - min average max
March vm cpu - min,average,max mem - min average max
...
December - vm cpu - min,average,max mem - min average max
I've made this right now.
Please amend me.
$report = @()
$metrics = "cpu.usagemhz.average","mem.active.average"
$vms = Get-Vm | where {$_.PowerState -eq "PoweredOn"}
$start = (get-date).AddDays(-365)
Get-Stat -Entity ($vms) -start $start -stat $metrics | `
Group-Object -Property EntityId | %{
$row = ""| Select VmName, vCPU, MinCpu,AvgCpu,MaxCpu,MemAlloc,MinMem,AvgMem,MaxMem
$row.VmName = $_.Group[0].Entity.Name
$row.vCPU = $_.Group[0].Entity.NumCpu
$cpuStat = $_.Group | where {$_.MetricId -eq "cpu.usagemhz.average"} | Measure-Object -Property Value -Minimum -Maximum -Average
$row.MinCpu = "{0:f2}" -f ($cpuStat.Minimum)
$row.AvgCpu = "{0:f2}" -f ($cpuStat.Average)
$row.MaxCpu = "{0:f2}" -f ($cpuStat.Maximum)
$row.MemAlloc = $_.Group[0].Entity.MemoryMB
$memStat = $_.Group | where {$_.MetricId -eq "mem.active.average"} | Measure-Object -Property Value -Minimum -Maximum -Average
$row.MinMem = "{0:f2}" -f ($memStat.Minimum)
$row.AvgMem = "{0:f2}" -f ($memStat.Average)
$row.MaxMem = "{0:f2}" -f ($memStat.Maximum)
$report += $row
}
$report | Export-Csv "C:\VM-stats1.csv" -NoTypeInformation -UseCulture
Please help me.
Is there a way?
Can you pick up data every day, not every month?
if possible
Where should I fix it?
help me...
Try like this
$report = @()
$metrics = "cpu.usage.average","mem.usage.average"
$esx = Get-VMHost
$start = (get-date).AddDays(-365)
Get-Stat -Entity $esx -Start $start |
Group-Object -Property {$_.Entity.Name},{$_.Timestamp.DayOfYear} | %{
$row = ""| Select HostName, Day, vCPU, MinCpu,AvgCpu,MaxCpu,MemAlloc,MinMem,AvgMem,MaxMem
$row.Day = $_.Group[0].TimeStamp.ToShortDateString()
$row.HostName = $_.Name.Split(',')[0]
$row.vCPU = $_.Group[0].Entity.NumCpu
$cpuStat = $_.Group | where {$_.MetricId -eq "cpu.usage.average"} | Measure-Object -Property Value -Minimum -Maximum -Average
$row.MinCpu = "{0:f2}" -f ($cpuStat.Minimum)
$row.AvgCpu = "{0:f2}" -f ($cpuStat.Average)
$row.MaxCpu = "{0:f2}" -f ($cpuStat.Maximum)
$row.MemAlloc = $_.Group[0].Entity.MemoryTotalGB
$memStat = $_.Group | where {$_.MetricId -eq "mem.usage.average"} | Measure-Object -Property Value -Minimum -Maximum -Average
$row.MinMem = "{0:f2}" -f ($memStat.Minimum)
$row.AvgMem = "{0:f2}" -f ($memStat.Average)
$row.MaxMem = "{0:f2}" -f ($memStat.Maximum)
$report += $row
}
$report | Export-Csv "C:\VM-stats(test).csv" -NoTypeInformation -UseCulture
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference