アップストリームによる送信¶
intdashサーバーにリアルタイムデータを送信する経路(ストリーム)をアップストリームと呼びます。 アップストリームによる送信を行うには以下の準備が必要です。 本章ではこれらについて説明します。 接続先サーバーと認証情報 は設定済みとします。
アップストリームの設定を作成する
デバイスコネクターの設定を作成する
(必要な場合のみ)フィルターを設定する(フィルターを使用すると、条件に一致したデータポイントの行先のアップストリームを変更することができます)
以上の設定を行ったうえで intdash-agentctl run
コマンドを実行すると、ストリーマーが起動され、サーバーへのリアルタイム送信が開始されます。
ストリーマーの起動から終了までの一連の時系列データが1つの計測となります。
送信中に通信が切断された場合や帯域が不十分だった場合、送信できなかったデータはローカルストレージに蓄積され、通信が回復したときにREST APIで送信されます。これを遅延アップロードと呼びます。
アップストリーム¶
intdash Edge Agent 2では、設定の異なる複数のアップストリームを設定し、同時に使用することができます。 センサーデバイスからデバイスコネクターを使って取得されたデータは、指定されたアップストリームを使ってサーバーに送信されます。
各アップストリームについては、通信が切断された場合に遅延アップロードをするか、信頼性のある接続を使用するか、サーバーでのデータ永続化するか、などの設定が可能です。
アップストリームの設定はIDにより管理されます。 デバイスコネクターやフィルター設定において、行先のストリームを指定する際には、このIDで指定します。
アップストリームを作成するには以下のコマンドを実行します。
$ intdash-agentctl config upstream --create <config_in_yaml_format>
例:
$ intdash-agentctl config upstream --create '
id: recoverable
enabled: true
recover: true
persist: true
qos: unreliable
flush_policy: interval
flush_interval: 5
'
作成済みのアップストリームの設定を変更するには、IDと、変更したい設定を与えます。
$ intdash-agentctl config upstream --modify <id> <config_in_yaml_format>
設定できるパラメーターについては、以下を参照してください。
キー |
型 |
説明 |
---|---|---|
id |
string |
アップストリームを識別するための文字列。 |
enabled |
bool |
アップストリームの有効( |
recover |
bool |
送信ができなかった場合の遅延アップロードの有効( |
persist |
bool |
サーバーでのデータ永続化の有効( |
qos |
string |
|
flush_policy |
string |
|
flush_interval |
string |
リアルタイム送信をフラッシュする間隔(ミリ秒)。flush_policyがintervalの場合のみ使用されます。 |
注釈
アップストリーム設定の一覧表示、削除などのコマンドについては、 intdash-agentctl config upstream/downstream を参照してください。
デバイスコネクター¶
intdash Edge Agent 2では、複数のデバイスコネクターを設定し、同時に使用することができます。 センサーデバイスからデバイスコネクターを使って取得されたデータは、指定されたアップストリームを使ってサーバーに送信されます。
各デバイスコネクター設定では、intdash Edge Agent 2との通信に使用するFIFOのパス、そのデバイスコネクターから得られたデータの行先のアップストリーム、データ名称などを設定します。 デバイスコネクターの設定はIDにより管理されます。
アップストリーム用デバイスコネクターの設定を作成するには以下のコマンドを実行します。
$ intdash-agentctl config device-connector upstream --create <config_in_yaml_format>
例:
$ intdash-agentctl config device-connector upstream --create '
id: up
data_name_prefix: v1/1
dest_ids:
- recoverable
format: iscp-v2-compat
ipc:
type: fifo
path: /var/run/intdash/uplink-hello1.fifo
launch:
cmd: device-connector-intdash
args:
- --config
- /home/agent-volume-a/dc-hello-world-1.yaml
'
作成済みのデバイスコネクターの設定を変更するには、IDと、変更したい設定を与えます。
$ intdash-agentctl config device-connector upstream --modify <id> <config_in_yaml_format>
config_in_yaml_format
で設定できるパラメーターは以下のとおりです。
キー |
型 |
説明 |
---|---|---|
id |
string |
デバイスコネクター設定の識別子 |
enabled |
bool |
デバイスコネクター設定の有効( |
data_name_prefix |
string |
iSCPのデータ名称のプリフィックスとして使用する文字列。受信側でiSCP v1を使用する場合は、決められたルールに沿って |
dest_ids |
[string] |
データは、ここで指定したIDのアップストリームを使ってサーバーに送られます。複数のIDを指定した場合、データポイントは複製され、それぞれのアップストリームからサーバーに送られます。 ただし、フィルターを設定すると、行先のアップストリームを変更することができます。 フィルター(必要な場合のみ) を参照してください。 |
format |
string |
デバイスコネクターが送信するデータのフォーマット
|
ipc.type |
string |
intdash Edge Agent 2とデバイスコネクターのデータ通信方法(現在 |
ipc.path |
string |
intdash Edge Agent 2がデバイスコネクターからデータを受信するFIFOのパス |
launch.cmd |
string |
intdash Edge Agent 2が起動したらそれに連動してデバイスコネクターも起動させたい場合は、デバイスコネクターの実行ファイルのパスを指定します。付属デバイスコネクターを使用する場合は、 この設定を使ってデバイスコネクターを起動した場合、intdash Edge Agent 2を終了すると、デバイスコネクターも終了します。 |
launch.args |
[string] |
デバイスコネクター起動時の引数。付属デバイスコネクターを使用するために - --config
- <path-to-pipeline-configuration.yaml>
|
launch.environment |
[string] |
デバイスコネクター起動時に追加する環境変数( |
重要
付属デバイスコネクターを使用する場合は、センサーデバイスからデータを取得し、所定のフォーマットに従ってFIFOにデータを書き込むまでの流れを定義したパイプライン設定ファイルが必要です。
パイプライン設定ファイルについては、 付属デバイスコネクターの使用 を参照してください。
注釈
デバイスコネクター設定の一覧表示、削除などのコマンドについては、 intdash-agentctl config device-connector を参照してください。
遅延アップロード用の行先(deferred)¶
「 persist: true
」かつ「 recover: true
」のアップストリームでは、リアルタイム送信ができなかった場合は遅延アップロードが行われます。しかし、リアルタイム送信を試みることなく最初から遅延アップロードしたい場合は、疑似的な行先ストリームとして deferred
を指定します。
deferred
は設定のための名称で、実際にはdeferredというストリームがintdash Edge Agent 2とサーバーとの間に作成されるわけではありません。
注釈
deferred
というストリームIDは予約されており、ユーザーが作成するストリームにこの名前を付けることはできません。
また、 intdash-agentctl config device-connector upstream
で deferred
の設定を変更したり削除したりすることはできません。
遅延アップロードの優先度や、遅延アップロード用のデータに使用するストレージに関しては、 遅延アップロード を参照してください。
フィルター(必要な場合のみ)¶
どのアップストリームを使ってサーバーにデータを送信するか(行先のアップストリーム)はデバイスコネクターの設定で指定しましたが、デバイスコネクターとアップストリームの間にフィルターを挟むことにより、データの行先を他のストリームに変更することができます。
フィルターには条件を設定します。条件に一致するデータだけを別のアップストリームに送ることができます。これにより、一部のデータだけをリアルタイム送信し、その他のデータはリアルタイム送信せずに遅延アップロードするといった設定が可能です。
フィルターの設定方法については、 フィルタリング/サンプリング を参照してください。
注釈
デバイスコネクターの設定やフィルターの設定では、存在しないストリームIDを指定することができます。
最終的に、存在しないIDを行先としているデータポイントは破棄されるため、存在しないストリームIDを一時的な行先として使用すると便利な場合があります。
以下の例では、デバイスコネクターの設定の dest_ids
において、存在しないアップストリーム stream_x
を行先として指定しています。そのうえで、フィルタリングの段階で、フィルター条件に一致したデータポイントの行先を変更しています。
フィルタリングの段階を完了してもなお stream_x
を行先としているデータポイントは、破棄されます。
送信の開始/終了¶
アップストリームの設定とデバイスコネクターの設定を行ったうえで、 intdash-agentctl run
を実行すると、intdashサーバーへの接続が行われます。
この状態で、デバイスコネクターからFIFOにデータポイントを書き込むことで、そのデータポイントは、intdash Edge Agent 2からintdashサーバーに送信されます。
リアルタイムデータの送受信を終了する場合は、 intdash-agentctl run
を実行したターミナルでCtrl+Cを押してください。
「 recover: true
」のアップストリームにおいてデータの欠損が発生した場合や、行先ストリームとして deferred
が指定されていた場合は、遅延アップロードが行われます。
リアルタイムデータの送受信を終了しても、intdash-agentdが起動している間は、遅延アップロードが継続されます。
基準時刻について¶
intdashにおいて、基準時刻とは、計測を開始した時刻を指します。 intdash Edge Agent 2が送信する基準時刻には以下の2つがあります。
EdgeRTC による基準時刻
intdash Edge Agent 2を実行しているシステムの時計による基準時刻です。計測開始時は必ずEdgeRTCで基準時刻が作成されます。 その後、基準時刻は一定間隔でサーバーに送信されます。
NTPによる基準時刻
NTPサーバーから取得した時計による基準時刻です。NTPサーバーとの通信ができたらNTP基準時刻が作成されます。 その後、基準時刻は一定間隔でサーバーに送信されます。