EDM エージェントのセットアップ(NEC AI Accelerator 編)¶
NEC AI Accelerator には以下のコンポーネントが出荷時にプリインストールされています。
- IoT Connectivity Engine Core (ICE Core)
- EDM コンポーネント
上記コンポーネントの設定を行うことで CONNEXIVE Edge Device Management、エッジ・デバイス管理サービスへの接続が可能です。
はじめに¶
エッジ認証情報の確認¶
- Nebula(NEC モバイルバックエンド基盤)Developer Console からテナント情報を取得するため、Web UI にアクセスします。
※通常、
http://<マネージャーサーバー IP アドレス>:8080/consoleがアクセス先 URL となります。 - メールアドレス、パスワードを入力し、ログインします。
- 画面上部の「テナント」メニューから「NrFlowMng」を選択します。 ※テナント名を「NrFlowMng」以外で指定して構築している場合、指定したテナント名を選択します
- アプリケーション一覧に表示される「名前」列のリンクを選択します。
- 以下の情報を控えてください(後続の設定手順で使用します)。 ・テナント 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 接続先}には次のいずれかの値を設定します。- CONNEXIVE Edge Device Management マネージャーを構築したサーバー IP や FQDN 接続先
- エッジ・デバイス管理サービスの接続先
{ユーザー名}と{パスワード}はマネージャー側に設定された値を設定します。
# 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は対象機器を一意に特定するための識別子となるため、他の機器と重複しない文字列を指定してください。
- エッジ ID に指定可能な文字列は
a-z A-Z . - _ - エッジ ID に指定可能な文字数は 8~256 文字となります
- upload.http.options.auth セクションは ファイル収集の認証設定 でファイル収集に認証を行う設定を行っている場合に必要です。認証情報は ファイル収集の認証設定 - パスワード認証が必要な場合 で作成したアカウントを設定します。
※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) であること