ZabbixでDNSフェールオーバーを作ってみた(その3)
3.権威DNSを書き換えるスクリプトをZabbixで実行する
(1) 事前準備
(例:DNS_Change.sh)
(2) スクリプトファイルをZabbixサーバーに配置する。
①Zabbixサーバーに、SSH接続する
②以下のフォルダにスクリプトファイルを配置する
/usr/lib/zabbix/externalscripts/
③配置したスクリプトファイルにZabbixアカウントで実行できるように、ファイルに実行権限を付与する。
cd /usr/lib/zabbix/externalscripts
chmod 755 DNS_Change.sh
(3) Zabbix エージェントでスクリプトを実行できるようにする。
①Zabbix エージェントのコンフィグに、EnableRemoteCommands=1を追加する。
vi /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
②Zabbixエージェントを再起動する
systemctl restart zabbix-agent
(4) アクションを設定する
①「設定」ー「アクション」を開く
②右上の「アクションの作成」を開く
③アクションタブで、任意の名前を入力する
④実行条件で、データセンタの障害を検知するトリガー名を指定する
⑤実行内容タブを開く
⑥実行内容欄の「追加」をクリックする
⑦下図のように、上記(2)で配置したスクリプトを実行するように設定する
⑧Addをクリックする
⑨「追加」ボタンをクリックする。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【解説】
スクリプトの実行方法で「Zabbixサーバー」を指定した場合、5分以内にスクリプトの実行が終了しないと強制終了してしまう。スクリプトの実行が5分以内であれば、「Zabbixサーバー」でも構わない。
実際に使ってみた権威DNSだと、API経由でDNSレコードを書き換えようとすると、1レコードあたり1秒くらいかかったので、5分間では300レコードしか書き換えできず、物足りなかった。そのため、Zabbixエージェントでスクリプトを実行するようにした。
Zabbixエージェントを利用する注意点としては、スクリプトの実行が非同期実行になるため、スクリプトの実行が途中で停止すると、永遠にプロセスが残ってしまう可能性がある。別途、スクリプトの実行を監視する仕組みが必要になってくるが、これは別の機会に説明したい。
次回は、複数拠点のZabbixのWeb監視を連携する方法を説明する。