EDM エージェントのセットアップ(NEC AI Accelerator 編)

NEC AI Accelerator には以下のコンポーネントが出荷時にプリインストールされています。

  • IoT Connectivity Engine Core (ICE Core)
  • EDM コンポーネント

上記コンポーネントの設定を行うことで CONNEXIVE Edge Device Management、エッジ・デバイス管理サービスへの接続が可能です。

はじめに

エッジ認証情報の確認

  1. Nebula(NEC モバイルバックエンド基盤)Developer Console からテナント情報を取得するため、Web UI にアクセスします。 ※通常、http://<マネージャーサーバー IP アドレス>:8080/console がアクセス先 URL となります。
  2. メールアドレス、パスワードを入力し、ログインします。
  3. 画面上部の「テナント」メニューから「NrFlowMng」を選択します。 ※テナント名を「NrFlowMng」以外で指定して構築している場合、指定したテナント名を選択します
  4. アプリケーション一覧に表示される「名前」列のリンクを選択します。
  5. 以下の情報を控えてください(後続の設定手順で使用します)。 ・テナント ID ・アプリケーション ID ・アプリケーションキー

ネットワーク設定の確認

以下の通信が許可されているか確認します。 ※存在しなければ、許可設定を iptables に対して実施します。

  • ループバックアドレスへの通信許可
    • 初期状態では -A INPUT -i lo -j ACCEPT がないため、ループバックを経由する EDM Agent プロセス間の通信が失敗し、Agent が正常起動しません
  • EDM Manager へのポート 80, 443, 1883 の通信許可
    • SSL 通信で EDM Manager と接続する場合はポート 443, 8883 の通信許可が必要です

確認手順は以下の通りです。

$ sudo cat /etc/iptables/rules.v4

ICE Core の接続設定

cloud_config.json の設定

  • {ICE Core 接続先} には次のいずれかの値を設定します。
  • {ユーザー名}{パスワード} はマネージャー側に設定された値を設定します。
# cd /opt/nec/pf/ice/core/conf/
# sudo cp -p cloud_config.json cloud_config.json.backup
# vi cloud_config.json
{
    "default": {
        "alias": ["app", "adm"],
        "type": "mqtt",
        "compatible_mode": "ice-v1",
        "config": {
            "url": "mqtt://{ICE Core 接続先}:1883",
            "timeout": 30000,
            "options": {
                "username": "{ユーザ名}",
                "password": "{パスワード}"
            }
        }
    }
}

※マネージャー側の設定により設定値は変更が必要です。設定パターンは ICE Core の接続設定例 を参照ください。

core_config.json の設定

エッジIDは対象機器を一意に特定するための識別子となるため、他の機器と重複しない文字列を指定してください。

※modifiable_home_dir に /etc 配下のパスを指定します。

# cd /opt/nec/pf/ice/core/conf/
# sudo cp -p core_config.json core_config.json.backup
# vi core_config.json
{
    "version": "X.X.X",
    "default_logger": "SYSLOG",
    "edge_id": "{エッジ ID}",
    "modifiable_home_dir": "/etc/nec/pf/ice/home",
    "heartbeat": {
        "enabled": true,
        "min_interval": 1800000,
        "max_interval": 3600000
    },
    "native_app": {
        "env": {
            "LD_LIBRARY_PATH_suffix": "native/lib:native/user_lib",
            "default_env": {}
        },
        "shutdown_timeout": 30000
    },
    "download": {
        "white_dirs": [
            "/tmp"
        ],
        "default_timeout": 3600000,
        "max_timeout": 3600000,
        "check_content_length": true
    },
    "upload": {
        "white_dirs": [
            "/tmp"
        ],
        "default_timeout": 3600000,
        "max_timeout": 3600000,
        "http": {
            "options": {
                "auth": "{ファイルダウンロード用ユーザの E-Mail}:{ファイルダウンロードユーザ用のパスワード}"
            },
            "useFormData": false
        }
    },
    "notification": {
        "enabled": false,
        "initialDelay": 1000
    },
    "nodered": {
        "enabled": false
    }
}

ログ設定

SYSLOG の facility を local2 とします。

$ cd /opt/nec/pf/ice/core/conf/
$ sudo cp -p core_logger.json core_logger.json.backup
$ sudo vi core_logger.json
{
    "appenders": {
        "CORE": {
            "type": "dateFile",
            "filename": "/var/log/ice/debug.log",
            "pattern": "-yyyy-MM-dd"
        },
        "NODE-RED": {
            "type": "file",
            "filename": "/var/log/ice/node-red.log",
            "maxLogSize":102400,
            "backups":3
        },
        "SYSLOG": {
            "disabled": false,
            "type": "ice-logging/syslog-appender",
            "tag": "ICE_Core",
            "facility": "local2",
            "path": "/dev/log",
            "transport": "socket"
        }
    },
    "categories": {
        "default": {"appenders": ["CORE"], "level": "INFO"},
        "CORE": {"appenders": ["CORE"], "level": "INFO"},
        "NODE-RED": {"appenders": ["NODE-RED"], "level": "ALL"},
        "METRICS": {"appenders": ["NODE-RED"], "level": "ALL"},
        "AUDIT": {"appenders": ["NODE-RED"], "level": "ALL"},
        "SYSLOG": {"appenders": ["SYSLOG"], "level": "INFO"}
    }
}

EDM コンポーネントの接続設定

prestartup.properties ファイルの tenant_name にマネージャーへの接続情報を追記します。

※設定値はシングルクォーテーションやダブルクォーテーションで囲む必要はありません。

$ cd /etc/nec/pf/opm/agent/conf
$ sudo cp -p prestartup.properties prestartup.properties.backup
$ sudo vi prestartup.properties
tenant_name={テナント名}
(CONNEXIVE Edge Device Management マネージャーへ接続する際の設定例)
tenant_name=NrFlowMng
(NEC エッジ・デバイス管理サービスへ接続する際の設定例)
tenant_name=TN1233d6aca098192fba407xyz

ICE Core の動作確認

ICE の動作確認を行います。

$ sudo systemctl stop ice-core
$ sudo systemctl status ice-core
  --> Active: inactive (dead) であること

$ sudo systemctl start ice-core
$ sudo systemctl status ice-core
  --> Active: active (running) であること

ICE の動作ログを確認します。

$ sudo less /var/log/syslog

以下の出力があることを確認します。

ICE_Core[XXXX] connected to MQTT Broker mqtt://XXX.XXX.XXX.XXX:1883  が表示されていること

※以下のログが表示されるが無視することが可能です
ice-core[XXX] Can't open undefined for reading, No such file or directory
ice-core[XXX] XXX:error:XXX:system library:fopen:No such file or directory:.../openssl-XXX
ice-core[XXX] XXX:error:XXX:BIO routines:BIO_new_file:no such file:../XXX
ice-core[XXX] unable to load certificate
以下のログが表示されていること(ログが出力されるのに数分程度必要です)
edm_inventory_ag[XXX]: I:inventory : Service-Start : Service : InventoryAgt starting up/
edm_dist_ag[XXX]: I:Distribution : Service-Start : Service : DistributionAgt starting up.
edm_opm[XXX]: I:Start function process (msc_inventory)
edm_opm[XXX]: I:Start function process (msc_dist)

※以下のログが表示されるが無視することが可能です
edm_dist_ag[XXX]: E:Distribution : Param-Check : JSON key = request_type : requst type 'agent_configuration' is invalid parameter XXX

edm_inventory_ag[XXX] E:Inventory : Param-Check : JSON key = request_type : type 'agent_status' is invalid parameter

edm_inventory_ag[XXX]: E:Inventory : JSON-Read : Path = /opt/nec/pf/edm/agent/data/inventory/ManagementInfo.json

OS 再起動後の確認

NEC AI Accelerator を再起動します。

$ sudo su -c reboot

再起動後にサービスが起動していることを確認します。

$ sudo systemctl status ice-core
  --> Active: active (running) であること