「インフラエンジニアたるもの、寝ててもアラートには秒速で反応すべし!」みたいな教えを、私も随分前に先輩から受けたような気がしますが、私は眠りの深さに絶対的な自信がありまして。 とてもそんな事できないよと長年思ってましたし、実際、幾度となく夜中のアラートメールを見過ごして、朝震えるという苦い経験を重ねてきました。
で、最近はTwilioという、電話をコントロールできる便利なAPIがあるらしく、これを監視システムで使えば、夜中に起きて鮮やかに障害対応することも可能!眠気まなこで思いつきのフェイルバック!根拠の薄いOSリブート!そして、最後は祈りを捧げることも!....最高じゃないですか、やりましょうよ。という訳で、Twilioをちょっと試してみました。(なぜメールはダメで電話なら起きられると思うのか?という質問は、あえて流したいと思います。)
ついでに、せっかくなら普段使わない監視ツールを触ってみたいなーと思い、今回は不慣れながら
Zabbix上で試しています。
- 構成
監視サーバ
Amazon Linux AMI 2013.03/Zabbix Server 2.0.9
監視対象
Amazon Linux AMI 2013.03/Zabbix Agent - AWSのネットワーク設定
- Twilioの利用登録と、お試し用リクエスト(curl)の作成
Twilioのサイトに飛んで「利用登録」を行うと、アカウント登録からお試し用の電話発信用リクエストまで、ものの数分で出来ました。アカウント登録された方は、画面の指示に従い適当な文章を含んだリクエストコマンドを作ってみて下さい。私は思いつきの文章を入れたことを後悔しましたが。 - アラートの設定
Zabbixと戯れて数時間という事もあり理解が間違っていたらご指摘頂きたいのですが、
アラートを飛ばすには、以下の3+1つの要素(設定)が必要になるようです。
いつ => 「トリガー」
誰に => 「ユーザorユーザグループ」
どう連絡するのか => 「メディアタイプ」
これらを定義した上で、「アクション」において、事象(イベント)に対する反応(トリガー、通知)を決定します。
という訳で、それらを設定していきます。- メディアタイプの設定
設定画面:管理>メディアタイプ>メディアタイプの作成
Zabbix の通知手段には、Twilioで用いるPOSTメソッドを叩く直接的な手段が見当たらなかったので、お試し用に発行されたcurlコマンドをまるっとスクリプト化し て、それを指定しました。なので、メディアタイプを「スクリプト」とし、そのスクリプトファイル名を入力しています。
なお、スクリプトがフルパスになっていないのは、固定的に「/usr/lib/zabbix/alertscripts/」を参照しているからで、このディレクトリ内にスクリプトを配置してその名前を入力します。(フルパスを書くもんだと思ってプチハマり...) - ユーザの設定(メディアタイプの括り付け)
次に、どのユーザにどのような通知を行うのかという定義を設定します。
今回は、デフォルトのAdminユーザに対して、先ほど作ったメディアタイプを割当てます。
ちなみに、"送信先"はスクリプトへの引数として使えます。今回は引数のないスクリプトでしたが、何かしら入力するよう求められたので、とりあえず"localhost"としました。(スクリプト側で引数を扱わないのであれば、単に無視されます。) - トリガー設定
どんな時にアラートを出すのかという条件設定ですね。設定>ホストから、監視対象ホストのトリガーへと進んで設定します。すでに既存の監視アイテムとトリガーがある場合は、設定不要です。 - アクション設定
設定>アクションと進み、すで監視項目(イベント)に紐付いたアクションがあれば、それを編集します。(なければ新規作成) これまで設定してきたトリガーを"実行条件"に加えたり、通知ユーザや通知方法(メディアタイプ)を"実行内容"に定義していきます。
これでとりあえずの設定が出来ました。
- メディアタイプの設定
- アラートを発生させてみた
早速、監視対象サーバをシャットダウンさせてみてしばらく待つと.....
ちゃんと電話がかかってきました!出てみると、女性の声で「これはお試しです」というアナウンスとともに、「オハコンバンチワ、テストテスト」という何も考えずに入れたお試し文章が...
とりあえず、不慣れなZabbixの操作でつまづくところが幾つかあったものの、肝心のTwilioそのものは驚くほど簡単に使ってみることが出来ました。次は、エラー内容を喋らせることが出来るかどうか試してみたいと思います。
ではまた!
-------------------
#参考サイト
Developers.IO :「Amazon LinuxにZabbix2.0.9をインストールしてみた」