チュートリアル: IoT Edge デバイスを監視する

適用対象:IoT Edge 1.4 チェックマーク IoT Edge 1.4

重要

IoT Edge 1.4 がサポートされているリリースです。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

Azure Monitor ブックを使用して、Azure IoT Edge のデプロイの正常性とパフォーマンスを監視します。

このチュートリアルでは、次の作業を行う方法について説明します。

  • IoT Edge デバイスによって共有されるメトリックと、メトリック コレクター モジュールでそれらがどのように処理されるかを理解します。
  • メトリック コレクター モジュールを IoT Edge デバイスにデプロイします。
  • デバイスから収集されたメトリックのキュレーションされた視覚化を表示します。

前提条件

シミュレートされた温度センサー モジュールがデプロイされている IoT Edge デバイス。 デバイスの準備ができていない場合は、「初めての IoT Edge モジュールを Linux 仮想デバイスにデプロイする」の手順に従って、仮想マシンを使用してデバイスを作成します。

IoT Edge メトリックについて

すべての IoT Edge デバイスは、 2 つのモジュール ("ランタイム モジュール") に依存しており、これらはデバイス上の他のすべてのモジュールのライフサイクルと通信を管理します。 これらのモジュールは、IoT Edge エージェントおよび IoT Edge ハブと呼ばれています。 これらのモジュールの詳細については、「Azure IoT Edge ランタイムとそのアーキテクチャの概要」を参照してください。

どちらのランタイム モジュールでもメトリックが作成されます。これらを使用すると、IoT Edge デバイスまたはその個々のモジュールがどのように実行しているかをリモートで監視できます。 IoT Edge エージェントでは、個々のモジュールとホスト デバイスの状態が報告されるため、モジュールが正常に実行されている期間や、デバイスで使用されている RAM の容量と CPU の割合などのメトリックが作成されます。 IoT Edge ハブからは、デバイス上の通信に関して報告されるため、送受信されたメッセージの総数や、ダイレクト メソッドの解決にかかる時間などのメトリックが作成されます。 使用できるメトリックの完全な一覧については、「組み込みのメトリックにアクセスする」を参照してください。

これらのメトリックは両方のモジュールによって自動的に公開されるため、これらのメトリックにアクセスして報告するための独自のソリューションを作成できます。 このプロセスを容易にするために、Microsoft では、カスタム ソリューションを持っていないか必要としないユーザーに対してこのプロセスを処理する azureiotedge-metrics-collector モジュール を提供しています。 このメトリック コレクター モジュールでは、2 つのランタイム モジュールと、監視する必要のあるその他のモジュールからメトリックが収集され、それらがデバイスから転送されます。

メトリック コレクター モジュールは、メトリックをクラウドに送信するために 2 つの方法のいずれかで動作します。 最初のオプションは、このチュートリアルで使用する方法ですが、メトリックを Log Analytics に直接送信します。 2 番目のオプションは、ネットワーク ポリシーで必要な場合にのみ推奨される方法ですが、IoT Hub を使用してメトリックを送信し、メトリック メッセージを Log Analytics に渡すルートを設定します。 どちらの方法でも、Log Analytics ワークスペースに到着したメトリックは、Azure Monitor ブックを通じて表示できます。

Log Analytics ワークスペースを作成する

Log Analytics ワークスペースは、メトリック データを収集するために必要であり、ユーザーがデバイスを監視するためのクエリ言語と Azure Monitor との統合を提供します。

  1. Azure portal にサインインします。

  2. [Log Analytics ワークスペース] を探して選択します。

  3. [作成] を選択して、新しいワークスペースを作成するためのプロンプトに従います。

  4. ワークスペースが作成されたら、 [リソースに移動] を選択します。

  5. メイン メニューの [設定][エージェント管理] を選択します。

  6. [ワークスペース ID][プライマリ キー] の値をコピーします。 この 2 つの値は、このワークスペースにメトリックを送信するようにメトリック コレクター モジュールを構成するために、このチュートリアルの後半で使用します。

IoT ハブのリソース ID を取得する

メトリック コレクター モジュールを構成するとき、IoT ハブの Azure Resource Manager リソース ID を指定します。 ここでその ID を取得します。

  1. Azure portal で、お使いの IoT ハブに移動します。

  2. 左側のメニューの [設定] で、 [プロパティ] を選択します。

  3. [リソース ID] の値をコピーします。 これは次の形式になります。/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Devices/IoTHubs/<iot_hub_name>

メトリック コレクター モジュールをデプロイする

監視するすべてのデバイスに、メトリック コレクター モジュールをデプロイします。 これは他のモジュールと同様にデバイス上で実行され、割り当てられたエンドポイントを監視して、収集したメトリックをクラウドに送信します。

コレクター モジュールをデプロイして構成するには、次の手順に従います。

  1. Azure portal にサインインし、お使いの IoT ハブに移動します。

  2. 左側のメニューの [デバイス管理] メニューで、[デバイス] を選択します。

  3. IoT Edge デバイスの一覧からターゲット デバイスのデバイス ID を選択して、[デバイスの詳細] ページを開きます。

  4. 上部のメニュー バージョンで、 [モジュールの設定] を選択し、3 つのステップからなるモジュールのデプロイ ページを開きます。

  5. ポータルからモジュールをデプロイする最初のステップは、デバイス上に存在すべきモジュールを宣言することです。 クイックスタートで作成したものと同じデバイスを使用する場合、SimulatedTemperatureSensor が既に一覧に表示されているはずです。 含まれていない場合は、ここで追加してください。

    1. [追加] を選択し、ドロップダウン メニューで [Marketplace モジュール] を選択します。

    2. SimulatedTemperatureSensor を検索して選択します。

  6. メトリック コレクター モジュールを追加して構成します。

    1. [追加] を選択し、ドロップダウン メニューで [Marketplace モジュール] を選択します。

    2. [IoT Edge Metrics Collector](IoT Edge メトリック コレクター) を検索して選択します。

    3. モジュールの一覧からメトリック コレクター モジュールを選択し、その構成の詳細ページを開きます。

    4. [環境変数] タブに移動します。

    5. 次の値を更新します。

      Name
      ResourceId 前のセクションで取得した IoT ハブのリソース ID。
      UploadTarget AzureMonitor
      LogAnalyticsWorkspaceId 前のセクションで取得した Log Analytics ワークスペースの ID。
      LogAnalyticsSharedKey 前のセクションで取得した Log Analytics のキー。
    6. OtherConfig 環境変数を削除します。これは、今後追加する可能性のある追加の構成オプションのプレースホルダーです。 このチュートリアルでは必要はありません。

    7. [更新] を選択して変更を保存します。

  7. [Next: Routes](次へ:ルート) を選択して、モジュールのデプロイの 2 番目のステップに進みます。

  8. ポータルでは、メトリック コレクターのルートが自動的に追加されます。 IoT Hub 経由でメトリックを送信するようにコレクター モジュールを構成した場合は、このルートを使用しますが、このチュートリアルでは Log Analytics にメトリックを直接送信するため、必要ありません。 FromMetricsCollectorToUpstream ルートを削除します。

  9. [確認と作成] を選択して、モジュールのデプロイの最終ステップに進みます。

  10. [作成] を選択してデプロイを終了します。

モジュールのデプロイが完了したら、[デバイスの詳細] ページに戻ります。そこに、 [デプロイで指定] として 4 つのモジュールが表示されます。 4 つのモジュールがすべて [デバイス別に報告] として表示されるまで、つまり、これら正常に開始され、状態が IoT Hub に報告されるようになるまで、しばらく時間がかかることがあります。 ページを最新の情報に更新して、最新の状態を表示します。

デバイスの正常性を監視する

デバイス監視ブックを表示する準備が整うまでに、最大で 15 分かかる場合があります。 メトリック コレクター モジュールをデプロイすると、Log Analytics へのメトリック メッセージの送信が開始され、そこでテーブル内に編成されます。 指定した IoT Hub リソース ID によって、取り込まれるメトリックが、所属先のハブにリンクされます。 その結果、キュレーションされた IoT Edge ブックでは、リソース ID を使用してメトリック テーブルに対してクエリを実行することで、メトリックを取得できます。

Azure Monitor には、IoT 用の 3 つの既定のブック テンプレートが用意されています。

  • フリート ビュー ブックには、複数の IoT リソースにわたるデバイスの正常性が表示されます。 このビューを使用すると、デバイスの正常性を判断するためのしきい値を構成し、デバイスごとの主要なメトリックの集計を表示できます。
  • デバイスの詳細ブックには、メッセージング、モジュール、ホストという 3 つのカテゴリの視覚化が用意されています。 メッセージング ビューでは、デバイスのメッセージ ルートが視覚化され、メッセージング システムの全体的な正常性が報告されます。 モジュール ビューでは、デバイス上の個々のモジュールがどのように実行されているかが表示されます。 ホスト ビューでは、ホスト コンポーネントのバージョン情報やリソースの使用など、ホスト デバイスに関する情報が表示されます。
  • アラート ブック ビューには、複数の IoT リソースにわたるデバイスのアラートが表示されます。

フリート ビューと正常性スナップショットのブックを探索する

フリート ビュー ブックには、すべてのデバイスが表示され、特定のデバイスを選択して、その正常性スナップショットを表示することができます。 ブックの視覚化を探索するには、次の手順に従います。

  1. Azure portal で IoT ハブ ページに戻ります。

  2. メイン メニューを下にスクロールして [監視] セクションを見つけ、 [Workbooks](ブック) を選択します。

    ブックを選択して Azure Monitor ブック ギャラリーを開く。

  3. フリート ビュー ブックを選択します。

  4. メトリック コレクター モジュールを実行しているデバイスが表示されます。 デバイスは、 [正常] または [異常] として表示されます。

  5. デバイス名を選択すると、デバイスの詳細なメトリックが表示されます。

  6. 任意の時間グラフで、X 軸の下にある矢印アイコンを使用するか、グラフをクリックしてカーソルをドラッグして時間の範囲を変更します。

    任意のグラフをクリックしてドラッグするか、矢印アイコンを使用して、時間範囲を変更します。

  7. 正常性スナップショット ブックを閉じます。 フリート ビュー ブックから [Workbooks](ブック) を選択して、ブック ギャラリーに戻ります。

デバイスの詳細ブックを探索する

デバイスの詳細ブックには、個々のデバイスのパフォーマンスの詳細が表示されます。 ブックの視覚化を探索するには、次の手順に従います。

  1. ブック ギャラリーで、 [IoT Edge device details](IoT Edge デバイスの詳細) ブックを選択します。

  2. デバイスの詳細ブックで最初に表示されるページは、 [メッセージング] ビューで [ルーティング] タブが選択された状態になっています。

    左側のテーブルには、エンドポイント別に整理されたデバイス上のルートが表示されます。 ここでのデバイスでは、 [upstream] エンドポイント (IoT Hub へのルーティングに使用される特殊な用語) によって、シミュレートされた温度センサー モジュールの [temperatureOutput] 出力からのメッセージが受信されています。

    右側のグラフでは、接続されているクライアントの数が時系列に記録されています。 グラフをクリックしてドラッグすると、時間の範囲を変更できます。

    メッセージング ビューを選択して、デバイス上の通信の状態を表示します。

  3. [グラフ] タブを選択して、ルートの別の視覚化を表示します。 グラフ ページでは、さまざまなエンドポイントをドラッグ アンド ドロップしてグラフを再配置できます。 この機能は、視覚化するルートが多数ある場合に役立ちます。

    グラフ ビューを選択して、デバイス ルートの対話型グラフを表示します。

  4. [正常性] タブでは、ドロップされたメッセージや切断されたクライアントなど、メッセージングに関する問題が報告されます。

  5. [モジュール] ビューを選択して、デバイスにデプロイされているすべてのモジュールの状態を表示します。 各モジュールを選択すると、使用している CPU とメモリの量の詳細を確認できます。

    モジュール ビューを選択して、デバイスにデプロイされている各モジュールの状態を表示します。

  6. [ホスト] ビューを選択すると、ホスト デバイスに関する情報 (オペレーティング システム、IoT Edge デーモンのバージョン、リソースの使用など) が表示されます。

モジュールのログを表示する

デバイスのメトリックを表示した後、さらに詳しい情報を取得し、個々のモジュールを検査することが必要な場合もあります。 IoT Edge では、ライブ モジュール ログ機能を使用したトラブルシューティング サポートが Azure portal に用意されています。

  1. デバイスの詳細ブックで、 [Troubleshoot live](ライブ トラブルシューティング) を選択します。

    デバイスの詳細ブックの右上にある [Troubleshoot live]\(ライブ トラブルシューティング\) ボタンを選択します。

  2. IoT Edge デバイスからの edgeAgent ログに対するトラブルシューティング ページが開きます。 デバイスの詳細ブックで特定の時間範囲を選択した場合、その設定はトラブルシューティング ページに渡されます。

  3. デバイスで実行されている他のモジュールのログに切り替えるには、ドロップダウン メニューを使用します。 モジュールを再起動するには、 [再起動] ボタンを使用します。

    ドロップダウン メニューを使用して、さまざまなモジュールのログを表示し、再起動ボタンを使用してモジュールを再起動します。

トラブルシューティング ページには、IoT Edge デバイスの詳細ページからアクセスすることもできます。 詳細については、「Azure portal から IoT Edge デバイスのトラブルシューティングを行う」を参照してください。

次のステップ

チュートリアルの残りの部分を続行するとき、メトリック コレクター モジュールをデバイス上に保持し、これらのブックに戻って、より複雑なモジュールとルーティングを追加すると情報がどのように変化するか確認します。

次のチュートリアルに進み、開発者環境を設定して、デバイスへのカスタム モジュールのデプロイを開始します。