vROpsで取得しているvSphere環境に関する情報は、通常、vROpsのレポートやダッシュボードなどで確認する。
csvでほしい場合は、レポートで出力させたりする。
しかし、vROpsのGUIでは、全ての仮想マシンについて、指定期間内のCPU/メモリの使用容量を取得する、といった操作を行うことができない。
できるのは、「1台の仮想マシンについて指定期間内のCPU/メモリの使用容量を取得する」という操作を全ての仮想マシンに対して個別に実行する、ということである。
そんなのは使いにくい。
PowerCLIを使うと、vROpsで取得済みのデータをGet-OMStatを使用することで取得することができる。
(なお、予測のデータについては、PowerCLI経由では取得できない)
しかし、Get-OMStatで取得できるデータは、1つのメトリックについてのみであるため、CPUとメモリの使用量について取得しようとした場合、それぞれGet-OMStatを実行する必要がある。
CPUの使用量/使用率とメモリの使用量について取得すると以下のようになる。
$cpuusage=Get-OMStat -Resource $vmguest.Name -Key 'cpu|usage_average' -From $startdate -To $enddate -RollupType avg -IntervalType Hours -IntervalCount $interval $cpuusagemhz=Get-OMStat -Resource $vmguest.Name -Key 'cpu|usagemhz_average' -From $startdate -To $enddate -RollupType avg -IntervalType Hours -IntervalCount $interval $memusage=Get-OMStat -Resource $vmguest.Name -Key 'mem|host_usage' -From $startdate -To $enddate -RollupType avg -IntervalType Hours -IntervalCount $interval
3つの変数にそれぞれデータが入っているため、このままでは1つのCSVファイルに出力ができない。
これを、1つにまとめようとすると以下のようになる。
$cpuusage=Get-OMStat -Resource $vmguest.Name -Key 'cpu|usage_average' -From $startdate -To $enddate -RollupType avg -IntervalType Hours -IntervalCount $interval $cpuusagemhz=Get-OMStat -Resource $vmguest.Name -Key 'cpu|usagemhz_average' -From $startdate -To $enddate -RollupType avg -IntervalType Hours -IntervalCount $interval $memusage=Get-OMStat -Resource $vmguest.Name -Key 'mem|host_usage' -From $startdate -To $enddate -RollupType avg -IntervalType Hours -IntervalCount $interval $results=$cpuusage|ForEach-Object { $output = New-Object -TypeName PSObject $output | Add-Member -MemberType NoteProperty -Name "Time" -Value $_.Time $output | Add-Member -MemberType NoteProperty -Name "Name" -Value $_.Resource $output | Add-Member -MemberType NoteProperty -Name "CpuAverage" -Value $_.Value $output | Add-Member -MemberType NoteProperty -Name "CpuMHzAverage" -Value ` ($cpuusagemhz | where { $_.Time -eq $output.Time } |Select-Object -Last 1 ).Value $output | Add-Member -MemberType NoteProperty -Name "MemAverage" -Value ` ($memusage | where { $_.Time -eq $output.Time } |Select-Object -Last 1 ).Value $output } $results | Export-Csv output.csv -Encoding UTF8 -NoTypeInformation
これで、1つのcsvとして、3つのメトリックの結果を取得できるようになる。