アラートを設定する
バージョンに関する注意
- 当ドキュメントは SORACOM Lagoon Classic (旧バージョンの SORACOM Lagoon) に関して記載しています。現バージョンの SORACOM Lagoon に関するドキュメントは こちら を参照してください。
- SORACOM Lagoon Classic を契約しているお客様は、SORACOM Lagoon Classic を 2022 年 5 月 31 日まで利用できます。また、SORACOM Lagoon Classic の新規契約は受け付けておりません。
- 各バージョンに関する情報は SORACOM Lagoon のバージョン を参照してください。
- 現バージョンへの移行方法は 移行ガイド を参照してください。
このドキュメントでは SORACOM Lagoon を利用したアラートの設定方法を解説します。当ガイドの前提は以下のとおりです。
- SORACOM のアカウントを作成済みであること
- SORACOM Air の SIM (IoT SIM)、および使用できるデバイスが準備されていること
- Slack アカウントを作成済であること
ステップ 1: Harvest を設定する
今回はユーザーコンソールから Harvest を有効化する設定を行います。
Harvest は有料のサービスです。Harvest が有効になっていると SIM 1 枚ごとにオプション料金が発生します。詳しくは 料金プラン を確認してください。
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 の設定について不明点があれば、Harvest Data でデバイスのデータをクラウドで収集・取得・可視化する をご確認ください。
ステップ 2: Lagoon でダッシュボードを作成する
Lagoon の設定を行います。初期設定については ダッシュボードを作成する をご確認ください。
先ほどの Harvest に格納したデータを Lagoon で表示してみましょう。まずは任意のダッシュボードからグラフパネルを利用します。
パネル上部のドロップダウンメニューから「編集」をクリックしグラフの設定を行います。
まずは「全般」タブからこのグラフのタイトルを設定します。 今回は「Lagoon Alert Test」とします。
次に「メトリック」タブからこのグラフに表示する統計情報を設定します。 データソースは「default」で SORACOM Harvest を選択している状態となるため変更は不要です。今回は IoT SIM 経由で Harvest へデータ登録を行いましたのでドロップダウンから「Air」を選択し、利用した IMSI の値を一つ右のの入力欄へ設定してください。 また、Harvesr へ登録した「temperature」をドロップダウンから選択し、標準データなので「Standard」を設定してください。
ここまでの設定で以下のようなグラフが作成できたと思います。
一旦ここまででこのダッシュボードを保存しましょう。画面右上にある保存ボタンからこのダッシュボードに名前をつけて保存できます。 今回は「Lagoon Alert Dashboard」という名前で保存します。
以上で「ステップ 2: Lagoon でダッシュボードを作成する」まで完了しました。ここまでの設定について不明点があれば、Getting Started: ダッシュボードを作成する をご確認ください。
ステップ 3: Lagoon でアラートチャンネルを設定する
Lagoon のアラートチャンネルの設定を行います。Lagoon は OSS として提供されている Grafana をベースに開発されているのでメールや webhook 等の様々な通知方法があります。 今回は 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)」とします。
- 「WHEN」の 1 つ右の設定項目ではデータの集計方法が選択できます。
- 閾値を設定します。
- 「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 でアラートを設定できました。
この機能を活用することで単にデータを可視化するだけではなく、異常検知や定期報告のような活用が可能となります。 色々な場面での活用を検討してみてください。