IoT Platform 向け Simple Log Service では、デバイス通信のメッセージトレースを表示できます。TraceID または MessageId を使用して、IoT Platform を通過するメッセージの完全なパスをトレースできます。また、このトレースを使用して、失敗したノードに基づいて問題を迅速に分析し、特定することもできます。このトピックでは、メッセージトレースの表示方法について説明します。
操作手順
IoT Platform コンソールにログインします。
[概要] ページで、管理するインスタンスを見つけ、インスタンス ID またはインスタンス名をクリックします。
- 左側のナビゲーションウィンドウで、 を選択します。[IoT プラットフォームログ] タブで、トレースしたいメッセージの TraceID または MessageId を見つけます。
- [メッセージトレース] をクリックします。検索ボックスに TraceID または MessageId を入力します。
- 右側の検索
アイコンをクリックして、トレイルマップを表示します。- トレイルマップは、通信ノードのアイコンと接続線で構成されます。緑色は通信フローが成功したことを示し、赤色は失敗したことを示します。
- 通信ノードにカーソルを合わせると、通信時間、成功情報、または失敗の理由が表示されます。
例えば、家庭用サーモスタット製品からレポートされたデータに対して、次のようにデータ転送ルールが設定されているとします:データ処理用の SQL ステートメント:
SELECT items.temperature.value as temperature, items.humidity.value as humidity, deviceName() as deviceName, timestamp() as time FROM "/g***/TH_sensor/thing/event/property/post"このルールは、temperature、humidity、deviceName、time のデータを次のように転送します:
- データは Tablestore に挿入されます。プライマリキーは
${deviceName}に設定されています。 - データは [Default Consumer Group] AMQP サーバー側サブスクリプションのコンシューマーグループに公開されます。
- データは ApsaraDB RDS に挿入されます。データベーステーブルの time フィールドは自動増分プライマリキーとして設定されています。
- データは別の Topic
/g***/TH_sensor/user/updateに公開されます。
詳細については、「データ転送ルールの設定」をご参照ください。
例えば、デバイスがデータをレポートした後、メッセージトレースにはデータ転送操作に関する次の結果が表示されます:
- メッセージは、別の Topic ([republish]) への公開、Tablestore ([ots]) への挿入、または AMQP サーバー側サブスクリプションのコンシューマーグループへの公開時に正常に処理されます。
- または異常なプロダクト設定で ApsaraDB ([RDS]) にデータを挿入すると、メッセージ処理は失敗します。
よくある質問
メッセージが重複しているかどうかを判断する方法は? TraceID と MessageId が同じになることはありますか?
IoT Platform 上の各メッセージには、グローバルに一意の TraceID と MessageId があります。デバイスが同じ内容のデータをレポートした場合でも、各メッセージレポートは異なる TraceID と MessageId を生成します。したがって:
もし同じ TraceID または MessageId を持つ 2 つのメッセージを観測した場合、これは通常、表示または記録のエラーによるものです。IoT Platform は論理的に重複したメッセージを生成しません。
TraceID と MessageId を比較することで、問題がデバイスによる複数回のデータレポートに起因するのか、プラットフォームによる同じメッセージの繰り返しプッシュに起因するのかを診断するのに役立ちます。これらの ID の一意性が、主要な診断基準となります。
次のステップ
通信トレースで失敗したノードを見つけた場合は、失敗の理由に基づいて問題をトラブルシューティングし、修正します。トラブルシューティング方法の詳細については、「IoT プラットフォームログ」のエラーコードの説明をご参照ください。上記のトレイルマップの例に基づき、 ページに移動します。ruleName に対応する転送ルールを見つけ、失敗した転送操作を修正します: ApsaraDB RDS にデータを挿入する際、データベーステーブルの time フィールドからプライマリキー設定を削除します。
デバイスが再度データをレポートした後、メッセージトレースを表示すると、メッセージが正常に処理されたことがわかります。