ピクトリンク事業部開発部インフラ課の「メガネとマスクを同時着用すると耳が痛くなる系エンジニア」の橋本です。この上さらにヘッドホンとか装備しようものなら、耳が爆発します。

 

本記事は フリューAdvent Calendar 2018 の12/12分です。

 

前回の記事で、ESXiサーバにパスワードなしで簡単にSSH接続できる環境を整えました。

今回はそれを活かしつつ、ESXi仮想環境をより便利にしていきます。

やりかた

  1. いい感じに必要情報を取得するスクリプトを作成する
  2. SSH越しにスクリプトを実行する

いい感じに必要情報を取得するスクリプトを作成する

ESXiホストサーバでは、「そのホスト上で動作しているゲストサーバの概要を取得するコマンド」が用意されています。

しかし、これで取得できる情報は、登録されているゲストサーバ名とvmイメージのpath, イメージのバージョン情報くらいのもの。かなり限定的です。

 

個人的見解ですが、少なくともホストサーバの稼働状態(起動中・サスペンド中・停止中)は知りたい。
できれば、いつから稼働しているかとかの情報もわかると嬉しい。

 

そういう詳細情報まで取得したい場合、ESXiに用意されているget.summaryコマンドを使います。

これを叩くと、ずらずらっとjsonモドキの形式で情報が取れます。

出力結果は長いので省略しますが、割り当ててあるCPUのコア数であるとか、いろいろな情報が出ます。

 

ですが、ここで問題となるのが「対象となるVMのID」を指定しなければならない、というところ。

 

ホストの情報は1ホスト分ずつしか取得できず、しかもそのためにはVMのIDが必要なのです。(VMID自体は上記のgetallvmsで取得できる情報です)

 

なので、これらをいい感じに組み合わせるスクリプトを用意しました。

シェバンが #! /bin/sh となっていますが、ESXiサーバで使えるのは /bin/bash ではなく/bin/sh です。
bashとは一部記法が違ったり、たとえば配列みたいな構造体が使えなかったりします。

実行権限付与をお忘れなきよう。

 

実行してみると、こんな感じの結果が帰ってきます。

スクリプト21行目のgrep以降、

この部分で取得する情報を絞っているので、たとえば「IPアドレス情報も取得したい!」という場合には

といった具合に、取得したい項目を追加してやれば良い感じになります。

SSH越しにスクリプトを実行する

esx構成

こんな感じに複数のESXiサーバから単一のストレージサーバ(仮にhoge_fuga_maxheartとします)をマウントし、そこにスクリプトを置いてやれば、どのサーバからも先ほどのスクリプトが叩けるようになります。

ssh越しに複数サーバのスクリプトを叩くには、接続用の鍵ファイルを置いてある環境で下記のようにします。

前回の記事でパスワードなしにSSH接続する環境が整っていれば、一発で全てのホストサーバの状態を取得できます。情報を取ってくるだけなら、このコマンドを都度叩くだけで解決です。

あとはイイカンジのGUIのガワを作って、URLにアクセスがあるたびに情報を取ってきてやれば、見た目にも優しい状態確認画面の完成です。

esx_kanseizu