get-stat的使用方法

检索的vSphere服务器上提供的统计资料。

#Get-Date -Format "y"; 2012年3月
Connect-VIServer -Server vCenter -Protocol https -User -Password

$allvms = @()
$vms = Get-Vm

foreach($vm in $vms){
  $vmstat = "" | Select VmName, GuestName, NumCPU, ProvisionedSpaceGB, UsedSpaceGB, VmHost, MemMax, MemAvg, CPUMax, CPUAvg, DiskMax, DiskAvg
  $vmstat.VmName = $vm.name
  $vmstat.GuestName = $vm.Guest.HostName
  $vmstat.NumCPU = $vm.NumCPU
  $vmstat.ProvisionedSpaceGB = $vm.ProvisionedSpaceGB
  $vmstat.UsedSpaceGB = $vm.UsedSpaceGB
  $vmstat.VmHost = $vm.VMHost
 
  $statcpu = Get-Stat -Entity ($vm) `
           -start (get-date).AddDays(-30) `
           -Finish (Get-Date) `
             -stat cpu.usagemhz.average
  $statmem = Get-Stat -Entity ($vm) `
           -Start (get-date).AddDays(-30) `
           -Finish (Get-Date) `
             -stat mem.consumed.average
  $statdisk = Get-Stat -Entity ($vm) `
           -Start (get-date).AddDays(-30) `
           -Finish (Get-Date) `
             -stat disk.usage.average


  $cpu = $statcpu | Measure-Object -Property value -Average -Maximum
  $mem = $statmem | Measure-Object -Property value -Average -Maximum
  $disk = $statdisk | Measure-Object -Property value -Average -Maximum

 
  $vmstat.CPUMax = $cpu.Maximum
  $vmstat.CPUAvg = $cpu.Average
  $vmstat.MemMax = $mem.Maximum
  $vmstat.MemAvg = $mem.Average
  $vmstat.DiskMax = $disk.Maximum
  $vmstat.DiskAvg = $disk.Average
 
  $allvms += $vmstat
}

$allvms | Export-Csv "c:\VMs.csv" -noTypeInformation -UseCulture

#2.接下来的脚本,让你在过去30天的每一天,每个虚拟机平均和最高的性能统计:
#The next script gives you average and maximum performance statistics per virtual machine for the last 30 days for each day:
<
#@{A = 'abc';}  :可以定义类#>
Function Get-AverageStatPerDay {
  param($vm,$NrOfdays,$Stat)
  $Today = Get-Date
  Get-Stat -Entity ($vm) `
           -start ($Today).AddDays(-$NrOfDays) `
           -Finish ($Today) `
           -stat $Stat | `
    ForEach-Object {
      $MetricId = $_.MetricId
      $Unit = $_.Unit
      $_ | `
        Select-Object -Property Description,Entity,EntityId,Instance,IntervalSecs,MetricId,Timestamp,Unit,Value,@{N="Date";E={$_.TimeStamp.Date.ToShortDateString()}}
    } | `
      Group-Object -Property Date | `
      Select-Object -Property @{N="VM";E={$vm.Name}},
        @{N="MetricId";E={$MetricId}},
        @{N="Date";E={$_.Name}},
        @{N="Value";E={($_.Group | Measure-Object -Property Value -Average).Average}},
        @{N="Unit";E={$Unit}}
}    

Function Get-MaximumStatPerDay {
  param($vm,$NrOfdays,$Stat)
 
  $Today = Get-Date
  Get-Stat -Entity ($vm) `
           -start ($Today).AddDays(-$NrOfDays) `
           -Finish ($Today) `
           -stat $Stat | `
    ForEach-Object {
      $MetricId = $_.MetricId
      $Unit = $_.Unit
      $_ | `
        Select-Object -Property Description,Entity,EntityId,Instance,IntervalSecs,MetricId,Timestamp,Unit,Value,@{N="Date";E={$_.TimeStamp.Date.ToShortDateString()}}
    } | `
      Group-Object -Property Date | `
      Select-Object -Property @{N="VM";E={$vm.Name}},
        @{N="MetricId";E={$MetricId}},
        @{N="Date";E={$_.Name}},
        @{N="Value";E={($_.Group | Measure-Object -Property Value -Maximum).Maximum}},
        @{N="Unit";E={$Unit}}
}    

Get-VM | ForEach-Object {
  $vm = $_
  Get-AverageStatPerDay -vm $vm -NrOfDays 30 -Stat cpu.usagemhz.average
  Get-AverageStatPerDay -vm $vm -NrOfDays 30 -Stat mem.consumed.average
  Get-AverageStatPerDay -vm $vm -NrOfDays 30 -Stat disk.usage.average
  Get-MaximumStatPerDay -vm $vm -NrOfDays 30 -Stat cpu.usagemhz.maximum
  Get-MaximumStatPerDay -vm $vm -NrOfDays 30 -Stat mem.consumed.maximum
  Get-MaximumStatPerDay -vm $vm -NrOfDays 30 -Stat disk.usage.maximum
}
#3-------report-last-2calendar---month.ps1--------------------------------------------------------------
$allclust = @()
$clust = Get-Cluster

foreach($clu in $clust){
 $clusstat = "" | Select ClusterName, MemMax, MemAvg, CPUMax, CPUAvg
 $clusstat.ClusterName = $clu.name


 $thisMonth = [datetime](Get-Date -Format "y")
12..1 | %{
 $from = $thisMonth.AddMonths(- $_  )
 $to = $thisMonth.AddMonths(- $_ +1).AddDays(-1)
}

 $statcpu = Get-Stat -Entity ($clu)
 -start $from
 -Finish $to
 -MaxSamples 10000 
 -stat cpu.usagemhz.average
 $statmem = Get-Stat -Entity ($clu)
 -start $from
 -Finish $to
 -MaxSamples 10000
 -stat mem.usage.average

 $cpu = $statcpu | Measure-Object -Property value -Average -Maximum
 $mem = $statmem | Measure-Object -Property value -Average -Maximum

 $clusstat.CPUMax = $cpu.Maximum
 $clusstat.CPUAvg = $cpu.Average
 $clusstat.MemMax = $mem.Maximum
 $clusstat.MemAvg = $mem.Average

 $allclust += $clusstat
}

$allclust |
select ClusterName, MemMax, MemAvg, CPUMax, CPUAvg |
Export-Csv "c:\g.csv" -noTypeInformation

 

#显示CPU

$entities = Get-VM $start = (Get-Date).AddMinutes(-5)

$report = Get-Stat -Entity $entities -Stat $metrics -Realtime -Start $start
|
Group-Object -Property EntityId,Timestamp | %
{
   
New-Object PSObject -Property
@{
        Name
= $_
.Group[0].Entity.Name
        Time
= $_
.Group[0].Timestamp
        CpuAvg
= ($_.Group | where {$_.MetricId -eq "cpu.usage.average"
}).Value
        CpuRdy
= ($_.Group | where {$_.MetricId -eq "cpu.ready.summation" -and $_.Instance -eq ""
}).Value
        CpuSwpWait
= ($_.Group | where {$_.MetricId -eq "cpu.swapwait.summation" -and $_.Instance -eq ""
}).Value
        MemActAvg
= ($_.Group | where {$_.MetricId -eq "mem.active.average"
}).Value

    }
}
$report | Sort-Object Name,Time | Export-Csv "C:\VMstats.csv" -NoTypeInformation -UseCulture

 

memory的使用:
http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/memory_counters.html
mem: sys.uptime.latest
获取stat的参数值
get-stat -Entity (Get-VMHost esx01*) -Stat * -MaxSamples 1 | ft metricid
intervalmins 5加上,五分钟的粒度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值