IoT Hub が受信したデータを確認するには
IoT Hub が受信したデータを確認する方法としては、以下のように様々な方法があります。
-
Device Explorer を使う
- クライアントツールとしてローカル PC にインストールして使用します(以下の機能をもっています)
- デバイスの登録
- デバイス ID ごとに IoT Hub が受信したメッセージのモニタリング
- Cloud 側からデバイス側へメッセージの送信
- デバイス上のメソッド呼び出し
- クライアントツールとしてローカル PC にインストールして使用します(以下の機能をもっています)
- サンプルプログラムを利用する
-
Service Bus Explorer を使う
- クライアントツールとしてローカル PC にインストールして使用します
よく使うのは1つ目に記載した「Device Explorer」ではないでしょうか。
Device Explorer の場合、デバイス ID ごとにメッセージを確認するため、メッセージの到達やメッセージの内容は確認できますが、IoT Hub のどのパーティションにデータが格納されているのか?までは確認することができません。IoT Hub は大量のデバイスから大量のデータを受信するため、性能試験等を行った際、どのパーティションにどれだけのデータが入っているか等を確認する必要がある場合があります。
これを可能にするのが3つ目の Service Bus Explorer です。
ちなみに、IoT Hub はデバイス ID をもとにパーティション分割されており、任意のパーティション分割は許可されていません。そのため、どのパーティションにどのデータが格納されているかは、自分で確認する必要があります。
Service Bus Explorer とは
詳細はこちらを確認いただきたいですが、ユーザーが Service Bus の名前空間に接続し、メッセージングエンティティを効率的に管理できるツールです。
IoT Hub では、messages/events 組み込みエンドポイントをバックエンドサービスに公開して、ハブで受信した D2C(Device to Cloud)メッセージを読み取ります。Service Bus Explorer は、この組み込みエンドポイントを読み取ることができます。
Service Bus Explorer を使ってみる
前提条件
Service Bus Explorer の動作確認を行うために、以下を事前に準備しておくこと。
- IoT Hub の作成
- IoT Hub へデータを送信するプログラムの準備
- 事前に IoT Edge をインストールする Linux VM を作成する(データ送信プログラムの環境なのでローカル PC でも良い)
- 今回は、こちら を参考に、Market Place から「Simulated Temperature Sensor」モジュールを IoT Edge 上のモジュールとして動作させる
Service Bus Explorer のダウンロード
https://github.com/paolosalvatori/ServiceBusExplorer/releases からダウンロードする。
現在だと、以下の「ServiceBusExplorer-4.1.112.zip」が最新版で良いと思います。
任意の場所で解凍すると以下のフォルダが展開されます。
「ServiceBusExplorer.exe」が本体となります。
使い方
IoT Hub の接続文字列をひかえておく。
接続文字列は、IoT Hub の「共通アクセスポリシー」→「iothubowner」→ 共有アクセスキーの「接続文字列-プライマリキー」をコピーする。
次に、Service Bus Explorer を起動する。
メニューバーの「Actions」→「Create IoT Hub Listner」をクリックする。
IoT Hub の接続文字列を入力する画面が表示されるので、先ほどコピーした接続文字列を貼り付け、「OK」をクリックする。
これで、IoT Hub の messages/events 組み込みエンドポイントを読み込む設定が完了したので、「Start」をクリックする。
事前に IoT Hub にデータを送信しておくこと。
IoT Hub が受信したデータを確認することができる。赤枠で囲った部分が、IoT Hub のパーティション情報。今回のデータは、「PartitionId=3」に格納されていることが分かります。
Service Bus Explorer の上段に「Listener」と「Events」の2つのタブがあります。「Events」タブをクリックすると、IoT Hub が受信したデータを確認できます。
ここでは、Events List に表示された「SequenceNumber」が「672」のものを確認しています。
すぐ下に Event Text で表示されているのは、IoT Hub が受信したデータです。
ちなみに、Device Explorer だと以下の図のように、IoT Hub が受信したデータをデバイス ID 単位で確認することができます。
IoT Hub のパーティション数は、以下のように Azure Portal 画面で設定可能です。
「IoT Hub」→「組み込みのエンドポイント」→「パーティション」を参照ください。
まとめ
Service Bus Explorer を使うと、IoT Hub のどのパーティションにどのデータが格納されているかを確認することができます。
これは、性能試験等で性能が出ないケースなどにおいて、調査するのに役立ちます。
たまたま IoT Hub の後続処理がシリアル処理になっている事案があって、その原因調査を行う際に、Service Bus Explorer を使いました。IoT Hub のパーティションの中身を確認できるので、1つのパーティションに固まってデータが格納されていると、後続処理はもちろんシリアルになりますよね。性能試験を行う際は、複数のデバイス ID を用いて試験を行うことをお勧めします。
Service Bus Explorer ぜひ使ってみてください。