mayumi
前回(「IFTTTとFolloger使って監視中のサーバーに問題があったらツイートする(1)」)の続きです。
3.Follogerのデータを監視して、問題発生時にIFTTTへ通知する
3.1. Follogerを利用するためのライブラリの取得
Follgerへ送ったデータはAPIを使用して取得することができます。取得するためのライブラリはrubyで用意しています。rubyの実行できる環境で、以下二つのソースを取得します。
- open-es
- folloger-libs
これらはgithubにてソースが公開されているのでそこから取得します。「1.サーバーの状態をFollogerで監視する」によるFollogerとzabbixとの連携がすでに完了している場合は、この手順は不要です。
$ git clone https://github.com/waspcojp/open-es.git $ git clone https://github.com/waspcojp/folloger-libs.git $ cd folloger-libs/libs; ln ../../open-es/src/data_abstraction.rb
3.2. IFTTTへ通知するための設定
今回は監視中のサーバーのメモリ状態と自分で設定した基準値とを比較して、異常と判定した場合にIFTTTへ通知するようにしたいと思います。IFTTTとの連携のサンプルはfolloger-libs内にあるsamples/iftttになります。
3.2.1. 設定ファイルへzabixxを監視しているFolloger内のチャンネル情報と、IFTTTへの送信先情報をセットします。
folloger-libs/samples/ifttt/env.rb.sampleを元にenv.rbを作成して編集します。設定が必要なものは、「USER_SESSION_KEY」、「CHECK_STREAMS」、「IFTTT_EVENT」、「IFTTT_KEY」です。
USER_SESSION_KEY
Follogerで付与されているユーザーのセッションキーをセットします。「USER_SESSION_KEY」は以下の手順で確認できます。
Folloger(http://www.folloger.com)にログインして、左上メニューより「Edit Account」をクリックします。
「Session」をクリックしてSessionの確認画面を開きます。
ここでSessionが設定されていればその内容をコピーしてfolloger-libs/samples/ifttt/env.rbの「USER_SESSION_KEY」にセットします。まだSessionが設定されていない場合「Update Session」をクリックしてSessionを設定します。
CHECK_STREAMS
監視対象のストリームと通知条件の設定です。「uuid」と「checker」(通知条件や通知内容の定義)、「param」(通知に関する詳細なパラメータ)を一つとしています。
「uuid」はfolloger上で監視対象のストリームを開いたときの左側に表示されるUUIDを設定します。参考に「照度」センサーのストリームのUUIDを載せています。監視対象のストリームのページにアクセスして確認してください。
「checker」にはそのストリームに対応した通知条件や通知内容を定義したクラス名をセットします。サンプルとしてfolloge-libs/samles/ifttt/memory_size_checker.rbがあります。今回はそれを使用します。通知条件や内容は対象のストリームの性質によっても、iftttへ送信したい内容によっても適宜調整がいるかと思います。用途に合わせて作成、変更すると良いです。「param」には「checker」で指定したクラスで使用する詳細なパラメータをセットしています。サンプルでは「free memoryが27GBを下回った」場合に通知を送るようにしています。
IFTTT_EVENT
IFTTT側の設定です。ここにはイベント名をセットします。前回(IFTTTとFolloger使って監視中のサーバーに問題があったらツイートする(1))で作成したアプレットの途中で設定したイベント名を記入します。(IFTTTサイトにログイン後、「My Applets」タブの中から前回作成したアプレットをクリックすると確認できます。
IFTTT_KEY
IFTTT上での自分のキーを設定します。「Search」から「webhooks」と入力して、「webhook」サービスの詳細画面にいくと、左上に「Document」がありそこからログイン中のユーザーのキーが確認できます。
3.3. 実行
サンプルを実行します。
$ cd folloger-libs $ ruby samples/ifttt/ifttt.rb
エラーなく、実行され対象のtwitterアカウントでfree memoryの内容がツイートされていれば成功です。
おわり
無事に動けば、あとは、croneで定期実行させたり、異常判定の条件を変えたり、通知方法をツイートから通知やSMSにしたり、監視対象をzabbixではなく、部屋の温度にして、ある一定の気温を超えたときイベントを起こすようにしたり、いろいろ変えると楽しいと思います。