intdash Edge Agent 2とは

intdash Edge Agent 2は、intdashサーバーとの間で時系列データの送受信を行うエージェントソフトウェアです。 エッジデバイス(Linux PC)にインストールして使用します。

intdash Edge Agent 2を使って時系列データをintdashサーバーに送ることで、intdashサーバーにそのデータを「計測(measurement)」として保存することができます。

intdash Edge Agent 2でできること

intdash Edge Agent 2は以下を行います。

  • iSCP (intdash Stream Control Protocol)のストリームメッセージを使って、時系列データをサーバーにストリーミング送信する、およびサーバーからストリーミング受信する(intdashサーバーのリアルタイムAPIを使った送受信)

  • サーバーにデータをストリーミング送信する前に、データをフィルタリングまたはサンプリングする

  • ネットワークの切断により送信できなかった時系列データを、自動的に後から送信する(intdashサーバーのREST APIを使った遅延アップロード)

  • iSCP (intdash Stream Control Protocol)のエンドツーエンド(end to end、E2E)コールを使って、エッジ同士でコミュニケーションする

重要

intdash Edge Agent 2は、従来提供していた旧intdash Edge Agentを使いやすくリニューアルした新しいプロダクトです。 旧intdash Edge Agentとは操作や設定の方法が異なり、設定ファイルのフォーマットに互換性がない点にご注意ください。

旧intdash Edge Agentからintdash Edge Agent 2に移行する場合は、 旧intdash Edge Agentからの移行 を参照してください。

intdash Edge Agent 2の構成

intdash Edge Agent 2の本体は、ストリーミング送受信を行うストリーマー(intdash-agent-streamer)と、遅延アップロードやローカルでの時系列データの管理を行うデーモン(intdash-agentd)、エンドツーエンド通信を行うE2Eコーラー(intdash-agent-caller)です。

ユーザーは専用コマンド( intdash-agentctl )を使ってこれらを操作します。

../_images/intdash-edge-agent.svg

図 1 intdash Edge Agent 2と外部デバイス、intdashサーバー

ストリーマー、デーモン、E2Eコーラー、コマンドの機能はそれぞれ以下のとおりです。

ストリーマー(intdash-agent-streamer)

ストリーマー(intdash-agent-streamer)は、intdashサーバーとの間で、リアルタイムAPI(iSCP)を使って時系列データのストリーミング送信または受信を行うプログラムです。 ストリーマーの起動から終了までの時系列データが、intdashの1つの計測として扱われます。 リアルタイムに送信できなかった時系列データはintdash-agentdに渡され、遅延アップロードされます。

また、ストリーマーでは、時系列データに対するフィルタリング/サンプリング処理も行うことができます。

ストリーマーは intdash-agentctl run コマンドによって起動されます。

注釈

intdashにおいて、リアルタイムAPIを使ってエッジからサーバーに時系列データを送信する経路を「アップストリーム」と呼び、逆に、サーバーからエッジにデータを送信する経路を「ダウンストリーム」と呼びます。 単に「ストリーム」と呼んだ場合は、アップストリームまたはダウンストリーム双方のことを指します。

デーモン(intdash-agentd)

intdash-agentdは、遅延アップロード、設定の管理、ローカルでの時系列データの管理を行います。

  • ネットワークの切断や帯域不足によりストリーマーがサーバーに送信できなかった時系列データは、後からintdash-agentdによりアップロードされます(遅延アップロード)。

  • ユーザーがintdash-agentctlコマンドを使ってintdash Edge Agent 2の設定を変更すると、その設定はintdash-agentdによりファイルシステム上に保存されます。

  • intdash Edge Agent 2における時系列データの管理は、intdsah-agentdによって行われます。

インストールされた直後の設定では、エッジデバイスが起動するとintdash-agentdは自動的に起動されます。

E2Eコーラー(intdash-agent-caller)

intdashでの時系列データの送受信にはiSCPコネクション上のストリームが使用されますが、これとは別にiSCPコネクション上でエッジからエッジへのエンドツーエンド通信を行うための方法としてエンドツーエンドコール(E2Eコール)がありあす。

intdash-agent-callerは、このエンドツーエンド通信を行うためのプログラムです。

E2Eコーラーはエッジデバイス上でgRPCサーバーとして振る舞います。 エンドツーエンドコールの送信側エッジにおいては、エッジデバイス上で起動しているプロセスが、E2Eコーラーに対してリモートプロシージャコールを行うことでエンドツーエンドコールを送信することができます。 一方、受信エッジ側では、同様にE2Eコーラーに対するリモートプロシージャコールによってコールを受信することができます。

詳細については エンドツーエンド通信 を参照してください。 また、E2Eコーラーのリモートプロシージャコールで使用するgRPCインターフェイスについては、 Agent E2E Call API を参照してください。

E2Eコーラーもストリーマーと同様に intdash-agentctl run コマンドによって起動されます。

コマンド(intdash-agentctl)

intdash-agentctlは、前述のストリーマーやデーモン、E2Eコーラーを操作するためのコマンドです。

以下の構文で使用します。

intdash-agentctl <command> [<command_options>] [<arguments>...]

例えば、 intdash-agentctl config connection --get を実行すると、intdash-agentdが管理しているconnectionの設定値が返されます。

また、 intdash-agentctl run を実行すると、現在の設定に従ってストリーマーおよびE2Eコーラーが起動されます。

詳細については、 intdash-agentctlコマンド を参照してください。

デバイスコネクター

外部デバイス(データを生成するセンサー、または、制御信号を受けて動作するアクチューエーターなど)との間でデータをやり取りするには、外部デバイスとintdash Edge Agent 2の間を仲介するソフトウェアが必要です。 このソフトウェアを「デバイスコネクター」と呼びます。

デバイスコネクターは、intdash Edge Agent 2と同じエッジデバイスにインストールして使用します。 デバイスコネクターとintdash Edge Agent 2の間のデータの受け渡しには、Agentにより作成されるFIFO(名前付きパイプ)を使います。