ステータスを送信する

付属デバイスコネクターdevice-connector-intdashを使用してエッジデバイスのステータス情報(CPU、メモリ、ストレージ、ネットワークなど)を取得し、JSON文字列で送信するための設定例です。

../../_images/device-inventory-sample.svg

図 37 エッジデバイスのステータス情報を送信するための設定例

アップストリームの設定

以下のコマンドを実行して、 recoverable というIDを持つアップストリームを作成します。 指定しているのはIDのみのため、他の設定値はデフォルトのとおりになります。

$ intdash-agentctl config up --create '
    id: recoverable
  '

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

デバイスコネクターからのデータを受け取るためにデバイスコネクターIPCを追加します。以下のコマンドを実行してください。

$ intdash-agentctl config device-connector up --create '
    id: up-device-inventory
    data_name_prefix: v1/255/
    dest_ids:
      - recoverable
    format: iscp-v2-compat
    ipc:
      type: fifo
      path: /var/run/intdash/device-inventory.fifo
    launch:
      cmd: device-connector-intdash
      args:
      - --config
      - /etc/dc_conf/device_inventory.yml
      environment:
      - DC_PROCESS_SRC_CONF_COMMAND_INTERVAL=30
      - DC_PRINT_LOG_FILTER_CONF_TAG=device-inventory
      - DC_FILE_SINK_CONF_PATH=/var/run/intdash/device-inventory.fifo
'
  • launch で、device-connector-intdashを起動するように設定しています。

  • device-connector-intdashのパイプライン設定として、付属の /etc/dc_conf/device_inventory.yml を指定しています。 また、パイプライン設定で使用する環境変数を environment で与えています。

  • DC_PROCESS_SRC_CONF_COMMAND_INTERVAL はステータスの送信間隔(秒)です。30秒以上で指定することを推奨します。

  • device-connector-intdashから /var/run/intdash/device-inventory.fifo を介して得られたデータは、 v1/255/ というデータ名称プレフィックスを与えられて、 recoverable というIDを持つアップストリームに送信されます。

ストリーマーの起動

以上の設定ができたらストリーマーを起動します。

$ intdash-agentctl run

警告

このデバイスコネクターでは、dfやmmcliなどのコマンドによりステータス情報が取得され、送信されます。ただし、以下に該当する古いバージョンのディストリビューションでは、いくつかのコマンドのデータが送信されません。

ディストリビューション

情報を送信できないコマンド

Debian:9

mmcli、ip

Debian:10

mmcli

Ubuntu:18.04

mmcli

警告

以下条件に該当する場合、送信する情報が多くなりデータの取得に時間がかかることがあります。

条件

ipコマンドで送信するネットワークインターフェースが多い場合

Dockerを利用している

lsusbコマンドで送信するデバイス情報が多い場合

多数のUSBデバイスが接続されている

dfコマンドで送信するストレージ情報が多い場合

多数のストレージが接続されている

注釈

Docker環境で利用する場合、以下の点に注意してください。

  • mmcliの情報を取得するために /var/run/dbus のバインドマウントが必要です。

  • dfのマウントポイント / の情報は、Dockerのストレージドライバの情報となります。通常はホストの /var/lib/docker/overlay2 が存在するパーティションの情報となります。

  • ipで取得できる情報はコンテナからアクセスできるネットワークインターフェースの情報のみとなります。ホストの情報も取得したい場合は、コンテナ実行時に --net=host を指定してください。