Skip navigation

あまり使いどころないかも知れませんが、
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 コマンドが改行文字を数えているだけだと思うので、実際はちょっと違います。

 

以上、仮想マシンねらいうちでした。

他にもっと良い方法が いくらでもありそうな気がしますが・・・