旧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クライアントから再び送信されていました。

この機能は「再送」と呼ばれ、この機能が有効なのはクライアントの設定が以下のようになっている場合でした:

  • mode1 (永続化する)、かつ noresendfalse (再送を行う)

また、フィルター機能を使ってデータをリアルタイム送信の対象から除外することにより、リアルタイムでの送信をせずに再送処理に回すこともできました。

intdash Edge Agent 2 でも同様に、リアルタイム送信を試みて正しく送信できなかったデータは、エッジコンピューター内に保持され、再び送信されます。

この機能は「遅延アップロード」と呼ばれ、この機能が有効なのはアップストリームの設定が以下のようになっている場合です:

  • persisttrue (永続化する)、かつ recovertrue (遅延アップロードを行う)

また、デバイスコネクターで取得したデータの送信先として 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

プロジェクトUUIDの設定

clients フィールドが持つ clients[].project_uuid フィールドで設定していました。 リアルタイム送信用クライアント、再送用クライアント、受信用クライアントなど複数のクライアントに同一のプロジェクトUUIDを書き込む必要がありました。

送信元エッジ認証情報の設定

clients フィールドが持つ以下のフィールドで設定していました。 リアルタイム送信用クライアント、再送用クライアント、受信用クライアントなど複数のクライアントに同一の設定値を書き込む必要がありました。

  • clients[].my_id (エッジUUID)

  • clients[].my_secret (クライアントシークレット)

  • clients[].my_token (エッジトークン、APIトークン)

アップストリームの設定

clients フィールドが持つ以下のフィールドを組み合わせて設定していました。

  • clients[].mode

  • clients[].unit_flush_cycle

  • clients[].noresend

  • clients[].store_flushtime

  • clients[].store_flushsize

  • clients[].store_cycle

ダウンストリームの設定

clients フィールドが持つ以下のフィールドを組み合わせて設定していました。

  • clients[].ctlr_ids

  • clients[].ctlr_flts.channel

  • clients[].ctlr_flts.dtype

  • clients[].ctlr_flts.ids

デバイスコネクターの設定

loggers フィールドで設定していました。 デバイスコネクターとの間のFIFOのパスは、 loggers[].connections[].fifo_txloggers[].connections[].fifo_rx で設定していました。

フィルターの設定

manager.filters フィールドで設定していました。

再送・後回収の設定

以下のフィールドを組み合わせて設定していました。

  • manager.required_space

  • clients[].resend_cycle