あまり使いどころないかも知れませんが、
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 コマンドが改行文字を数えているだけだと思うので、実際はちょっと違います。
以上、仮想マシンねらいうちでした。
他にもっと良い方法が いくらでもありそうな気がしますが・・・
Comments