Soracom

Users

ドキュメント
Home ドキュメント SORACOM Lagoon 3 Alert を使ってみよう

2 つのセンサーの温度差が 7 °C を超えた場合に Slack で通知する

3 分ごとに 2 つのセンサーの最新 5 分間の温度の平均値を確認し、平均値の温度差が 7 °C を超えたら、Slack の #notification チャンネルに通知する Alert を設定します。

ここでは、2 つのセンサーとして、サンプルデータソース (Demo) の Device-1 と Device-4 の温度データを利用します。

項目設定内容

Alert rule

名前: Temperature difference alert

3 分ごとに「Device-1 の最新 5 分間の温度の平均値」と「Device-4 の最新 5 分間の温度の平均値」を確認し、平均値の温度差が 7 °C を超えたら、Alert rule の State を Firing にします。

Label は、以下のように設定します。

  • severity=info
  • alert_type=temperature difference

Contact point

名前: Sample slack channel

Slack の #notification チャンネルに通知します。
Notification policy

以下の Label が設定された Alert rule の State が Firing になったときに、Contact point「Sample slack channel」を利用して通知します。

  • severity=info
  • alert_type=temperature difference

ステップ 1: Query および評価間隔を設定する

3 分ごとに「Device-1 の最新 5 分間の温度の平均値」と「Device-4 の最新 5 分間の温度の平均値」を確認し、平均値の温度差が 7 °C を超えたら、Alert rule の State が Firing に変化するように設定します。

  1. Lagoon コンソールにログイン して、[ (Alerting)][Alert rules][+New alert rule] の順にクリックします。

    「Add rule」画面が表示されます。

  2. Query「A」を以下のように設定します。

    項目説明
    Query の名前[A] をクリックして、「D1 temp」を入力します。
    データソース (1 列目 1 項目)「Harvest (default)」を選択します。
    Alert 対象の時間範囲 (1 列目 2 項目)「Last 5 minutes」を選択して、「now-5m to now」(現在時刻から 5 分前までのデータを評価) が表示されていることを確認します。
    リソースの種類 (2 列目 1 項目)「Demo」を選択します。
    リソース (2 列目 2 項目)「Device-1」を選択します。
    データフォーマット (2 列目 3 項目)「Standard」を選択します。
    系列 (2 列目 4 項目)「temperature」(温度) を選択します。

    サンプルデータソース (Demo) の Device-1 の温度データのグラフが表示されます。

    「temperature」を選択したときに、想定したグラフが表示されない場合は、もう一度「temperature」を選択してください。

  3. [+Add query] をクリックして、新しい Query「A」を以下のように設定します。

    項目説明
    Query の名前[A] をクリックして、「D4 temp」を入力します。
    データソース (1 列目 1 項目)「Harvest (default)」を選択します。
    Alert 対象の時間範囲 (1 列目 2 項目)「Last 5 minutes」を選択して、「now-5m to now」(現在時刻から 5 分前までのデータを評価) が表示されていることを確認します。
    リソースの種類 (2 列目 1 項目)「Demo」を選択します。
    リソース (2 列目 2 項目)「Device-4」を選択します。
    データフォーマット (2 列目 3 項目)「Standard」を選択します。
    系列 (2 列目 4 項目)「temperature」(温度) を選択します。

    サンプルデータソース (Demo) の Device-4 の温度データのグラフが表示されます。

    「temperature」を選択したときに、想定したグラフが表示されない場合は、もう一度「temperature」を選択してください。

  4. Expression「B」を以下のように設定します。

    項目説明
    Expression の名前[B] をクリックして、「D1 temp reduce」を入力します。
    計算方法「Reduce」を選択します。
    [Function]「Mean」を選択します。
    [Input]「D1 temp」を選択します。
    [Mode]「Strict」を選択します。

  5. Expression「C」を以下のように設定します。

    項目説明
    Expression の名前[C] をクリックして、「D4 temp reduce」を入力します。
    計算方法「Reduce」を選択します。
    [Function]「Mean」を選択します。
    [Input]「D4 temp」を選択します。
    [Mode]「Strict」を選択します。

  6. [+Add expression] をクリックして、新しい Expression「A」を以下のように設定します。

    項目説明
    Expression の名前[A] をクリックして、「Difference」を入力します。
    計算方法「Math」を選択します。
    [Expression]「abs(${D1 temp reduce}-${D4 temp reduce})」を入力します。

  7. [+Add expression] をクリックして、新しい Expression「A」を以下のように設定します。

    項目説明
    Expression の名前[A] をクリックして、「Condition」を入力します。
    計算方法「Threshold」を選択します。
    [Input]「Difference」を選択します。また、[IS ABOVE] (より大きい) が表示されていることを確認して「7」を入力します。

  8. Expression「Condition」の [Make this the alert condition] をクリックします。

  9. [Preview] をクリックします。

    データが更新され、ここまでに設定した Expression の計算結果と、条件の評価結果が表示されます。

    評価結果説明
    NormalAlert rule を満たしません。
    FiringAlert rule を満たしました。なお、ここで Alert rule を満たしただけでは、Alert の State は Firing にはなりません。続けて、次のステップを行います。

    引き続き、Alert rule の評価間隔を設定します。ここでは、3 分間隔で Alert rule を評価し、Alert rule を満たしたらすぐに、Alert の State が Firing に変化するように設定します。

  10. 以下の項目を設定します。

    項目説明
    [Evaluate every]「3m」を入力します。
    [for]「0」を入力します。Firing に変化するまでの Alert rule の継続時間です。「0」を入力すると、Alert rule を満たすとすぐに (0 秒で) Alert の State が Firing に変化します。

    サンプルデータソース (Demo) の場合、データの欠落が発生しないため、[Configure no data and error handling] は設定しません。

ステップ 2: Alert rule の詳細を設定する

  1. 以下の項目を設定します。

    項目説明
    [Rule name]「Temperature difference alert」を入力します。Alert rule の名前です。
    [Folder]「Sample」を選択します。
    [Group]「Sample difference group」を入力します。Alert rule の Group の名前です。

    次に、Alert rule の Label を設定します。このあとに設定する Notification policy では、この Label を監視します。

  2. 以下のように設定します。

    2 つ目の Label の入力欄を追加するには、[+Add label] をクリックします。

    [key][value]
    「severity」を入力します。「info」を入力します。
    「alert_type」を入力します。「temperature difference」を入力して、Enter キーを押します。

  3. 画面右上にある [Save] をクリックします。

ステップ 3: Slack のチャンネルを設定する (Contact point)

Contact point を作成して、Slack のチャンネルに通知するための Contact point を作成します。

操作を始める前に準備が必要です (クリックして確認してください)

(1) Slack App を作成する

Slack App を作成してください。詳しくは、Slack App を作成する を参照してください。

(2) Slack チャンネルを作成する

「#notification」という名前のチャンネルを作成してください。

(3) Slack App を Slack チャンネルに追加する

Slack を起動して、以下の手順で Slack App をチャンネルに追加します。

  1. Slack で通知先のチャンネルを右クリックして、[チャンネル詳細を表示する] をクリックします。
  2. [インテグレーション][アプリを追加する] の順にクリックします。
  3. Slack App の [追加] をクリックします。

準備完了
  1. [ (Alerting)][Contact points][+New contact point] の順にクリックします。

    「New contact point」画面が表示されます。

    Message templates については、Message template を作成する を参照してください。

  2. 以下の項目を設定します。

    項目説明
    [Name]「Sample slack channel」を入力します。Contact point の名前です。
    [Contact point type]「Slack」を選択します。
    [Recipient] (*1)「#notification」を入力します。
    [Token] (*1)Slack App の Bot User OAuth Token を入力します。
    [Webhook] (*2)Slack App の Webhook URL を入力します。
    • (*1) Bot User OAuth Token を利用してメッセージを送信する場合にのみ設定します。
    • (*2) Webhook URL を利用してメッセージを送信する場合にのみ設定します。

  3. [Save contact point] をクリックします。

ステップ 4: Alert rule と Contact point を関連付ける (Notification policy)

ここまでの設定では、Alert rule と Contact point が別々に登録されている状態です。Notification policy を設定して、Alert rule と Contact point を関連付けます。

  1. [ (Alerting)][Notification policies][+New policy] の順にクリックします。

    新しい Policy が作成されます。

  2. 以下の項目を設定します。

    項目説明
    [Matching labels]

    [+Add matcher] をクリックして、以下の Label を設定します。

    [label][Operator][value]
    「severity」を入力します。「=」を選択します。「info」を入力します。
    「alert_type」を入力します。「=」を選択します。「temperature difference」を入力します。

    この Policy が動作する条件です。条件に一致すると、次の [Contact point] で選択した Contact point に Alert が通知されます。

    [Contact point]「Sample slack channel」を選択します。

  3. [Save policy] をクリックします。

以上で、3 分ごとに 2 つのセンサーの最新 5 分間の温度の平均値を確認し、平均値の温度差が 7 °C を超えたら、Slack の #notification チャンネルに通知されます。

通知が不要になったときは

通知が不要になったときは、作成した設定を以下の順番で削除します。

  1. Notification policy の Specific routing (Policy) を削除します。

    詳しくは、Specific routing (Policy) を削除する を参照してください。

  2. Contact point を削除します。

    詳しくは、Contact point を削除する を参照してください。

  3. Alert rule を削除します。

    詳しくは、Alert rule を削除する を参照してください。