Amazon Web Services ブログ

AWS IoT Device Defender の新しいメトリクスエクスポート機能の使い方

はじめに

IoT (モノのインターネット)では、接続されたデバイスのパフォーマンスを監視して、異常動作を検出し、デバイスが侵害された時には迅速に対応することが重要です。AWS IoT Device Defender は、接続されたデバイスとクラウドインフラストラクチャからメトリクスを収集し、デバイスの異常動作の検出機能を提供します。以前は、分析するためにデバイスメトリクスをデータレイクへ追加する場合は、ファームウェアの変更して追加の MQTT トピックへメトリクスをパブリッシュする必要がありました。これは、開発時間とコストに影響を与える可能性があり、特に大量のデバイスを管理する場合は問題になります。AWS IoT Device Defender の新しいメトリクスエクスポート機能は、デバイスメトリクスを AWS IoT Device Defender からデータレイクへ出力するための利便性とコスト効率に優れた方法を提供します。メトリクスエクスポート機能を使えば、ファームウェの変更は不要かつ、簡単な設定のみでメトリクスをエクスポートできます。この新機能は、既存のワークロードも含めて提供されます。

インド最大級の決済業者の 1 社である Paytm は、何百万もの消費者や小売り業者向けの金融取引決済を運用管理しています。最も人気のある IoT ソリューションの 1 つが soundbox デバイスで、Paytm の QR コード決済を行った際に音声で決済内容を伝える、小売業者向けサービスです。Paytm の QR コードサービスにより、企業は Paytm アプリを通じて店頭でのコンタクトレス決済を可能にしました。soundbox には、4G 通信の SIM カードと 50-60 時間のバッテリーが内臓されているため、露店といった小規模店のユーザーはインターネット回線の用意を心配する必要がありません。Paytm のデバイスからメトリクスを AWS IoT Device Defender へ送信することで、Paytm は soundbox の稼働状態を監視することができます。

AWS IoT Device Defender からのメトリクスエクスポート

AWS IoT Device Defender は、コネクテッドデバイスに利用される主要なサービスです。AWS IoT Device Defender は、クラウド側やデバイス側から収集したメトリクスと、設定された期待値とを比較することにより、デバイスの異常動作をほぼリアルタイムで検出します。メトリクスは 2 つのソースから収集されます。一つはクラウド側メトリクスとして、認証失敗の回数や、AWS IoT Core を介してデバイスが送受信するメッセージ数やサイズなどがあります。もう一つはデバイス側メトリクスとして、デバイスが待受しているポート、送信したバイト数またはパケット数、TCP のコネクション数などがあります。フリート固有のカスタムメトリクスを利用することも出来ます。たとえば Wi-Fi ゲートウェイに接続しているデバイスの数や、バッテリーの充電レベル、スマートプラグの電源サイクルの数などを定義することが出来ます。メトリクスエクスポート機能を使用して、クラウド側やデバイス側のメトリクスや、カスタムメトリクスをエクスポートできます。セキュリティプロファイルの設定で、エクスポートするメトリクスと送信先の MQTT トピックを指定できます。AWS IoT Device Defender はデータをバッチで処理し、セキュリティプロファイルで設定された MQTT トピックへパブリッシュすることで、エクスポートのコストを最適化します。メトリクスをエクスポートする方法としては 2 つのオプションがあります。

IoT Core ルールエンジンを使ったエクスポート

AWS IoT Core のルールエンジンの機能を利用して、エクスポートされたメトリクスを任意の宛先にルーティングできます。このオプションを使用すると、AWS IoT Core の Basic Ingest を活用して、データのエクスポートコストを削減できます。次の図は、このオプションのリファレンスアーキテクチャを示しています。このオプションでは、AWS IoT Device Defender からメトリクスを Basic Ingest のトピックに送信し、AWS IoT Core のルールエンジンでデータを任意の宛先にルーティングする様にルールを作成します。(例えば、 Amazon Kinesis Data Firehose を介して Amazon Simple Storage Service (Amazon S3) バケットにルーティングします)

AWS IoT Core Rules Engine を使用した AWS IoT Device Defender メトリックエクスポートのアーキテクチャ

図1: AWS IoT Core Rules Engine を使用した AWS IoT Device Defender メトリックエクスポートのアーキテクチャ

MQTT サブスクリプションを使ったエクスポート

このオプションでは AWS IoT Core を使って、AWS IoT Device Defender からデータを MQTT トピックへを送信し、MQTT トピックをサブスクライブすることでデータを利用します。次の図は、AWS IoT Device Defender からメトリクスを MQTT トピックに送信するリファレンスアーキテクチャを表しています。同じ MQTT トピックをサブスクライブする MQTT クライアント(例えば、 Amazon Elastic Container Service のコンテナ内)を実行します。AWS IoT Device Defender がデータをパブリッシュする毎に、MQTT クライアントはデータを受信して処理します。

AWS IoT Core MQTT Broker を使用した AWS IoT Device Defender メトリックエクスポートのアーキテクチャ

図 2: AWS IoT Core MQTT Broker を使用した AWS IoT Device Defender メトリックエクスポートのアーキテクチャ

ここからは、図 1 で確認した AWS IoT Device Defender からメトリクスをエクスポートするソリューションを構築していきます。

前提条件

  1. AWS IoT Core、AWS IoT Device Defender、Amazon Kinesis Data Firehose、および Amazon S3 上での実行権限がある AWS アカウント
  2. AWS Identity and Access management (IAM) で AWS IoT Core に割り当てるロールの作成権限
  3. AWS CloudShell へのアクセスと、Linux と AWS Command Line Interface (AWS CLI) の基本的な知識

手順

以下のステップでは、メトリクスエクスポート機能を使って、いくつかのクラウド側メトリクスと AWS IoT Device Defender のカスタムメトリクスを Amazon S3 にエクスポートするパイプラインを構築します。Basic Ingest のメカニズムを使用して、AWS IoT Device Defender のメトリクスを Kinesis Data Firehose 経由で Amazon S3 にエクスポートします。

初期設定
このステップでは IoT Core でモノを作成し、シミュレーターを使って、このモノのカスタムメトリクスを 5 分毎にパブリッシュします。初期設定と MQTT クライアントの実行には AWS CloudShell を使用します。

  1. AWS コンソールにログインし、CloudShell を開く
  2. 設定で利用するスクリプトとコードをダウンロードするために git リポジトリをクローンする
    $ git clone https://github.com/aws-samples/aws-iot-device-defender-metric-export.git
    
  3. ‘createThing.sh’ を実行して、AWS IoT Core に名前が ‘dd-export-test’ のモノを作成し、Amazon S3 に保存先バケットを作成します。
    $ cd aws-iot-device-defender-metric-export
    
    $ bash ./createResources.sh dd-export-test
    

AWS IoT Device Defender カスタムメトリクスの作成

次に、デバイスが観測したモバイルネットワークの電波強度 (RSSI) を収集および評価するためのカスタムメトリクスを作成します。

  1. AWS IoT Core に移動し、左側のメニューから セキュリティ検出メトリクス を選択し、作成をクリックします。
  2. カスタムメトリクスの作成画面で、以下の値を入力し、カスタムメトリクスの作成 (Create custom metric) をクリックします。
    • 名前 (Name) – mobilerssi
    • 表示名 (Display name) – Cellular Network Strength
    • タイプ (Type) – number

セルラーネットワークの信号強度 Device Defenderカスタムメトリックの作成

AWS IoT Device Defender セキュリティプロファイルの作成
次に、異常動作を定義するセキュリティプロファイルを作成します。AWS IoT Device Defender メトリクス、カスタムメトリクスディメンションを組み合わせることで、ユースケースに応じた適切な検出モデルを作成出来ます。以下の例では、クラウド側メトリクス(受信したメッセージとサイズ)とモバイルネットワークの電波強度カスタムメトリクスを利用します。メトリクスを効果的に組み合わせる方法の詳細については、ドキュメントのセキュリティのユースケースをご確認ください。

  1. AWS IoT Core で、左側のメニューをクリックし、セキュリティ検出セキュリティプロファイルに移動します。
  2. セキュリティプロファイルを作成をクリックし、ルールに基づいた異常検出プロファイルを作成を選択します。
  3. セキュリティプロファイルのプロパティを指定するのステップで、以下の値を入力し、次へをクリックします。
    • セキュリティプロファイル名 (Profile name) – Monitor_RSSI
    • ターゲット (Target) – ターゲットグループ、1 つまたは複数のグループを選択できます。この例では、dd-metric-export-group をターゲットにします。
  4. メトリクス動作の設定のステップで、次の操作を行います。
    • クラウド側のメトリクス下にある メッセージサイズを探して選択し、アラートを送信しない(リテンションメトリクス) オプションを選択します。
    • メトリクスの追加をクリックし、先ほどと同じ様に受信したメッセージCellular Network Strength メトリクスを繰り返し選択します。
    • 次へをクリックします。
  5. メトリクスをエクスポートするのステップで、メトリクスのエクスポート設定を以下のように設定し、次へをクリックします。
    • メトリクスをエクスポートする (Export Metrics): メトリクスのエクスポートを有効にするを選択します。
    • トピック (Topic): $aws/rules/dd_export_firehose/ddmetric/cellular
    • IAM ロール (IAM Role): 新しいロールの作成をクリックし、表示された手順に従います。
    • メトリクスの選択: 提供されたリストからメッセージサイズ受信したメッセージCellular Network Strengthを選択します。
  6. 通知の設定のステップでは SNS の構成は空白のまま次へをクリックします。
  7. 確認と作成のステップで構成を確認して作成をクリックします。

メトリクス動作の設定した内容は以下の様な画面になります。

メトリクスエクスポートを行う AWS IoT Device Defender セキュリティプロファイルの作成

AWS IoT Core ルールの作成
このセクションでは、AWS IoT Core ルールエンジンでルールを定義して、Basic Ingest のトピック $aws/rules/dd_export_firehose/ddmetric/cellular で受信したデータを、Kinesis Data Firehose のデータストリームに転送します。

  1. AWS IoT Core に移動し、左側のメニューで メッセージのルーティングルール を選択して、ルールの作成をクリックします。
  2. ルールのプロパティで、ルール名を dd_export_firehose と入力し、次へをクリックします。
  3. SQL ステートメントを設定のステップで、次の SQL ステートメントを指定し、次へをクリックします。
    SELECT * FROM 'ddmetric/#'
    
  4. ルールアクションをアタッチのステップの、ルールアクションパネルで、
    • アクション 1Kinesis Firehose stream を選択します。
    • Firehose ストリームを作成をクリックします。すると、新しいウィンドウで 配信ストリームを作成 ページが開きます。
      • ソースと送信先を選択パネルで
        • ソースとして Direct Put を選択します。
        • 送信先として、Amazon S3 を選択します。
      • 配信ストリーム名パネルで
        • 配信ストリーム名フィールドに dd-metric-export-stream と入力します。
      • 送信先の設定 パネルで
        • S3 バケットとして、<Account_id>.dd.metric.export S3 バケットを参照ボタンから探し選択します。
        • その他はすべてデフォルトのままにします。
      • 配信ストリームを作成をクリックし、配信ストリームの作成完了を待ちます。ステータスフィールドが作成中からアクティブに変わったことを確認します。
      • 前のウィンドウ (ルールアクションをアタッチ) に戻ります。
    • Kinesis Firehose ストリームのドロップダウンから、dd-metric-export-streamを選択します。ドロップダウンに新しく作成したストリームが表示されない場合は、ドロップダウンの横にある更新ボタンをクリックしてエントリを更新してください。
    • 区切り文字バッチモードはそのままにします。
    • IAM ロール: 新しいロールを作成をクリックし、表示された手順に従います。
    • 次へをクリックします。
    • 構成を確認し、作成をクリックします。

カスタムメトリクスをパブリッシュし、データ出力を確認する
次に、作成したパイプラインをテストするためにデバイスシミュレータを実行します。

  1. AWS CloudShell プロンプトに移動し、次のスクリプトを実行します。スクリプト内で MQTT クライアントが実行され、5 分ごとに AWS IoT Device Defender のカスタムメトリクスレポートとして、モバイルネットワーク RSSI がパブリッシュされます。
    $ bash ./publishMetric.sh
    
  2. スクリプトを 15 分以上実行させてください。(Kinesis Firehose はデータを 15 分間バッファリングします)
  3. Amazon S3 の <Account_id>.dd.metric.export バケットに移動し、エクスポートされたデータを確認してください。

クリーンアップ

実験後のコスト発生を避けるために、下記手順を実行:

  1. スクリプトを実行しているターミナルで Ctrl + C を押して、MQTT クライアントを停止します。
  2. 次のスクリプトを実行して、作成した AWS IoT Core のモノを削除します。
    $ bash ./cleanupResources.sh
    
  3. 作成した AWS IoT Device Defender セキュリティプロファイルを削除します。
  4. 作成した AWS IoT Device Defender カスタマーメトリクスを削除します。
  5. 作成した AWS IoT Core ルールを削除します。
  6. 作成した Kinesis Data Firehose 配信ストリームを削除します。
  7. 作成した Amazon S3 バケットを削除します。

まとめ

この投稿では、新しい AWS IoT Device Defender メトリクスエクスポート機能の使用方法を学びました。AWS IoT Device Defender からサービスまたは希望のストレージへメトリクスをエクスポートする方法を学び、エクスポートのコスト最適化に関する方法を学びました。メトリクスを複数の宛先にエクスポートする場合は、AWS IoT Core ルールエンジンのファンアウト機能も検討出来ます。

詳細については、AWS IoT Core サイトをご覧いただくか、コンソールにログインして利用を開始してみてください。ご意見やご質問をお待ちしています。

著者について

Reetesh Varshney

Reetesh Varshney

Reetesh は Amazon Web Services の IoT スペシャリストです。彼は業種を問わずお客様と協力し、IoT が可能にするビジネスチャンスと技術について支援しています。また、スマートコネクテッドプロダクト、コネクテッドビークル、スマートファクトリーの IoT プラットフォーム開発でもお客様を支援してきました。

Andre Sacaguti

Andre Sacaguti

Andre Sacaguti は、AWS IoT のシニアプロダクトマネージャーです。デバイスメーカー、自動車メーカー、そしてさまざまな業界のお客様が、IoT デバイスを監視および保護できるような製品やサービスの構築をエッジからクラウドに渡って注力しています。AWS 入社以前は、T-Mobile や Qualcomm で IoT 製品の構築やローンチを行っていました。

この記事は “How to use the new metric export capability of AWS IoT Device Defender” の日本語訳です。この記事はソリューションアーキテクトの 山岡 卓紀夫 が翻訳しました。