SORACOM Lagoon を利用してアラートを設定する
このドキュメントではSORACOM Lagoon を利用したアラートの設定方法を解説します。
- SORACOM Lagoon とは
- ステップ 1: SORACOM Harvest を設定する
- ステップ 2: Lagoon でダッシュボードを作成する
- ステップ 3: Lagoon でアラートチャンネルを設定する
- ステップ 4: Lagoon でアラートを設定する
当ガイドの前提は以下のとおりです。
- SORACOM のアカウントを作成済みであること
- SORACOM Air の SIM (IoT SIM)、および使用できるデバイスが準備されていること
- Slack アカウントを作成済であること
SORACOM Lagoon とは
SORACOM Lagoon(以降、Lagoon)は、SORACOM Harvest(以下、Harvest) を使って収集・蓄積したデータに対し、目的に応じて複数のグラフ、テーブル、地図等を組み合わせたダッシュボードを作成し、それらを公開もしくは共有できるサービスです。
本サービスを活用することで、ダッシュボードのためのインフラの準備なし、センサーなどのIoTデバイスが取得したデータを可視化できます。また、値が一定値を越えたらメールやSlackで通知を送るといったアラート機能や、作成したダッシュボードを第三者に共有することもできます。
Lagoon はOSS として提供されているGrafana をベースとしており、データソースとしてHarvest に蓄積されたデータを利用します。
※Lagoonでは、サービス提供にあたって一部機能に制限があります。詳しくは SORACOM Lagoon の制限事項 を参照ください。
ステップ 1: Harvest を設定する
今回はユーザーコンソールからHarvest を有効化する設定を行います。
ユーザーコンソールでの設定方法
Harvest の設定はグループ単位で行います。そのため、Harvestを使うには IoT SIM をグループに登録する必要があります。今回は、動作確認として SORACOM Harvest 専用のグループを作成し、そのグループに IoT SIM を登録してみましょう。
まず IoT SIM 管理画面を開いて、SORACOM Harvest でデータ収集を行いたい IoT SIM にチェックマークを付け、[操作] ボタンから [所属グループ変更] を選択します。
IoT SIM の所属グループを選択するためのダイアログが表示されたら、[新しい所属グループ] ドロップダウンから [新しいグループを作成…] を選択します。
今回は"Hello Lagoon Alert"というグループ名で作成しSIM を所属させます。
先ほど作成した “Hello Lagoon Alert” グループに対し、SORACOM Harvest の設定を行います。設定を行うためには、グループ管理画面を開き、"Hello Lagoon Alert" グループを選択してグループ詳細画面を開きます。
[SORACOM Harvest 設定] グループの中にあるスイッチをONに設定し、保存ボタンをクリックしてください。
HTTPでデータを送信する
サンプルデータとしてHarvestエントリポイント宛にHTTP POSTリクエストを送信します。今回は以下のような気温データを先ほどグループ設定したIoT SIM から数秒ごとに送信してみてください。(値や回数は同じでなくても構いませんがtemperature: 25以下のデータを送信いただけますと後の手順がスムーズです)
コマンド例:
$ curl -v POST -H "content-type:application/json" -d "{\"temperature\": 18}" http://harvest.soracom.io
$ # 数秒待つ
$ curl -v POST -H "content-type:application/json" -d "{\"temperature\": 20}" http://harvest.soracom.io
$ # 数秒待つ
$ curl -v POST -H "content-type:application/json" -d "{\"temperature\": 23}" http://harvest.soracom.io
$ # more ...
ユーザーコンソールからHarvest で収集された JSON 形式のデータを可視化できます。
以上で「ステップ 1: SORACOM Harvest を設定する」まで完了しました。 ここまでのHarvest の設定について不明点があれば、SORACOM Harvest Data でデバイスのデータをクラウドで収集・取得・可視化する をご確認ください。
ステップ 2: Lagoon でダッシュボードを作成する
Lagoon の設定を行います。 初期設定については SORACOM Lagoon を利用してダッシュボードを作成する をご確認ください。
先ほどの Harvestに格納したデータを Lagoonで表示してみましょう。 まずは任意のダッシュボードからグラフパネルを利用します。
パネル上部のプルダウンメニューから「編集」をクリックしグラフの設定を行います。
まずは「全般」タブからこのグラフのタイトルを設定します。
今回は「Lagoon Alert Test」とします。
次に「メトリック」タブからこのグラフに表示する統計情報を設定します。
データソースは「default 」でSORACOM Harvestを選択している状態となるため変更は不要です。
今回はIoT SIM経由でHarvestへデータ登録を行いましたのでプルダウンから「Air」を選択し、利用したIMSI の値を一つ右のの入力欄へ設定してください。
また、Harvesr へ登録した「temperature」をプルダウンから選択し、標準データなので「Standard」を設定してください。
ここまでの設定で以下のようなグラフが作成できたと思います。
一旦ここまででこのダッシュボードを保存しましょう。
画面右上にある保存ボタンからこのダッシュボードに名前をつけて保存できます。
今回は「Lagoon Alert Dashboard」という名前で保存します。
以上で「ステップ 2: Lagoon でダッシュボードを作成する」まで完了しました。 ここまでの設定について不明点があれば、SORACOM Lagoon を利用してダッシュボードを作成する をご確認ください。
ステップ 3: Lagoon でアラートチャンネルを設定する
Lagoon のアラートチャンネルの設定を行います。
Lagoon はOSS として提供されているGrafana をベースに開発されているのでメールやwebhook 等の様々な通知方法があります。
今回はSlack への通知を設定します。
※Slack アカウントは作成済であることを前提としています。
まずはダッシュボードホーム画面のサイドメニューからアラート「通知チャンネル」を選択します。
アラート設定画面が表示されますので「+ New Channel」から通知チャンネルの新規追加を行います。
通知チャンネルの設定画面が表示されます。
まずはこの通知チャンネルに名前をつけましょう。今回は「Lagoon Alert Channel」としました。
タイプでは通知する手段を選択します。今回は「Slack」を選択します。
通知を受けるためのSlack URL をまだ取得していないので、この画面は一旦ここまでで置いておきます。
次に通知を受けるためのSlack URL を取得します。
以下のURL に別のブラウザタブからアクセスします。
「Post to Channel」からアラート通知を受けたいチャンネルを選択します。今回は「#_keith」というチャンネルを選択しています。
下にある「Add Incoming WebHooks integration」ボタンを押してください。
https://slack.com/services/new/incoming-webhook
すると以下の画面のようにWebhook URL が発行されます。
また、この画面の下部では通知される際の名前やアイコン等がカスタマイズできますのでぜひ試してみてください。
変更したら「Save Settings」ボタンで保存します。
それでは先ほどの通知チャンネル「Lagoon Alert Channel」に取得したWebhook URL を設定します。 ここまでの設定ができていれば画面下にある「送信テスト」ボタンからSlackへアラートのテスト送信ができます。
最後に忘れずに「保存」ボタンで設定を保存しておいてください。
以下のようなテストアラートが受信できていれば「ステップ 3: Lagoon でアラートチャンネルを設定する」まで完了しました。
ステップ 4: Lagoon でアラートを設定する
Lagoon のデータを監視しアラートする設定を行います。
ステップ 2で作成したダッシュボードのグラフを編集します。 「アラート」タブから「アラートを作成」ボタンで新規にアラートを設定します。
アラートのパラメーターを設定していきます。
アラートの名前を設定します。
- デフォルトで「ダッシュボード名 + alert」になるようなのでそのままとします。
評価間隔を設定します。
- 下で設定する条件をここで設定する時間間隔で評価します。
- 例えば「10m」と設定した場合、10分ごとにアラートを出す状態であるかが評価されることになります。
- 今回はすぐにアラート結果が欲しいので「10s」とします。
条件を設定します。
- 「WHEN」の1つ右の設定項目ではデータの集計方法が選択できます。
- 例えば「avg()」では集計したデータの平均値がアラート閾値に対しての評価対象となります。「max():最大値」「sum() :合計値」「last():時間範囲での最後の値」あたりをよく使うことになると思います。
- 今回は簡単に「avg()」とします。
- 「OF」の1つ右の設定項目では監視するデータとその時間範囲を選択できます。
- 例えばメトリックタブで作成した「A」というデータの現在時刻から1分間前までのデータを監視対象としたい場合「query(A, 1m, now)」といったように書くことができます。
- 今回は簡単に「query(A, 10s, now)」とします。
閾値を設定します。
- 「IS ABOVE」の1つ右の設定項目に例えば「25」と設定するとデータが「25」を超過した時にアラートが出ます。
- 「IS ABOVE」はクリックすると変更することも可能で「IS BELOW:下回った時」「IS OUTSIDE RANGE:設定した範囲をから出たら」等から選択できます。
つまり今回の設定は「評価間隔:10秒」ごとに「データA
の現在から10秒前の10秒間」の「平均値」が「25」を超過していた場合にアラートを出すことになります。
今回は定期的にデータをあげる訳では無いので「データが無いか全ての値がNull の時」は「Keep Last State」とし、不要なアラートが飛ぶことを回避しておきます。(「NO Data」を選択すると「No Data」であることの通知がきます)
設定したアラートのパラメータをアラートチャンネルと紐付けます。 「アラート」タブの左にある「通知」タブから送り先を設定します。「+」ボタンから先ほど作成したアラートチャンネル「Lagoon Alert Channel」を選択し任意のメッセージを設定します。
ここまで設定が完了していれば以下の図のようにグラフの中にアラート閾値が描画されているはずです。
それではアラートを発火させてみましょう。 今回はコマンドからアラート閾値(25)を上回る値を登録します。
コマンド例:
$ curl -v POST -H "content-type:application/json" -d "{\"temperature\": 30}" http://harvest.soracom.io
すると以下のようにSlackにアラート通知がきていれば成功です。
グラフを確認すると確かにアラート閾値を超過していることが確認できます。
さて、それではアラートを解除してみましょう。 今回はコマンドからアラート閾値(25)を下回る値を登録します。
コマンド例:
$ # 10~20秒待つ
$ curl -v POST -H "content-type:application/json" -d "{\"temperature\": 20}" http://harvest.soracom.io
以下のようにSlackに通知がきていれば成功です。
グラフのアラートタブから設定したアラートの状態履歴を見ることもできます。
以上でLagoon でアラートを設定できました。
この機能を活用することで単にデータを可視化するだけではなく、異常検知や定期報告のような活用が可能となります。
色々な場面での活用を検討してみてください。