日々是好日

これまで使ってきたOSSの備忘録です

ZabbixでDNSフェールオーバーを作ってみた(その3)

3.権威DNSを書き換えるスクリプトをZabbixで実行する

(1) 事前準備

 ①権威DNSを書き換えるスクリプトを用意する。

  (例: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)で配置したスクリプトを実行するように設定する  

f:id:sincnick:20210921220648p:plain

 ⑧Addをクリックする

 ⑨「追加」ボタンをクリックする。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

【解説】

スクリプトの実行方法で「Zabbixサーバー」を指定した場合、5分以内にスクリプトの実行が終了しないと強制終了してしまう。スクリプトの実行が5分以内であれば、「Zabbixサーバー」でも構わない。

 

実際に使ってみた権威DNSだと、API経由でDNSレコードを書き換えようとすると、1レコードあたり1秒くらいかかったので、5分間では300レコードしか書き換えできず、物足りなかった。そのため、Zabbixエージェントでスクリプトを実行するようにした。

 

Zabbixエージェントを利用する注意点としては、スクリプトの実行が非同期実行になるため、スクリプトの実行が途中で停止すると、永遠にプロセスが残ってしまう可能性がある。別途、スクリプトの実行を監視する仕組みが必要になってくるが、これは別の機会に説明したい。

 

次回は、複数拠点のZabbixのWeb監視を連携する方法を説明する。