vmware
zabbix
python3
pyvmomi

zabbixとpyvmomiでネットワーク切断の自動化をしてみる

pyvmomiで作成したスクリプトをZabbixで実行して自動化するサンプルを作ってみました。
ここでは、監視対象ホストから取得した値でアラートが発生したらZabbixサーバ側でスクリプトを実行して監視対象ホスト(VM)のvNICを自動で切断してみます。

検証方針

  • Zabbixサーバ、監視クライアント共にCentOSを使用する
  • Zabbixサーバに監視クライアントの登録、トリガー設定、アクション設定をする
  • 監視対象ホストからzabbix_senderで値を飛ばしてトリガーを発生させる
  • vCenterからVMのvNICが切断されたことを確認する

環境

項目 内容
OS CentOS 7.3
Zabbix 3.2.7-1
python python34
pyvmomi 6.5.0.2017.5.post1
vCenter バージョン 6.5.0 ビルド 4602587
ホスト Zabbixサーバ : ZBX_SRV、監視対象ホスト : ZBX_AGE

vNIC切断ツール

ソースコード

https://gist.github.com/sky-joker/0c9e689d982c9871d7967661c596ecbd

使い方

(1) 使い方は以下の通りです。

[root@localhost ~]# ./vm_disconnect_nw.py vCenterのIP ログインユーザー名 パスワード 対象VM名 対象vNIC名
[root@localhost ~]# ./vm_disconnect_nw.py xxx.xxx.xxx.xxx administrator@vsphere.local password ZBX_AGE 'Netwok adapter 1'

検証

ホスト登録

(1) ホスト情報は以下の通りです。

(2) 以下のマクロを登録します。

項目 内容
{$VCENTER_IP} vCenterのIP
{$USERNAME} vCenterへログインするユーザー名
{$PASSWORD} vCenterへログインするユーザーのパスワード

(3) アイテムは以下の様に登録してあります。

(4) トリガーは以下の様に登録してあります。

アクション設定

(1) アクションは以下の様に登録してあります。

(2) 実行内容は以下の様に登録してあります。

/usr/lib/zabbix/externalscripts/vm_disconnect_nw.py {$VCENTER_IP} {$USERNAME} {$PASSWORD} {HOST.HOST} 'Network adapter 1'

vNIC切断ツールのインストール

(1) ツールをダウンロードします。

[root@ZBX_SRV ~]# git clone https://gist.github.com/0c9e689d982c9871d7967661c596ecbd.git
Cloning into '0c9e689d982c9871d7967661c596ecbd'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.

(2) zabbixのスクリプトディレクトリへコピーします。

[root@ZBX_SRV ~]# cp 0c9e689d982c9871d7967661c596ecbd/vm_disconnect_nw.py /usr/lib/zabbix/externalscripts/
[root@ZBX_SRV ~]# chmod +x /usr/lib/zabbix/externalscripts/vm_disconnect_nw.py
[root@ZBX_SRV ~]# chown zabbix.zabbix /usr/lib/zabbix/externalscripts/vm_disconnect_nw.py
[root@ZBX_SRV ~]# chmod 750 /usr/lib/zabbix/externalscripts/vm_disconnect_nw.py

検証実行

(1) ZBX_AGEのvNIC状態が接続中のことを確認します。

(2) ZBX_AGEから「1」を送信します。

[root@ZBX_AGE ~]# zabbix_sender -z zabbixサーバIP -s 'ZBX_AGE' -k test.item -o 1

(3) タスクが実行されZBX_AGEのvNICが切断されたことを確認します。

vNICが切断されました :-)
このような感じでpyvmomi + Zabbixを組み合わせることでVMwareの自動化が出来たりします。
自動化がきちんとハマるととても便利ですね!