启动AducIotAgent报错:无法初始化诊断工作流数据求解决
Ubuntu 20.04 下 AducIotAgent 启动失败排查
操作背景
在Ubuntu 20.04环境中部署AducIotAgent,执行了以下操作:
- 克隆iot-hub-device-update仓库并安装依赖:
./scripts/install-deps.sh -a sudo cmake --build out --target install
- 克隆do-client仓库并安装相关deb包:
python3 build/build.py --project agent --package-for deb cd /tmp/build-deliveryoptimization-agent/linux-debug/ sudo apt-get install ./deliveryoptimization-agent*.deb cd <project root> python3 build/build.py --project plugin-apt --package-for deb cd /tmp/build-deliveryoptimization-sdk/linux-debug/ sudo apt-get install ./libdeliveryoptimization*.deb cd /tmp/build-deliveryoptimization-agent/linux-debug/ sudo apt-get install ./deliveryoptimization-agent*.deb cd /tmp/build-deliveryoptimization-plugin-apt/linux-debug/ sudo apt-get install ./deliveryoptimization-plugin-apt*.deb
- 在IoT Hub创建设备后,将连接字符串配置到
/etc/adu/du-config.json:
{ "schemaVersion": "1.0", "aduShellTrustedUsers": [ "adu", "do" ], "manufacturer": "fabrikam", "model": "vacuum", "agents": [ { "name": "main", "runas": "adu", "connectionSource": { "connectionType": "string", "connectionData": "<created device on azure iothub connection String>" }, "manufacturer": "fabrikam", "model": "vacuum" } ]}
启动报错
执行启动命令:
sudo AducIotAgent --enable-iothub-tracing --log-level 1
出现如下错误日志:
2023-09-07T07:57:11.8021Z 3717069[3717069] [I] Agent (linux; 1.0.2) starting. [main] 2023-09-07T07:57:11.8021Z 3717069[3717069] [I] Git Info: main:f9b180de [main] 2023-09-07T07:57:11.8021Z 3717069[3717069] [I] Supported Update Manifest version: min: 4, max: 5 [main] 2023-09-07T07:57:11.8022Z 3717069[3717069] [I] Health check passed. [HealthCheck] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] Initializing PnP components. [ADUC_PnP_Components_Create] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] ADUC agent started. Using IoT Hub Client SDK 1.7.0 [AzureDeviceUpdateCoreInterface_Create] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] Calling ADUC_RegisterPlatformLayer [ADUC_MethodCall_Register] 2023-09-07T07:57:11.8023Z 3717069[3717069] [E] Unable to initialize the diagnostic workflow data. [DiagnosticsInterface_Create] 2023-09-07T07:57:11.8023Z 3717069[3717069] [E] Failed to initialize PnP component 'diagnosticInformation'. [ADUC_PnP_Components_Create] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] ADUC agent stopping [AzureDeviceUpdateCoreInterface_Destroy] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] Calling ADUC_Unregister [ADUC_MethodCall_Unregister] 2023-09-07T07:57:11.8023Z 3717069[3717069] [E] ADUC_PnP_Components_Create failed [StartupAgent] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] Agent exited with code 1 [main] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] Agent is shutting down with signal 0. [ShutdownAgent] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] De-initializing command listener thread [UninitializeCommandListenerThread] 2023-09-07T07:57:11.8023Z 3717069[3717069] [I] ADUC agent stopping [AzureDeviceUpdateCoreInterface_Destroy]
排查思路
- 检查诊断目录权限:AducIotAgent需要读写诊断数据目录,默认路径为
/var/lib/adu/diagnostics,确保adu用户拥有读写权限:sudo chown -R adu:adu /var/lib/adu/diagnostics sudo chmod -R 755 /var/lib/adu/diagnostics - 验证诊断组件完整性:检查诊断相关组件是否存在,比如
libaduc-diagnostics.so是否在/usr/lib/x86_64-linux-gnu/adu/目录下,若缺失,重新编译时确保开启诊断组件编译选项。 - 补充诊断配置项:在
du-config.json根节点添加诊断相关配置:"diagnostics": { "enabled": true, "storagePath": "/var/lib/adu/diagnostics", "maxLogSizeBytes": 10485760 } - 查看系统日志细节:通过
journalctl -u adu-agent.service(服务启动方式)或/var/log/syslog获取更多初始化失败的上下文信息。 - 重新编译并开启诊断选项:重新编译iot-hub-device-update仓库时显式开启诊断组件:
cmake -S . -B out -DADUC_BUILD_DIAGNOSTICS=ON sudo cmake --build out --target install - 确认adu用户权限:执行
id adu查看用户组信息,确保其拥有访问IoT Hub资源、诊断目录的必要权限。
内容的提问来源于stack exchange,提问作者Gustavo Nóbrega
相关产品推荐
相关产品推荐

