Skip to main content

新安装的Azure IoT Edge设备为什么在Azure Portal总显示不正常?

分类:  Azure物联网 标签:  #Azure #IoT Edge # 发布于: 2023-06-15 9:01:57

我们之前有一篇文章介绍了如何在限制环境下创建Azure IoT Edge设备,有心人可能已经注意到了一个现象,就是明明在已经配置完成了之后,Azure IoT Edge设备还是有问题。

你可以通过如下的链接访问之前的文章:https://www.azuredeveloper.cn/article/how-to-configure-azure-iot-edge-under-http-proxy

也就是在使用命令:

sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'

使用SAS Key正确的链接了Azure IoT Hub, 同时也通过了步骤:

[agent.env]
# "RuntimeLogLevel" = "debug"
UpstreamProtocol = "AmqpWs"
https_proxy = "<proxy URL>"

以及

sudo iotedge config apply -c '/etc/aziot/config.toml'

然后重新启动了设备,然后从Azure Portal去观察这个设备,发现这个设备仍然是有问题的:


然后点击进去看模块:


查看该模块的twin也是显示disconnected


然后通过一些排查手段来检查:

  • sudo iotedge system status: 显示都正常。

  • sudo iotedge support-bundle --since 1h: 显示edgeAgent 是在运行的,而且正常(当然有时候也是不运行的)

  • sudo iotedge logs edgeAgent:大部分情况下可以如下的错误:


对于很多用户和一点是非常懵的,完全不知道该怎么办,但是如果用户根据我之前的文章step by step, 补足之后的通过Azure Portal设置edgeAgentedgeHub模块,发现这个问题就会缓解。 因此很多用户认为这是一个补丁操作,而实际情况是,我们需要理解Azure IoT Edge中的概念,Azure IoT Hub会将设备通过twin来映射实际的设备,可以将twin看成是一个逻辑设备,如果你想你的设备在安装完成之后,就可以立即开始工作,那么最重要的一步就是在之前就需要对这个逻辑设备进行配置,而无需等到有了实际的设备再来配置,所以在实际生产中正确的做法是:先使用Azure Portal或者自己开发的工具创建设备,然后配置设备,最后再在物理设备简单的配置一下链接和环境,其他的就无需配置了,就可以自动全部正常。

回到我们之前的文章里,也就是在物理设备上开始配置之前,就需要在Azure Portal上创建该设备,同时需要通过Azure Portal预先就配置好edgeAgentedgeHub, 包括在Azure Portal上配置好代理服务器,如下图的edgeAgent和edgeHub配置:




这样配置好了之后,创建deployment就可以了。

之后只需要物理设备上线就自动全部搞定了,无需额外再配置。虽然仅仅是换一下配置的顺序,但是理解这一步非常重要。