旧intdash Edge Agentからの移行
本製品と 旧intdash Edge Agent は、操作や設定の方法が異なります。
これまで旧intdash Edge Agentを使用していて、本製品intdash Edge Agent 2に移行する場合は、以下をお読みください。
旧ソフトウェアとの主な違い
intdash Edge Agent 2が旧intdash Edge Agentと異なる点を説明します。 以下の記述は概要のみを説明するもので、すべての違いを網羅したものではありません。
使用するプロトコルの変更
旧intdash Edge Agent では、リアルタイムデータの送受信用のプロトコルとしてiSCP 1.0を使用していました。
intdash Edge Agent 2 では、iSCP 2.0を使用します。そのため、アップストリームとダウンストリームの設定方法が変更されています。 ただし、iSCP 2.0に対応したintdashサーバーはiSCP 1.0と2.0の間の相互変換機能を持っています。 iSCP 1.0と1SCP 2.0の間の互換仕様については、iSCP 2.0プロトコル仕様書を参照してください。
設定方法の変更
旧intdash Edge Agent では、設定の変更は設定ファイルを修正することで行いました。
intdash Edge Agent 2 では、設定の変更は intdash-agentctl configコマンド で行います。
ただし、 intdash-agentctl config-file show
コマンドを実行して設定をエクスポートし、ファイルとして編集することも可能です。詳細については、 設定の書き出し/読み込み を参照してください。
「再送」は「遅延アップロード」に
旧intdash Edge Agent では、RealtimeクライアントまたはBulkクライアントから送信を試みて正しく送信できなかった場合、そのデータはエッジコンピューター内に保持され、Resendクライアントから再び送信されていました。
この機能は「再送」と呼ばれ、この機能が有効なのはクライアントの設定が以下のようになっている場合でした:
mode
が1
(永続化する)、かつnoresend
がfalse
(再送を行う)
また、フィルター機能を使ってデータをリアルタイム送信の対象から除外することにより、リアルタイムでの送信をせずに再送処理に回すこともできました。
intdash Edge Agent 2 でも同様に、リアルタイム送信を試みて正しく送信できなかったデータは、エッジコンピューター内に保持され、再び送信されます。
この機能は「遅延アップロード」と呼ばれ、この機能が有効なのはアップストリームの設定が以下のようになっている場合です:
persist
がtrue
(永続化する)、かつrecover
がtrue
(遅延アップロードを行う)
また、デバイスコネクターで取得したデータの送信先として deferred
を指定した場合、このデータのリアルタイム送信は行われず、遅延アップロードで送信されます。
詳細については 遅延アップロード を参照してください。
旧intdash Edge Agentの再送用のデータと、intdash Edge Agent 2の遅延アップロード用のデータは形式が異なり、互換性がありません。
リアルタイム送信の「クライアント」は「ストリーマー」に
旧intdash Edge Agent では、intdashサーバーとの通信は「クライアント」が担っていました(送信を行うRealtimeクライアントと、受信を行うControlクライアント)。
intdash Edge Agent 2 では、リアルタイムAPIによる送信と受信は「ストリーマー」が担います。 なお、REST APIによる遅延アップロード(旧intdash Edge Agentの「再送」に相当)は、「デーモン」が担います。
ストリーマーによるアップストリームとダウンストリームについては、以下のような設定が可能です。 詳細については、 アップストリームによる送信 、 ダウンストリームによる受信 を参照してください。
アップストリームの設定の例
upstream:
- id: upstream1 # ストリームを区別するID
enabled: true # 有効/無効
recover: true # 送信できなかった場合に遅延アップロードするか
persist: true # サーバーに永続化するか
qos: unreliable # iSCPのQoS(Quality of Service)
flush_policy: interval # フラッシュするタイミング
flush_interval: 5 # フラッシュ間隔
ダウンストリームの設定の例
downstream:
- id: downstream1 # ストリームを区別するID
enabled: true # 有効/無効
dest_ids: # 受信したデータを渡す先のデバイスコネクターIPC
- down-hello
filters: # 受信対象とするデータの指定
- src_edge_uuid: 03ace3b1-d208-xxxx-xxxxxxexample
data_filters:
- type: string
name: v1/1/ab
FIFO用フォーマットの変更
旧intdash Edge Agent では、デバイスコネクターとintdash Edge Agentの間でデータを送受信する際、logger-msgという専用フォーマットを使用し、タイムスタンプをCLOCK_MONOTONIC_RAWで取得していました。
intdash Edge Agent 2 では、新しい専用フォーマットiscp-v2-compatを使用し、タイムスタンプをCLOCK_MONOTONICで取得します。
ただし、デバイスコネクターIPCに関する設定( アップストリーム用 、 ダウンストリーム用 )で format: logger-msg
のように指定すると、旧フォーマットlogger-msgを使用することが可能です(非推奨)。
RAWデータ保存の廃止
旧intdash Edge Agent では、デバイスコネクターから入力されたデータはすべてRAWデータとして保存されていました。
intdash Edge Agent 2 にはRAWデータを保存する機能はありません。
なお、RAWデータの保存と、リアルタイム送信できなかったデータをローカルに保存する機能は別の機能です。 intdash Edge Agent 2でも、リアルタイム送信できなかったデータはローカルに保存され、 遅延アップロード が行われます。
デバイスコネクターとの接続設定の変更
旧intdash Edge Agent では、デバイスコネクターを起動してデータを取得するため設定は、マネージャーの設定ファイルの logger
の項目で設定していました。
intdash Edge Agent 2 では、デバイスコネクターからデータを取得するため設定は、「デバイスコネクターIPC設定」(IPC = InterProcess Communication)で設定します。 デバイスコネクターIPCに関する設定の説明( アップストリーム用 、 ダウンストリーム用 )を参照してください。
付属デバイスコネクターの変更
旧intdash Edge Agent では、デバイスコネクターとして、intdash-edge-loggerが付属していました。
intdash Edge Agent2 では、 device-connector-intdash が付属します。
device-connector-intdashでは、外部デバイスからのデータを上述の新データフォーマット(iscp-v2-compat)に簡単に変換することができます。 また、アプトポッド製のデバイスコネクター作成用フレームワークである Device Connector Framework を採用しているため、データの取得、加工、書き出しの処理を柔軟に定義することができます。 独自の処理を行うための拡張開発も容易です。
Statusプラグインの廃止
旧intdash Edge Agent では、Statusプラグインを使ってエッジコンピューターのステータス情報を収集することができました。 このステータス情報をサーバーに送信することで、遠隔からエッジコンピューターのステータスを確認することができました。
intdash Edge Agent 2 にはStatusプラグインはありません。
代わりに、付属デバイスコネクターdevice-connector-intdashと付属設定ファイル /etc/dc_conf/device_inventory.yml
を使用することで、エッジコンピューターのステータス情報を収集することができます。詳細については ステータスを送信する を参照してください。
設定の移行方法
既存の旧intdash Edge Agentの設定をintdash Edge Agent 2に移行する方法を以下で説明します。 各設定の詳細については、本ドキュメントの各設定項目のページを参照してください。
接続先サーバーURLの設定
clients
フィールドが持つ以下のフィールドで設定していました。
リアルタイム送信用クライアント、再送用クライアント、受信用クライアントなど複数のクライアントを配列指定する必要があり、
各要素ごとに同一の設定値を書き込む必要がありました。
clients[].connection.host
clients[].connection.path
connection.server_url
にURL形式で記載します。
プロジェクトUUIDの設定
clients
フィールドが持つ clients[].project_uuid
フィールドで設定していました。
リアルタイム送信用クライアント、再送用クライアント、受信用クライアントなど複数のクライアントに同一のプロジェクトUUIDを書き込む必要がありました。
connection.project_uuid
で設定します。
送信元エッジ認証情報の設定
clients
フィールドが持つ以下のフィールドで設定していました。
リアルタイム送信用クライアント、再送用クライアント、受信用クライアントなど複数のクライアントに同一の設定値を書き込む必要がありました。
clients[].my_id
(エッジUUID)clients[].my_secret
(クライアントシークレット)clients[].my_token
(エッジトークン、APIトークン)
以下の項目で設定します。
connection.edge_uuid
(エッジUUID)connection.client_secret
(クライアントシークレット)
アップストリームの設定
clients
フィールドが持つ以下のフィールドを組み合わせて設定していました。
clients[].mode
clients[].unit_flush_cycle
clients[].noresend
clients[].store_flushtime
clients[].store_flushsize
clients[].store_cycle
upstream
で設定します。
永続化するか( persist
)、リアルタイム送信で到達しなかったデータを後回収するか( recover
)などが指定できます。
また、送信時のバッファ設定は flush_policy
で指定します。
ダウンストリームの設定
clients
フィールドが持つ以下のフィールドを組み合わせて設定していました。
clients[].ctlr_ids
clients[].ctlr_flts.channel
clients[].ctlr_flts.dtype
clients[].ctlr_flts.ids
downstream
で設定します。
どのエッジのどのデータを受信するかは、 filters
により指定します。
注釈
filters
は、iSCPプロトコルのダウンストリームフィルター仕様に則っています。
ダウンストリームフィルターの詳細については、iSCP 2.0プロトコル仕様書を参照してください。
また、現在は iSCP 1.0からiSCP 2.0への移行期のため、新旧プロトコル間での相互変換が運用されています。 iSCP 1.0と1SCP 2.0の間の互換仕様については、intdash API/SDKドキュメントの「iSCP 1.0とiSCP 2.0の互換仕様」を参照してください。
デバイスコネクターの設定
loggers
フィールドで設定していました。
デバイスコネクターとの間のFIFOのパスは、 loggers[].connections[].fifo_tx
や loggers[].connections[].fifo_rx
で設定していました。
device_connectors_upstream
または device_connectors_downstream
で設定します。
デバイスコネクターとの間のFIFOのパスは、 ipc.path
で指定します。
フィルターの設定
manager.filters
フィールドで設定していました。
filters_upstream
または filters_downstream
で設定します。
フィルター機能を使用することで、条件にマッチしたものだけをリアルタイム送信したり、後回収に回したりすることができます。
再送・後回収の設定
以下のフィールドを組み合わせて設定していました。
manager.required_space
clients[].resend_cycle
deferred_upload
で設定します。