Connectivity check fail in IoT Edge

Satyam Chauhan 587 Reputation points
2023-11-02T15:17:19.2866667+00:00

Hi,

I have setup iot-edge on a RHEL server. After installing all the packages in the server when I run command - iotedge system status

the response is -

System services:
    aziot-edged             Running
    aziot-identityd         Running
    aziot-keyd              Running
    aziot-certd             Running
    aziot-tpmd              Ready

On running the iotedge check command

the response is -

Configuration checks (aziot-identity-service) - all are OK

Connectivity checks (aziot-identity-service) - all are OK, except MQTT (expected behavior as we open only https and amqp port)

Configuration checks - these are the failed checks

× configuration has correct URIs for daemon mgmt endpoint - Error
    Unable to find image 'mcr.microsoft.com/azureiotedge-diagnostics:1.4.10' locally
    docker: Error response from daemon: Get "https://mcr.microsoft.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
× container time is close to host time - Error
× production readiness: Edge Agent's storage directory is persisted on the host filesystem - Error

Connectivity checks - everything failed

Connectivity checks
-------------------
× container on the default network can connect to upstream AMQP port - Error
    Container on the default network could not connect to 
Azure IoT Edge
Azure IoT Edge
An Azure service that is used to deploy cloud workloads to run on internet of things (IoT) edge devices via standard containers.
580 questions
{count} votes

1 answer

Sort by: Most helpful
  1. LeelaRajeshSayana-MSFT 16,701 Reputation points
    2023-11-02T23:28:31.41+00:00

    Hi @Satyam Chauhan Thank you for posting the question here.

    When you perform sudo iotedge check on an IoT Edge device, the IoT Edge check tool uses a container to run its diagnostics. The container image, mcr.microsoft.com/azureiotedge-diagnostics:latest, is available through the Microsoft Container Registry. Since you are running a check on a device without direct access to the internet, your devices will need access to the container image. You can either create a local copy of the container on your IoT Edge device or if you have a parent device, you can use the below command on downstream devices to route the image pull through the parent devices.

    sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
    
    

    Since the connectivity checks also rely on this container image, I would suggest to resolve this and perform the check to see the correct results.

    Please refer the following section Run the check command for more details on this.

    1 person found this answer helpful.

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.