障害発生時にZabbixサーバーから電話を掛けさせる方法

Zabbixサーバー障害発生時に自動的に電話を掛けさせる方法

Zabbixからの電話発信方法
http://www.slideshare.net/BlueSkyDetector/zabbixjp-study-20100730-2nd-session
実行にはX Window & Skypeが必要ですが、幸いなことに監視サーバーにはX Windowが入っています。

俺のZabbixがこんなに可愛いわけがない ~おかわり~
http://www.slideshare.net/sechiro/zabbix-6898674

CentOS6.3にSkypeをインストール

まずこれが大変でした。SkypeのLinux版はDebian/UbuntuかopenSUSE版しか配布されていません。CentOS用のRPMはなく、Skypeはオープンソースではないので、ソースコードも公開されていません。ダイナミックファイルが公式サイトに存在したので、CentOSではそちらを動かすしかないようです。

しかも、ダイナミックファイルは32bitでコンパイルされたものしかありません。監視サーバーは64bitOS。悪戦苦闘の末、64bitのX Windowsシステムで32bitのQtとGTKが動く環境を構築することに成功してSkypeの起動に成功しました。

Skype4Pyのインストール

Skypeを任意のアカウントでログインし、さらにそれをスクリプトから発信動作を制御できるようにSkype4PyというPythonのスクリプトをインストールします。

まず、pythonから直接Skype4Pyを実行してみます。

これでSkype側からSkype4Pyからの操作を受け付けるかの確認が出力されます。これを「常に許可」に設定します。

GitHubからalert-by-skypeをダウンロード

GitHubからSkype4PyをZabbixからコールするためのalert-by-skype.pyをダウンロードします。

zabbixユーザーでalert-by-skypeを実行してみます。

そしたら、Skypeで発信動作が正常に稼働して、私の携帯に電話が掛かってきました。障害発生時に保守携帯にサーバーから自動的に電話を掛けることが可能です。あとはZabbixサーバーの管理画面で、電話発信をメディアとして追加してアクションを設定します。

運用方法として

アラートメールが多すぎてクリティカルな障害を見逃すと致命的すぎるので、「重度の障害」のトリガーの時にはアクションとしてアラートメールと同時にZabbixから保守携帯に電話を掛ける運用にしようと思います。それであれば、メールより確実に気づきますよね。

電話の音声は任意の音声ファイルを再生可能なのですが、とりあえず、クリティカルな障害時のデフォルトは「這いよれ!ニャル子さん」の「いつもニコニコあなたの隣に、這いよる混沌、ニャルラトホテプです♪」にしようと思いますw

原理自体は簡単なので、Nagiosサーバーなどでも緊急時に電話発信は可能かと思います。