あまり使いどころないかも知れませんが、
esxtop で、特定の仮想マシンだけの情報をとってみようと思います。
「ちょっと仮想マシンの様子を取得しておきたいが
esxtop でぜんぶとると、ファイルが大きくなりすぎる」
といった場合に使えるかもしれません。
今回は、ESXi に SSH でログインして、/work を作成して作業しています。
※デフォルトでは、ESXiに /work ディレクトリ はありません。
1. まず、現在のワールドグループの一覧を入手します。
ためしに仮想マシン「vm01」 の情報だけとってみます。
ESXiでは、仮想マシンは1つのワールドグループとして見えます。
ワールドは、Linuxなどのプロセスとほぼイコールな単位らしいです。
esxtop で、ファイル(例ではesx.f)にグループの一覧をエクスポート。
/work # esxtop -export-entity exp.f
ファイルの中身は下記のような感じです。
/work # cat exp.f
SchedGroup
1 idle
2 system
2055 sh.3095
8 helper
9 drivers
10 ft
11 vmotion
47 vmkapimod
2101 net-lacp.3118
8284 sshd.6940
8290 sh.6944
2243 sh.3215
2311 sh.3249
279 init.2170
2383 openwsmand.3285
104995 vm02
104997 vm01
100905 sh.65376
105004 vm03
105014 vm04
100951 vpxa.65399
(以下略)
取得したファイルの中から、「SchedGroup」と、
目的の仮想マシンを表すグループID(GID)だけを拾い出します。
だいたいは、下記で拾えるはず。(後で使用するので、vm01.f ファイルとして書き出しています。)
/work # grep -e SchedGroup -e vm01 -m 2 exp.f > vm01.f
/work # cat vm01.f
SchedGroup
104997 vm01
SchedGroup
104997 vm01←仮想マシン vm01 を表すGID
2. 仮想マシンのGID情報が入ったファイルを指定して、esxtopを実行します。
esxtopをバッチモードで実行。
普通モードで実行しても、今回は 仮想マシン vm01 だけ表示されます。
/work # esxtop -b -d 5 -n 3 -import-entity vm01.f > vm01.log
ちなみに、オプションは...
-b →バッチモードで実行。
-d →指定した秒数間隔で結果表示する。
-n →指定した回数だけ結果表示して終了する。
-import-entity →指定したファイル内に記載したものだけ表示する。
3. 取得したファイルを見てみます。
結果ファイルを、1行目だけ(headで)見てみました。
ESXi 全体のカウンタは出力されますが、
仮想マシン単位のカウンタは vm01 のものだけが取得できていました。
/work # head -n 1 vm01.log | sed 's/,/\n/g'
"(PDH-CSV 4.0) (UTC)(0)"
"\\esxi01.local\Memory\Memory Overcommit (1 Minute Avg)"
"\\esxi01.local\Memory\Memory Overcommit (5 Minute Avg)"
"\\esxi01.local\Memory\Memory Overcommit (15 Minute Avg)"
"\\esxi01.local\Physical Cpu Load\Cpu Load (1 Minute Avg)"
(中略)
"\\esxi01.local\Group Cpu(104997:vm01)\Members"
"\\esxi01.local\Group Cpu(104997:vm01)\% Used"
"\\esxi01.local\Group Cpu(104997:vm01)\% Run"
"\\esxi01.local\Group Cpu(104997:vm01)\% System"
(中略)
"\\esxi01.local\Virtual Disk(vm01)\Commands/sec"
"\\esxi01.local\Virtual Disk(vm01)\Reads/sec"
"\\esxi01.local\Virtual Disk(vm01)\Writes/sec"
"\\esxi01.local\Virtual Disk(vm01)\MBytes Read/sec"
"\\esxi01.local\Virtual Disk(vm01)\MBytes Written/sec"
"\\esxi01.local\Virtual Disk(vm01)\Average MilliSec/Read"
\\esxi01.local\Virtual Disk(vm01)\Average MilliSec/Write
それでもカウンタは140個近くありました。
/work # head -n 1 vm01.log | sed 's/,/\n/g' | wc -l
143
※結果≒カウンタ数です。wcが改行文字を数えているだけだと思うので、実際はちょっと違います。
以上、仮想マシンねらいうちでした。
他にもっと良い方法が いくらでもありそうな気がしますが・・・