Soracom

Users

ドキュメント
Home ドキュメント SORACOM Query Getting Started (アドバンスドモード)

SORACOM Lagoon で SQL クエリを利用して IoT SIM 数の異常を Slack に通知する

SORACOM Query で作成した SQL クエリを SORACOM Lagoon 3 に登録し、通信した IoT SIM の数を監視する Alert rule を作成します。具体的には、直近 1 時間に通信した IoT SIM のユニーク数が、先週比で 10 以上減少した場合に、Slack チャンネルへメッセージを送信します。

SORACOM Query の SQL クエリ実行回数を確認してください

Lagoon 3 で SQL クエリを実行する場合にも SORACOM Query の SQL クエリ実行回数がカウントされます。SORACOM Query では SQL クエリ実行回数に上限が設定されているプランや、SQL クエリ実行回数に応じた料金が発生するプランがあります。詳しくは、SQL クエリ実行回数を確認する を参照してください。

SORACOM Query を利用して SORACOM Harvest Data のデータを取得する場合は Harvest Data のデータエクスポートは発生しません

Harvest Data のデータ保持期間延長オプション を有効化している場合でも、SORACOM Query を利用して SORACOM Harvest Data のデータを取得する場合はデータエクスポート料金が発生しません。

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

(1) SORACOM Query の利用を開始する

SORACOM Query の利用を開始します。詳しくは Trial プランを開始する または Business プランを契約 / 解約する を参照してください。

(2) SORACOM Lagoon 3 の利用を開始する

SORACOM Lagoon 3 の利用を開始します。詳しくは、SORACOM Lagoon 3 の利用を開始する を参照してください。

準備完了

ステップ 1: SQL アシスタント (AI) を利用して SQL クエリを作成する

SQL アシスタント (AI) に以下の質問を入力して SQL クエリを作成します。

SIM_STATS テーブルを利用して、「1 時間前の日時」と「直近 1 時間に通信した SIM ユニーク数と 1 週間前の同時間帯に通信した SIM ユニーク数の差」の 2 カラムを表示してください。

SQL クエリの例:

SELECT
  DATEADD(hour, -1, DATE_TRUNC('hour', CURRENT_TIMESTAMP())) AS TARGET_HOUR,
  (
    SELECT COUNT(DISTINCT SIM_ID)
    FROM SIM_STATS
    WHERE TIMESTAMP >= DATEADD(hour, -1, DATE_TRUNC('hour', CURRENT_TIMESTAMP()))
      AND TIMESTAMP < DATE_TRUNC('hour', CURRENT_TIMESTAMP())
  )
  -
  (
    SELECT COUNT(DISTINCT SIM_ID)
    FROM SIM_STATS
    WHERE TIMESTAMP >= DATEADD(day, -7, DATEADD(hour, -1, DATE_TRUNC('hour', CURRENT_TIMESTAMP())))
      AND TIMESTAMP < DATEADD(day, -7, DATE_TRUNC('hour', CURRENT_TIMESTAMP()))
  ) AS DIFF_SIM_COUNT
/* 1時間前のSIMユニーク数と1週間前同時間帯のSIMユニーク数の差を表示 */;

SQL アシスタント (AI) に質問する手順は、過去 24 時間のセッション作成数の推移を表示する を参照してください。

SQL クエリの文字数は 3,000 文字が上限です

SQL の文字数が 3,000 文字を超過した場合はエラーが表示されます。エラーが表示された場合は、SQL クエリの文字数を削減してください。

ステップ 2: Lagoon コンソールで Alert rule を作成する

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

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

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

    項目説明
    Query の名前 (1 行目 1 項目)[A] をクリックして、「SIM communication count diff」を入力します。
    評価範囲 (1 行目 3 項目)「now-10m to now」をクリックして、[From] に「now-8d」(8 日前) を入力し、[To] に「now」(現在時刻) を入力して、[Apply time range] をクリックします。時間設定について詳しくは、Grafana documentation の Time units and relative ranges を参照してください。

  3. [Soracom Query] をクリックして、[SQL クエリ]SQL アシスタント (AI) を利用して SQL クエリを作成する で作成した SQL クエリを入力して、[実行 (Shift+Enter)] をクリックします。

    SQL クエリが実行され、Alert rule のグラフが更新されます。

    ショートカットキーでも実行できます

    Shift キーを押しながら Enter キーを押しても実行できます。

  4. [Table] をクリックします。

    テーブル表示に切り替わります。

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

    項目説明
    Expression の名前 (1 行目 1 項目)[B] をクリックして、「SIM communication count diff reduce」を入力します。
    計算方法 (1 行目 2 項目)「Reduce」を選択します。
    [Function]「Last」(直近の値) を選択します。
    [Input]「SIM communication count diff」を選択します。
    [Mode]「Strict」を選択します。

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

    項目説明
    Expression の名前 (1 行目 1 項目)[C] をクリックして、「Condition」を入力します。
    計算方法 (1 行目 2 項目)「Threshold」を選択します。
    [Input]「SIM communication count diff reduce」を選択します。また、[IS BELOW] (より小さい) を選択して「-10」を入力します。

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

    データが更新され、「Condition」に条件の評価結果が表示されます。

  8. [3 Add details for your alert] の以下の項目を設定します。

    項目説明
    [Rule name]Alert rule の名前です。「SIM communication count alert」を入力します。
    [Folder]「sample」を入力して、Enter キーを押します。
    [Group]Alert group の名前です。「SIM communication count group」を入力して、Enter キーを押します。

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

  9. [4 Notifications][Custom Labels][+Add label] をクリックして、以下のように設定します。

    [key][value]
    「severity」を入力します。「warn」を入力します。
    「alert_type」を入力します。「SIM communication count」を入力します。

    初めての key または value の場合は、値を入力して Enter キーを押します。

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

    Alert rule が保存されます。

ステップ 3: Slack チャンネルを設定する (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」画面が表示されます。

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

    項目説明
    [Name]Contact point の名前を入力します。例: Sample slack channel
    [Contact point type]「Slack」を選択します。
    [Recipient] (*1)Slack のチャンネル名を入力します。例: #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] をクリックします。

    Contact point が保存されます。

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

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

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

    新しい Specific routing (Policy) が作成されます。

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

    項目説明
    [Matching labels]

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

    [label][Operator][value]
    「severity」を入力します。「=」を選択します。「warn」を入力します。
    「alert_type」を入力します。「=」を選択します。「SIM communication count」を入力します。

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

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

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

    Notification policy が保存されます。

以上で、データ通信した IoT SIM のユニーク数が先週比で 10 以上減少していたら、Slack の #notification チャンネルにメッセージが送信されます。

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

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

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

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

  2. Contact point を削除します。

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

  3. Alert rule を削除します。

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