ハードウェアからサーバ・アプリまでワンストップで開発

前回(「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ではなく、部屋の温度にして、ある一定の気温を超えたときイベントを起こすようにしたり、いろいろ変えると楽しいと思います。

最近のエントリー

OrangePi5にZabbixをインストールする

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル

LED行燈の試作(1)

エントリを書くこと