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切断ツール
ソースコード
使い方
(1) 使い方は以下の通りです。
1 2 3 |
[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) 実行内容は以下の様に登録してあります。
1 2 |
/usr/lib/zabbix/externalscripts/vm_disconnect_nw.py {$VCENTER_IP} {$USERNAME} {$PASSWORD} {HOST.HOST} 'Network adapter 1' |
vNIC切断ツールのインストール
(1) ツールをダウンロードします。
1 2 3 4 5 6 7 |
[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のスクリプトディレクトリへコピーします。
1 2 3 4 5 |
[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」を送信します。
1 2 |
[root@ZBX_AGE ~]# zabbix_sender -z zabbixサーバIP -s 'ZBX_AGE' -k test.item -o 1 |
(3) タスクが実行されZBX_AGEのvNICが切断されたことを確認します。
vNICが切断されました 🙂
このような感じでpyvmomi + Zabbixを組み合わせることでVMwareの自動化が出来たりします。
最近は、現場でも工数削減や品質向上を目的とした自動化をしており(ほぼ必須になってきた)色々作っていたりします 🙂
自動化がきちんとハマるととても便利ですね!