ゼファーネットのロゴ

IoT デバイスの監視と可観測性に関する実践ガイド

日付:

IoT デバイスの監視と可観測性に関する実践ガイド

監視 IoT デバイスの信頼性、効率性、セキュリティを維持するには、可観測性が不可欠です。正しく実行すると、IoT システムのリアルタイムの概要が提供されるだけでなく、過去の問題のトラブルシューティングに必要なデータへのアクセスも確保されます。しかし、何千もの多様な IoT デバイスに直面すると、これらの目標を達成するには多くの課題が生じます。

監視すべきか、観察すべきか?

まず、「監視」と「可観測性」という言葉は、違いはあるものの同じ意味で使用されることが多いため、IoT の監視と可観測性の用語を修正しましょう。

より確立された歴史を持つ用語であるモニタリングから始めましょう。監視の核心は、システムの健全性とパフォーマンスに関する洞察を提供することです。

これは、関連する指標を収集して分析することから始まります。分析は通常、ダッシュボードを通じて表示されます。ただし、合理的な監視スタックは視覚的な表現を超えて、メトリクスをリアルタイムで評価し、異常や問題があればユーザーに警告する必要があります。

しかし、従来の監視アプローチには落とし穴があります。それは、何を探すべきかを知っておく必要があるということです。新しい問題が発生した場合、この方法ではうまくいかない場合があります。

ここで、いわゆる「未知の未知」を処理するのに役立つ可観測性が登場します。簡単に言うと、システムの内部動作に関する質問にその出力だけから答えることができる場合、システムは観察可能です。ソフトウェアの通常の出力には、ログ、メトリック、トレースが含まれます。

可観測性が高いシステムは、トラブルシューティングが容易であるだけでなく、より広範囲の問題を検出することもできます。これは、システムについてより詳細な洞察が得られるため、実際に何が起こっているのかについての質問に対する答えを得ることが容易になるためです。

可観測性は、システムに多数のデバイスやモジュールが関与する IoT のコンテキストでは特に重要です。トラブルにつながる可能性のあるすべての状態の組み合わせを予測しようとすることは、不可能ではないにしても、この規模では非現実的です。

重要な指標とモニタリングのアプローチ

追跡する価値のあるデータと、このタスクを支援するために設計された特定の手段を調べてみましょう。

データは取得できていますか?

モノのインターネットでは、モノよりもデータが重視されることが多いことは周知の事実です。そのため、デバイスのデータ送信を常に監視することが重要です。堅牢な IoT プラットフォームでは、メッセージの頻度や送信されるデータ量などの指標を注意深く監視する必要があります。

しかし、何千ものデバイスのトラフィックを手動で監視するのは明らかに賢明な行為ではありません。この場合、自動アラートの必要性は疑いの余地がありません。. 最低限、警告を受ける必要があるのは、デバイスがデータを送信していないにもかかわらず、データを送信することが期待されている場合です。

ただし、IoT デバイスは、インターネット接続が不安定な場所など、予測できない環境で動作することが多いことに注意してください。したがって、データ送信の短いギャップは、必ずしもデバイスに問題があることを示すわけではありません。

また、重要なデータが失われないように、デバイスまたは Edge Gateway にメッセージをバッファリングするのが一般的です。重要なのは、しきい値を敏感にしすぎないよう十分に注意する必要があるということです。そうしないと、ネットワーク内のあらゆる問題について警告を受けることになり、必然的に警告疲労が生じ、警告の可能性が失われます。

一般的なデバイスの健康情報

デバイスの健全性の監視には、さまざまな主要な指標の追跡が含まれます。 CPU、メモリ消費量、ネットワーク トラフィックを考えることができます。これらのメトリクスにアクセスできると、パフォーマンスの問題の特定、ソフトウェアのバグの検出、さらには 外部からの攻撃を明らかにする.

これらのメトリクスを公開する方法はたくさんあります。しかし、エンジニアリング コミュニティは現在、次の機能に魅了されています。 オープンテレメトリ.

同社の主なセールス ポイントの 1 つは、ベンダーに依存しないアプローチです。つまり、次から選択できます 多数の可観測性バックエンド 保管と次の分析に使用されます。これにより、あらゆる種類のツールがそれと連動するように作られるようになりました。

したがって、使用している言語やシステムに関係なく、カバーされます。これは、特にすべてのデバイスが独自のソフトウェアを実行している可能性がある IoT の世界では非常に便利です。

OpenTelemetry は、メトリクス、ログ、トレースという 3 つの主要なタイプの信号をサポートします。このセクションで説明するほとんどのケースでは、デバイスは現在のメモリ消費量など、いくつかの関連するメトリクスを公開するだけで済みます。

次に、これらのメトリクスをクラウドに転送して、視覚化したり、アラートを設定したりできるようにする必要があります。この道は、IoT デバイスからメトリクスを収集するのに役立つ OpenTelemetry Collector や Telegraf などのプロジェクトによって、IoT ユースケース向けにすでに舗装されています。

その他のドメイン固有の信号

データ送信とリソース使用率の一般的な特性とは別に、ドメイン固有の値を追跡する必要がある場合があります。これには、ログ、トレース、またはアプリケーション固有のコンテンツを含む単純なメッセージの送信が含まれる場合があります。

ログとトレースの両方について、OpenTelemetry エコシステムを再び利用できます。これにより、Grafana Loki/Tempo や Elastic Observability スタックなどの好みのバックエンドを使用して、余分な労力をかけずにログとトレースを分析できるようになります。一方、メッセージングは​​、あらゆる合理的な IoT プラットフォームの中核となる機能です。言い換えれば、これらのアプローチはほとんどのシナリオで簡単に実装できるはずです。

ログのシンプルさ

たとえば、自律型収穫機を考えてみましょう。そのアクティビティを追跡することもできます。これを行う簡単な方法は、アクティビティの開始時に追加のメタデータを含むログを送信することです。

アクティビティの終了時や他の関連イベントに対しても同じことを行うことができます。基本的に、各ログ レコードは、いくつかの必須プロパティを備えた単なる構造化イベントです。以下は、ハーベスターがドッキング シーケンスを開始するときに送信されるログの例です。

タイムスタンプや本文などの主要なフィールドとは別に、メッセージにはイベントをより詳細に説明する追加の属性が含まれる場合があります。これらの追加ビットは、バグを探すときに便利です。したがって、重要な情報をすべて含めるようにしてください。

トレースによる深い文脈上の洞察

もう少し詳細な洞察が必要な場合は、トレースを使用することもできます。トレースはシステムの 1 つの論理操作に対応し、そのスパンによって暗黙的に定義されます。スパンは、その操作の単一の作業単位を表します。これは、開始時間と終了時間、属性、およびオプションで親スパンによって定義されます。

親参照のおかげで、トレースは特定の操作とそのサブルーチンを記述する有向グラフを形成します。さらに、スパンには、特定の時点で発生したイベントを記述する複数のスパン イベントが含まれる場合があります。

トレースは通常、分散システムの監視に関連付けられていますが、IoT デバイスでトレースを使用して、現場で何が起こっているかの全体像を理解するのに役立てることもできます。自律型収穫機がどのようにしてドッキング ステーションに戻るのかに興味があるとします。

以下の図を参照してください。ドッキングは最上位のルート スパンに対応します。まず、ハーベスターはドッキング ステーションを見つける必要があるため、API を呼び出します。この操作は 1 つの子スパンに対応します。スパン イベントの例としては、収穫者が圃場を離れた時点が挙げられます。すべてのトレース器を組み合わせて使用​​すると、装置の動作の全体像がわかります。

シンプルなメッセージで基本に戻る

特定のシナリオでは、OpenTelemetry 信号を使用するよりも、単純な構造化メッセージを送信する方が実用的である場合があります。自律型収穫機の例に戻ると、おそらくその位置を追跡する必要があるでしょう。

リアルタイムで位置を視覚化したい場合、OpenTelemetry は現在、このシナリオに意味的に適合する信号を実際にはサポートしていません。最も近いのはイベント API でしょうが、これはまだ実験段階にあります (この記事の執筆時点では 1 年第 2024 四半期)。代わりに、次の JSON メッセージを送信することを検討してください。

理想的には、使用している IoT プラットフォームがそのようなメッセージを解析し、選択した適切なデータベースに取り込める必要があります。そこから、ニーズに応じてデータを自由に分析および視覚化できます。

シンプルさを示すために、Spotflow IoT プラットフォームを使用してこの例を再作成しました。位置と速度を含むメッセージをプラットフォームに定期的に送信するデバイスをセットアップします。次に、データ ストリームを組み込みの Grafana 出力シンクにルーティングしました。以上です!プラットフォームはすべてのメッセージを取得し、Grafana でクエリできる時系列データベースに入れます。

また、これは Grafana Geomap 視覚化の優れた使用例です。デバイスの位置を簡単にプロットできます。以下の画像を参照してください。Grafana を使用して、デバイスから受信したデータを視覚化しています。

主要な取り組み

以上です!これで、可観測性スタックをセットアップし、IoT デバイスの監視を開始する準備が整いました。この記事が IoT 可観測性の世界における出発点として機能することを願っています。次の重要なアイデアを覚えておいてください。

  • データ送信の監視: デバイスからのデータ送信を注意深く監視し、中断があればすぐに検出できるようにアラートを用意してください。
  • デバイスの健全性メトリクスを追跡する: スムーズな操作を保証するために、デバイスの健全性に関する関連メトリクスを表示します。
  • ログ、トレース、構造化メッセージを介してアプリケーション固有のデータを送信: ドメインとデバイスの動作を考慮し、将来のデバッグとリアルタイム監視に必要になる可能性のあるすべてのデータを送信します。
  • OpenTelemetry エコシステムを探索する: OpenTelemetry エコシステムは可観測性の標準となり、可観測性バックエンドに多くのオプションを提供し、さまざまなデバイス ランタイムを提供するため、IoT での OpenTelemetry エコシステムの使用を検討してください。
スポット画像

最新のインテリジェンス

スポット画像