RedHatLinuxマシンがいくつかあります
VMotionが構成されているかどうかはわかりません。
RedHat OS自体から、vmotion vMotionが構成されているかどうかを識別することは可能ですか?
ここに多くからの2つのオプションがあります:
ハイパーバイザーのホスト名をVM(setGuestInfo.sh
)と共有するすべてのESXiホストに上記のスクリプトを保存します。
#!/bin/bash
IFS=$'\n'
for VM in $(vmware-cmd -l);
do
VM_STATE=$(vmware-cmd "${VM}" getstate | awk -F "= " '{print $2}')
if [ "${VM_STATE}" == "on" ]; then
echo "Setting info for ${VM}"
vmware-cmd "${VM}" setguestinfo hypervisor.hostname "$(hostname)"
fi
done
unset IFS
スクリプトが各ESXiホストで毎分実行されるようにcronジョブを設定します。
0 * * * * /vmfs/volume/shared-storage/setGuestInfo.sh
VMで、上記のスクリプトを保存して、変数hypervisor.hostname
(getGuestInfo.sh
)の値を取得します。
vmtoolsd --cmd "info-get guestinfo.hypervisor.hostname"
毎分ホスト情報を取得するようにcronジョブを設定します。
0 * * * * getGuestInfo.sh >> /tmp/vmotion.txt
出力は次のようになります。
Based on `/tmp/vmotion.txt`
Esx1
Esx2
Esx2
Esx1
Esx1
Esx1
Esx3
/tmp/vmotion.txt
の以前の値が変更されるとvMotionを検出する別のスクリプトを設定します(checkVmotion.sh
)
#!/bin/bash
last="$( tail -n 1 /tmp/vmotion.txt )"
previous="$( tail -n 2 /tmp/vmotion.txt | head -1 )"
if [ "$last" != "$previous" ] ; then
echo Vmotion
fi
Cronジョブとして設定します。
0 * * * * checkVmotion.sh
これで、都合の良いときに出力を使用できます。
API呼び出しを容易にするため、 " pyvmomi " SDKをインストールします。
pip install --upgrade pyvmomi
VM UUIDを取得します。
dmidecode -t system | grep UUID
VMメインIPを取得します。
これを使用 サンプル &カスタマイズ(引数を削除し、ホストパスワードポートuuid ipの定数を設定)-vCenterRedの管理者アクセス権が必要です。
毎分ホスト情報を取得するようにcronジョブを設定します。
0 * * * * python getGuestInfo.py >> /tmp/vmotion.txt
最初の方法から5,6ステップを繰り返します。
それが役立つことを願っています。