1. はじめに

本ドキュメントでは、intdash Edge Agent(以降、Agentと呼びます)の使用方法を解説します。

重要

  • このドキュメントに記載されている仕様は予告なく変更される場合があります。このドキュメントは情報提供を目的としたものであり、仕様を保証するものではありません。

  • 説明で使用している画面は一例です。ご使用の環境やアプリケーションのバージョンによって、表示や手順が一部異なる場合があります。

注釈

このドキュメントに記載されている会社名、サービス名、製品名等は、一般に、各社の登録商標または商標です。本文および図表中には、「™」、「®」は明記していません。

1.1. Agentとは

Agentとは、intdashサーバーとの間でデータの送受信を行うエージェントソフトウェアです。

Agentは、高頻度に発生する時系列データを、低遅延でintdashサーバーへストリーミング送信することができます。 ネットワーク回線の切断などの障害により送信できなかったデータは、自動的に再送信します。これにより、データはintdashサーバーに完全に回収されます。

1.2. 主要機能

  • 時系列データのストリーミング

  • 伝送欠損データの自動的な再送信

  • 時系列データのフィルタリングとサンプリング

  • 取得した時系列データをダンプファイルとして保存

1.3. 動作要件

  • 対応プラットフォーム

    • AMD64アーキテクチャー上のLinux

    • Raspberry Pi上のRaspbian

    • NVIDIA Jetson上のNVIDIA L4T

  • 最低ハードウェア要件

    • Intel AtomプロセッサーE3815、1.46GHz相当以上

  • 推奨ハードウェア要件

    • マルチコアCPU

    • 2GB以上のメモリー

    • SSD

重要

データ量が多く、CPUの負荷が高くなりすぎると、データが欠損することがあります。

欠損なく処理可能なデータ量の目安は以下の通りです。 (以下の値は、処理負荷の小さなデバイスコネクターを使った場合のおおよその目安です。デバイスコネクターの処理の負荷によって限界性能は増減します。)

  • VTC 1910-S (Intel Atom E3815 1.46GHz)使用時

    • 小さなデータを高頻度で送信するケース: 8B(バイト)のユニットを、24000ユニット/秒程度

    • 大きなデータを低頻度で送信するケース: 0.98MBのユニットを、10ユニット/秒程度

  • Raspberry Pi 4 Model B使用時

    • 小さなデータを高頻度で送信するケース: 8B(バイト)のユニットを、100000ユニット/秒程度

    • 大きなデータを低頻度で送信するケース: 0.98MBのユニットを、80ユニット/秒程度

CPUに高い負荷がかかることが予想される場合は、事前にテスト計測を行うことをお勧めします。 テスト計測を行ったあと、エッジ上で以下のコマンドを実行して、syslog内のメッセージを確認してください。

$ cat /var/log/syslog | grep -e"ring is full" -e "data buffer is overflow" | grep -v PacketSender

syslogの中に、 ring is full または data buffer is overflow というメッセージがある場合(ただしPacketSenderに関するメッセージは除外)、デバイスコネクターとエージェントの間でデータの取りこぼしが発生しています。

1.4. システム構成

Agentは、デバイスコネクター、マネージャー、クライアントなどのソフトウェアモジュールから構成されます。

  • デバイスコネクターは、デバイスからデータを受け取ります。

  • マネージャーは、フィルタリングやサンプリングなどの各種処理を行います。

  • クライアントは、時系列データをintdashサーバーに送信します。

../_images/04_system.png

1.4.1. デバイスコネクター

デバイスコネクターは、各種デバイスとAgentを接続するためのソフトウェアです。

デフォルトのデバイスコネクター intdash-edge-logger と、これを使用するための6種の設定がAgentと同時にインストールされます。

  • v4lh264

  • gstreamer_h264

  • mjpeg

  • nmea

  • socketcan

  • canopen

デバイスコネクターを使用するためには、設定が必要です。上記のデバイスコネクターを使用するための設定方法については、 プリインストールされたデバイスコネクターを使用するための設定 を参照してください。

ユーザーは、新たにデバイスコネクターを用意することで、 intdash-edge-logger が対応していないデバイスも接続することができます。 intdash-edge-logger 以外のデバイスコネクターを追加する方法については、 独自のデバイスコネクターを追加する を参照してください。

注釈

設定ファイル内で「logger」という言葉が使用されることがありますが、「logger」はデバイスコネクターを指します。

1.4.2. プラグイン

プラグインは、デバイスコネクターとAgentのインターフェイスとなる内部ソフトウェアモジュールです。以下の2種類があります。

FIFOプラグイン

FIFO(名前付きパイプ)経由で、Agentとデバイスコネクターとの間でデータを送受信します。

Statusプラグイン

デバイスコネクターとは接続せず、ステータス情報を収集します。

注釈

  • プラグインは設定ファイルの loggers[].details.plugin で指定します。詳細については デバイスコネクターに関する設定 を参照してください。

  • アプトポッドが提供するデバイスコネクター intdash-edge-logger は、FIFOプラグインを使用しません。そのため、 intdash-edge-logger を使う場合は、設定ファイルに plugin の記載は不要です。

1.4.3. マネージャー

マネージャーは、Agentの各種処理の中枢を担うソフトウェアモジュールです。他のモジュールの起動と停止の管理や、デバイスコネクターから集めたデータの集約、フィルタリングやサンプリングなどの処理、RAWデータの書き出しなどを行います。

1.4.4. クライアント

Agentにおけるクライアントは、Agentとintdashサーバーとの間の通信を担うソフトウェアモジュールです。intdashのRealtime APIを使用したリアルタイム送信や、REST APIを利用した高効率形式での送信、伝送欠損の再送などの機能を担います。

Realtimeクライアント

intdashのRealtime API(WebSocket)を使用してリアルタイムにデータを送信します。

Bulkクライアント

intdashのRealtime API(WebSocket)を使用して数秒単位の一定周期でデータを一括送信します。

Resendクライアント

RealtimeクライアントやBulkクライアントが送信できなかったデータを、一定周期で再送します。intdashサーバーとの通信には、Realtime API(WebSocket)、REST APIどちらも使用することができます。

Controlクライアント

intdashのRealtime API(WebSocket)を使用してリアルタイムにデータを受信します。