PowerCLI で ESXi から性能情報を取得することができます。
ためしに、それをヒストグラムにしてみました。
今回は、このポストの続きです・・・
ESXi データストアへの VM 配置について。(PowerCLI でデータストア空き容量と IOPS を見てみる)
たとえば、直近の1時間で、
「ds_local_02 というデータストアへの書き込みが他より多そう」
な時があったとして・・・
※このスクリプトは、上記ポストで使ったものです。
PowerCLI> .\get_datastore_stat.ps1 | sort Datastore,Metric | ft -AutoSize
Datastore Metric Count Average Sum Maximum Minimum Begin End
--------- ------ ----- ------- --- ------- ------- ----- ---
ds_local_01 datastore.numberreadaveraged.average 180 0.36 65 19 0 09:06:20 10:06:00
ds_local_01 datastore.numberwriteaveraged.average 180 2.97 535 6 2 09:06:20 10:06:00
ds_local_02 datastore.numberreadaveraged.average 180 0.07 12 6 0 09:06:20 10:06:00
ds_local_02 datastore.numberwriteaveraged.average 180 31.28 5630 61 16 09:06:20 10:06:00
ds_local_03 datastore.numberreadaveraged.average 180 1.13 204 5 0 09:06:20 10:06:00
ds_local_03 datastore.numberwriteaveraged.average 180 9.99 1799 18 7 09:06:20 10:06:00
工夫すると、
下記のような見方もできたりします。
まず、
この ESXi にはデータストアは 3 つあります。
PowerCLI> Get-VMHost esxi501 | Get-Stat -Stat datastore.numberwriteaveraged.average -Realtime | select Instance -Unique
Instance
--------
4e1d568f-c2bf5a1e-8739-d48564c9f062
4e47f95c-87799c29-74cb-d48564c9f062
4e1d5808-bd0e9ffb-e02d-d48564c9f062
そして、データストア名は下記のようになっています。
データストア「ds_local_02」のIDは、
4e1d5808-bd0e9ffb-e02d-d48564c9f062 でした。
PowerCLI> Get-VMHost esx501 | Get-Stat -Stat datastore.numberwriteaveraged.average -Realtime | select Instance -Unique | select Instance,{Get-Datastore -id ("Datastore-" + $_.Instance)} | ft -AutoSize
Instance Get-Datastore -id ("Datastore-" + $_.Instance)
-------- ----------------------------------------------
4e1d568f-c2bf5a1e-8739-d48564c9f062 ds_local_01
4e47f95c-87799c29-74cb-d48564c9f062 ds_local_03
4e1d5808-bd0e9ffb-e02d-d48564c9f062 ds_local_02
Get-Stat で、 ds_local_02 の
平均書き込み回数(datastore.numberwriteaveraged.average)だけ取得します。
それを、PowerShell の group(Group-Object)でグループ化してみると・・・
平均書き込み回数 で、ヒストグラムなものが作れたりします。
表示結果については
- 「Name」列は、Get-Stat で取得した Value の値(これをもとに group 化している)
- 「"o"*$_.Count」列は、Valueごとの登場回数
です。
たとえば、取得した性能値で、
「datastore.numberwriteaveraged.average」が「38」だったのは13回のようです。
なんとなく大きな山が2つ見えるので、少なくとも
2種類の書き込みによる要因がありそうな予感がします。
PowerCLI> Get-VMHost esx501 | Get-Stat -Stat datastore.numberwriteaveraged.average -Realtime | where {$_.Instance -eq "4e1d5808-bd0e9ffb-e02d-d48564c9f062"} | group Value | select Name,{"o"*$_.Count}| sort @{E={$_.Name -as [int]}} | ft -AutoSize
Name "o"*$_.Count
---- ------------
15 oo
16 oo
17 ooo
18 o
19 oooo
20 oooooooo
21 oooooooooooo
22 ooooo
23 ooooooooooooo
24 ooooooooooooo
25 ooooooooooo
26 oooooooo
27 oooo
28 ooo
30 oo
31 o
32 o
33 ooooo
34 ooooo
35 oooooooooo
36 ooooooooo
37 ooooooooo
38 oooooooooooo
39 oooooo
40 ooo
41 oooooo
43 ooo
44 ooooo
45 o
46 o
50 ooo
51 o
55 oo
56 o
57 o
59 o
61 oo
64 o
他にも、カウンタを変えて
書き込み遅延(datastore.totalwritelatency.average)を group 化してみると、
こんな感じに見えました。
こちらの「Name」列が表わすのは、平均書き込み遅延の「ミリ秒」です。
PowerCLI> Get-VMHost esx501 | Get-Stat -Stat datastore.totalwritelatency.average -Realtime | where {$_.Instance -eq "4e1d5808-bd0e9ffb-e02d-d48564c9f062"} | group Value | select Name,{"o"*$_.Count}| sort @{E={$_.Name -as [int]}} | ft -AutoSize
Name "o"*$_.Count
---- ------------
18 oo
19 o
20 ooo
21 o
22 ooooooooo
23 oooooo
24 ooooooooooooooo
25 ooooooo
26 oooooooooooooo
27 ooooooooooooooo
28 ooooooooooooooo
29 oooooooooooo
30 oooooooooooo
31 oooooooooooooooo
32 oooooooooooooo
33 ooooooo
34 oooooooooooo
35 ooooooo
36 ooo
37 o
38 o
39 ooo
40 o
41 o
42 o
44 o
ちなみに、
表示される列名を指定することもできます。
※上記とは別の時間帯で実行しているので結果も変化しています。
PowerCLI> Get-VMHost esx501 | Get-Stat -Stat datastore.numberwriteaveraged.average -Realtime | where {$_.Instance -eq "4e1d5808-bd0e9ffb-e02d-d48564c9f062"} | group Value | select @{N="W/sec";E={$_.Name}},@{N="Count";E={"o"*$_.Count}}| sort @{E={$_."W/sec" -as [int]}} | ft -AutoSize
W/sec Count
----- -----
17 oo
20 oooo
22 oooooooooo
23 ooooooo
24 ooooooooooooooooooooo
25 ooooooooooooooooo
26 ooooooooooooo
27 ooooo
28 oo
29 oo
30 o
31 oo
32 ooooo
33 oooooooooo
34 oooooooooooo
35 oooooooooo
36 oooooooooooooooo
37 ooooooo
38 ooooooo
39 o
40 oo
41 oooooo
42 ooo
43 oo
44 ooo
45 oo
46 o
53 o
55 o
56 oo
58 o
60 o
70 o
以上、PowerCLI の Get-Stat の楽しみ方についてでした。