Skip to main content

Azure IoT Edge问题排查

分类:  Azure物联网 标签:  #Azure #IoT Edge # 发布于: 2023-06-14 22:34:30

本节介绍一些常用的Azure IoT Edge设备问题排查的基本手段和工具。

首先需要说明的是之前微软的文档是有些问题的,之前的文档讨论一个环境变量RuntimeLogLevel用于设置runtime的日志级别,实际上应该是设置在模块edgeHubedgeAgent上。对于rumtime的日志输出建议使用命令sudo iotedge system logs -f (注意这个命令是用在iotedge runtime 1.2), 或者直接使用Linux命令journalctl -fu iotedge来查看日志。

  1. edgeAgent或者edgeHub模块日志级别设置为debug

    使用合适的工具登录到设备所有的系统里,例如Linuxssh客户端。
    编辑文件:/etc/iotedge/config.yaml 或者文件/etc/aziot/config.yaml (前面这个配置文件适合1.1版本,后面是1.2以以上。)

    agent:
        name: edgeAgent
        type: docker
        env:
            RuntimeLogLevel: debug
        config:
            image: mcr.microsoft.com/azureiotedge-agent:1.1
            auth: {}
    

    需要注意的是edgeHub模块也可以设置环境变量RuntimeLogLevel, 但是建议仅仅在您开发Edge模块时在EdgeHub上开启这个选项。

  2. 抓取设备的实时状态信息
    在将edgeAgent模块、edgeHub模块的日志级别设置为debug模式之后,可以使用如下的工具来抓取整个设备的模块和runtime的实时信息:

     sudo iotedge support-bundle --since 6h
    

    这个命令会将很多的信息打包成为一个zip文件,拿到这个zip文件之后,仔细检查一下当前的信息。当前的信息主要包括:日志, 各模块的侵入信息等等。

  3. 检查设备的配置状态
    使用如下的命令可以检查设备的配置状态:

     sudo iotedge check
    

    另外有一个小提示,如果您在编辑了配置文件之后,请运行命令sudo iotedge apply应用配置生效,特别在runtime1.2版本以上。

  4. 检查IoT runtime的系统状态
    通过如下的命令可以检查一下系统的状态:

     sudo iotedge system status
    

    或者

     sudo iotedge system logs -- -f
    

    其他有用的指令如下:

     sudo iotedge system set-log-level debug
     sudo iotedge system restart
    
     iotedge logs <container name>
    

另外需要注意的是IoT Edge是支持网络代理的,如果使用的是基于Http的代理,在IoT Edge Runtime的协议中选择支持WebSocket的协议即可。