Az Azure IoT Edge gyakori problémáinak megoldásai

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Ennek megfelelően fontolja meg a használatot és a tervezést. További információ: CentOS End Of Life útmutató.

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5 IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Ez a cikk az IoT Edge-megoldások használatakor előforduló gyakori problémák azonosítására és megoldására használható. Ha információra van szüksége arról, hogyan kereshet naplókat és hibákat az IoT Edge-eszközéről, tekintse meg az IoT Edge-eszköz hibaelhárítását.

Üzembe helyezés és üzembe helyezés

Az IoT Edge-modul a sikeres üzembe helyezést követően eltűnik az eszközről

Hibajelenségek

Az IoT Edge-eszköz moduljainak beállítása után a modulok üzembe helyezése sikeresen megtörténik, de néhány perc múlva eltűnnek az eszközről és az eszköz részleteiről az Azure Portalon. A definiált modulokon kívül más modulok is megjelenhetnek az eszközön.

Ok

Ha egy automatikus üzembe helyezés egy eszközt céloz meg, elsőbbséget élvez a modulok manuális beállításával szemben. A Modulok beállítása funkció az Azure Portalon vagy a Create deployment for single device functionality in Visual Studio Code egy pillanatra érvénybe lép. A megadott modulok az eszközön kezdődnek. Ezután az automatikus üzembe helyezés prioritása elindul, és felülírja az eszköz kívánt tulajdonságait.

Megoldás

Eszközenként csak egy típusú üzembehelyezési mechanizmust használjon, akár automatikus üzembe helyezést, akár különálló eszköztelepítést. Ha egy eszközt több automatikus üzembe helyezéssel is megcéloz, módosíthatja a prioritást vagy a célleírásokat, hogy a megfelelő alkalmazás érvényes legyen egy adott eszközre. Az ikereszközt úgy is frissítheti, hogy az már nem felel meg az automatikus üzembe helyezés célleírásának.

További információ: Az IoT Edge automatikus üzembe helyezésének ismertetése önálló eszközökhöz vagy nagy méretekben.

IoT Edge-futtatókörnyezet

Az IoT Edge-ügynök egy perc után leáll

Hibajelenségek

Az edgeAgent modul körülbelül egy percig indul el és fut sikeresen, majd leáll. A naplók azt jelzik, hogy az IoT Edge-ügynök AMQP-n keresztül próbál csatlakozni az IoT Hubhoz, majd az AMQP használatával próbál csatlakozni a WebSocketen keresztül. Ha ez nem sikerül, az IoT Edge-ügynök kilép.

Példa edgeAgent-naplókra:

2017-11-28 18:46:19 [INF] - Starting module management agent.
2017-11-28 18:46:19 [INF] - Version - 1.0.7516610 (03c94f85d0833a861a43c669842f0817924911d5)
2017-11-28 18:46:19 [INF] - Edge agent attempting to connect to IoT Hub via AMQP...
2017-11-28 18:46:49 [INF] - Edge agent attempting to connect to IoT Hub via AMQP over WebSocket...

Ok

A gazdagéphálózat hálózati konfigurációja megakadályozza, hogy az IoT Edge-ügynök elérje a hálózatot. Az ügynök először megpróbál AMQP-n keresztül csatlakozni (az 5671-es porton). Ha a kapcsolat meghiúsul, a WebSockets (443-os port) kipróbálása.

Az IoT Edge-futtatókörnyezet minden modulon beállít egy-egy hálózatot a kommunikációhoz. Linux rendszeren ez a hálózat egy hídhálózat. Windows rendszeren NAT-ot használ. Ez a probléma gyakoribb a NAT-hálózatot használó Windows-tárolókat igénybe vevő windowsos eszközökön.

Megoldás

Győződjön meg arról, hogy a hídhoz/NAT-hálózathoz rendelt IP-címeknek van internetes útvonala. Néha a gazdagépen lévő VPN-konfiguráció felülbírálja az IoT Edge-hálózatot.

Az Edge ügynökmodulja „üres konfigurációs fájl” hibaüzenetet küld, és a modulok nem indíthatók az eszközön

Hibajelenségek

  • Az eszköznek problémái vannak az üzembe helyezésben definiált modulok elindításával. Csak az edgeAgent fut, de üres konfigurációs fájlt jelent...

  • Amikor egy eszközön fut sudo iotedge check , az azt jelenti , hogy a tárolómotor nincs DNS-kiszolgálóbeállítással konfigurálva, ami befolyásolhatja az IoT Hubhoz való kapcsolódást. Tekintse meg https://aka.ms/iotedge-prod-checklist-dns az ajánlott eljárásokat.

Ok

  • Az IoT Edge alapértelmezés szerint saját elkülönített tárolóhálózatán indítja el a modulokat. Előfordulhat, hogy az eszköznek problémái vannak a DNS-névfeloldással ezen a magánhálózaton belül.
  • Ha az IoT Edge illesztőtelepítését használja, a Docker konfigurációs fájlja egy másik hely. Lásd a 3. megoldást.

Megoldás

1. lehetőség: A DNS-kiszolgáló beállítása a tárolómotor beállításai között

Adja meg a környezet DNS-kiszolgálóját a tárolómotor beállításai között, amely a motor által indított összes tárolómodulra vonatkozik. Hozzon létre egy nevű daemon.jsonfájlt, majd adja meg a használni kívánt DNS-kiszolgálót. Példa:

{
    "dns": ["1.1.1.1"]
}

Ez a DNS-kiszolgáló nyilvánosan elérhető DNS-szolgáltatásra van beállítva. Egyes hálózatok, például a vállalati hálózatok azonban saját DNS-kiszolgálóval rendelkeznek, és nem teszik lehetővé a nyilvános DNS-kiszolgálókhoz való hozzáférést. Ezért ha a peremhálózati eszköz nem tud hozzáférni egy nyilvános DNS-kiszolgálóhoz, cserélje le egy elérhető DNS-kiszolgáló címére.

Helyezze daemon.json az /etc/docker eszköz könyvtárába.

Ha a hely már tartalmaz egy daemon.json fájlt, adja hozzá a DNS-kulcsot , és mentse a fájlt.

Indítsa újra a tárolómotort a frissítések érvénybe lépéséhez.

sudo systemctl restart docker

2. lehetőség: DNS-kiszolgáló beállítása az IoT Edge üzembe helyezésében modulonként

Az IoT Edge-telepítésben beállíthatja az egyes modulok createOptions dns-kiszolgálóit. Példa:

"createOptions": {
  "HostConfig": {
    "Dns": [
      "x.x.x.x"
    ]
  }
}

Figyelmeztetés

Ha ezt a módszert használja, és helytelen DNS-címet ad meg, az edgeAgent elveszíti a kapcsolatot az IoT Hubbal, és nem tud új üzembe helyezéseket fogadni a probléma megoldásához. A probléma megoldásához újratelepítheti az IoT Edge-futtatókörnyezetet. Az IoT Edge új példányának telepítése előtt mindenképpen távolítsa el az edgeAgent tárolókat az előző telepítésből.

Mindenképpen állítsa be ezt a konfigurációt az edgeAgent és az edgeHub-modulokhozis.

3. lehetőség: A docker konfigurációs fájl helyének átadása a parancs ellenőrzéséhez

Ha az IoT Edge beépülő modulként van telepítve, a --container-engine-config-file paraméterrel adja meg a Docker konfigurációs fájljának helyét. Ha például a Docker-konfigurációs fájl a következő helyen /var/snap/docker/current/config/daemon.jsontalálható, futtassa a következő parancsot: iotedge check --container-engine-config-file '/var/snap/docker/current/config/daemon.json'

A figyelmeztető üzenet jelenleg a konfigurációs fájl helyének beállítása után is megjelenik az iotedge-ellenőrzés kimenetében. Ellenőrizze a hibát, mert az IoT Edge beépülő modul nem rendelkezik olvasási hozzáféréssel a Docker beépülő modulhoz. Ha iotedge-ellenőrzést használ a kiadási folyamatban, a paraméterrel letilthatja a --ignore container-engine-dns container-engine-logrotate figyelmeztető üzenetet.

Az Edge Agent modul LTE-kapcsolati jelentésekkel "üres peremhálózati ügynök konfigurációja", és "átmeneti hálózati hibát" okoz

Hibajelenségek

Az LTE-kapcsolattal konfigurált eszközöknél problémák merülnek fel az üzembe helyezés során definiált modulok indításakor. Az edgeAgent nem tud csatlakozni az IoT Hubhoz, és üres peremhálózati ügynök konfigurációját és átmeneti hálózati hibát jelez.

Ok

Egyes hálózatok csomagterheléssel rendelkeznek, ami miatt az alapértelmezett Docker-hálózati MTU (1500) túl magas, és a csomagtöredezettség megakadályozza a külső erőforrásokhoz való hozzáférést.

Megoldás

  1. Ellenőrizze a Docker-hálózat MTU-beállítását.

    docker network inspect <network name>

  2. Ellenőrizze az eszköz fizikai hálózati adapterének MTU-beállítását.

    ip addr show eth0

Feljegyzés

A Docker-hálózat MTU-ja nem lehet magasabb, mint az eszköz MTU-ja. További információért forduljon az internetszolgáltatóhoz.

Ha eltérő MTU-méretet lát a Docker-hálózathoz és az eszközhöz, próbálkozzon a következő kerülő megoldással:

  1. Hozzon létre egy új hálózatot. Például:

    docker network create --opt com.docker.network.driver.mtu=1430 test-mtu

    A példában az eszköz MTU-beállítása 1430. Ezért a Docker-hálózat MTU-értéke 1430.

  2. Állítsa le és távolítsa el az Azure-hálózatot.

    docker network rm azure-iot-edge

  3. Hozza létre újra az Azure-hálózatot.

    docker network create --opt com.docker.network.driver.mtu=1430 azure-iot-edge

  4. Távolítsa el az összes tárolót, és indítsa újra az aziot-edged szolgáltatást.

    sudo iotedge system stop && sudo docker rm -f $(docker ps -aq -f "label=net.azure-devices.edge.owner=Microsoft.Azure.Devices.Edge.Agent") && sudo iotedge config apply

Az IoT Edge-ügynök nem éri el egy modul rendszerképét (403)

Hibajelenségek

A tároló nem fut, és az edgeAgent-naplók 403-at jeleznek.

Ok

Az IoT Edge-ügynökmodul nem rendelkezik engedéllyel a modul lemezképének eléréséhez.

Megoldás

Győződjön meg arról, hogy a tárolóregisztrációs adatbázis hitelesítő adatai helyesek az eszköz üzembehelyezési jegyzékében.

Az IoT Edge-ügynök túlzott identitáshívásokat indít

Hibajelenségek

Az IoT Edge-ügynök túlzott identitáshívásokat indít az Azure IoT Hubon.

Ok

Az eszköztelepítési jegyzék helytelen konfigurálása sikertelen üzembe helyezést okoz az eszközön. Az IoT Edge-ügynök újrapróbálkozására vonatkozó logika továbbra is újrapróbálkozza az üzembe helyezést. Mindegyik újrapróbálkozza az identitáshívásokat, amíg az üzembe helyezés sikeres nem lesz. Ha például az üzembehelyezési jegyzék olyan modul URI-t ad meg, amely nem létezik a tárolóregisztrációs adatbázisban, vagy helytelenül van begépelve, az IoT Edge-ügynök újrapróbálkozik az üzembe helyezéssel, amíg az üzembe helyezési jegyzék ki nem javítva.

Megoldás

Ellenőrizze az üzembehelyezési jegyzékfájlt az Azure Portalon. Javítsa ki a hibákat, és telepítse újra a jegyzékfájlt az eszközre.

Az IoT Edge-központ nem indul el

Hibajelenségek

Az edgeHub-modul nem indul el. A naplókban az alábbihoz hasonló üzenet jelenhet meg:

One or more errors occurred.
(Docker API responded with status code=InternalServerError, response=
{\"message\":\"driver failed programming external connectivity on endpoint edgeHub (6a82e5e994bab5187939049684fb64efe07606d2bb8a4cc5655b2a9bad5f8c80):
Error starting userland proxy: Bind for 0.0.0.0:443 failed: port is already allocated\"}\n)

Vagy

info: edgelet_docker::runtime -- Starting module edgeHub...
warn: edgelet_utils::logging -- Could not start module edgeHub
warn: edgelet_utils::logging --     caused by: failed to create endpoint edgeHub on network nat: hnsCall failed in Win32:
        The process cannot access the file because it is being used by another process. (0x20)

Ok

A gazdagép egy másik folyamata kötött egy portot, amelyet az edgeHub-modul meg szeretne kötni. Az IoT Edge hub leképezi a 443-at, az 5671-et és a 8883-at átjáróforgatókönyvekben való használatra. A modul nem indul el, ha egy másik folyamat már kötötte az egyik portot.

Megoldás

A probléma kétféleképpen oldható meg:

Ha az IoT Edge-eszköz átjáróeszközként működik, meg kell keresnie és le kell állítania a 443-as, 5671-as vagy 8883-as portot használó folyamatot. A 443-as port hibája általában azt jelenti, hogy a másik folyamat egy webkiszolgáló.

Ha nem kell az IoT Edge-eszközt átjáróként használnia, akkor eltávolíthatja a portkötéseket az EdgeHub modul létrehozási beállításaiból. A létrehozási beállításokat az Azure Portalon vagy közvetlenül a deployment.json fájlban módosíthatja.

Az Azure Portalon:

  1. Lépjen az IoT Hubra, és válassza az Eszközök lehetőséget az Eszközfelügyelet menüben.

  2. Válassza ki a frissíteni kívánt IoT Edge-eszközt.

  3. Válassza a Modulok beállítása lehetőséget.

  4. Válassza a Futtatókörnyezet Gépház lehetőséget.

  5. Az Edge Hub modul beállításaiban törölje a Tároló létrehozása beállítások szövegmezőből mindent.

  6. A módosítások mentéséhez és az üzembe helyezés létrehozásához válassza az Alkalmaz lehetőséget.

A deployment.json fájlban:

  1. Nyissa meg az IoT Edge-eszközre alkalmazott deployment.json fájlt.

  2. Keresse meg a edgeHub beállításokat az edgeAgent kívánt tulajdonságok szakaszában:

      "edgeHub": {
          "restartPolicy": "always",
          "settings": {
             "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
             "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
          },
          "status": "running",
          "type": "docker"
       }
    
  3. Távolítsa el a createOptions vonalat és a záró vesszőt az image előtte lévő sor végén:

      "edgeHub": {
          "restartPolicy": "always",
          "settings": {
          "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
          "status": "running",
          "type": "docker"
    }
    
  4. Válassza a Létrehozás lehetőséget , ha ismét alkalmazni szeretné az IoT Edge-eszközön.

Az IoT Edge-modul nem küld üzenetet az edgeHubra 404-es hibával

Hibajelenségek

Az egyéni IoT Edge-modul nem tud üzenetet küldeni az IoT Edge-központnak 404-ben Module not found megadott hibával. Az IoT Edge-futtatókörnyezet a következő üzenetet nyomtatja ki a naplókba:

Error: Time:Thu Jun  4 19:44:58 2018 File:/usr/sdk/src/c/provisioning_client/adapters/hsm_client_http_edge.c Func:on_edge_hsm_http_recv Line:364 executing HTTP request fails, status=404, response_buffer={"message":"Module not found"}u, 04 )

Ok

Az IoT Edge-futtatókörnyezet biztonsági okokból kényszeríti ki az edgeHubhoz csatlakozó összes modul folyamatazonosítását. Ellenőrzi, hogy a modul által küldött összes üzenet a modul fő folyamatazonosítójából származik-e. Ha egy modul az eredetileg létrehozotttól eltérő folyamatazonosítóról küld üzenetet, akkor a 404-ben megjelenő hibaüzenettel elutasítja az üzenetet.

Megoldás

Az 1.0.7-es verziótól az összes modulfolyamat jogosult a csatlakozásra. További információ: 1.0.7 kiadás változásnaplója.

Ha az 1.0.7-re való frissítés nem lehetséges, hajtsa végre az alábbi lépéseket. Győződjön meg arról, hogy az egyéni IoT Edge-modul mindig ugyanazt a folyamatazonosítót használja az edgeHubra küldött üzenetek küldéséhez. Például a Docker-fájlban lévő parancs helyett CMD győződjön meg rólaENTRYPOINT. A CMD parancs egy folyamatazonosítóhoz vezet a modulhoz és egy másik folyamatazonosítóhoz a fő programot futtató bash parancshoz, de ENTRYPOINT egyetlen folyamatazonosítóhoz vezet.

Stabilitási problémák kisebb eszközökön

Hibajelenségek

Stabilitási problémákat tapasztalhat az erőforrás-korlátozott eszközökön, például a Raspberry Pi-n, különösen átjáróként használva. A tünetek közé tartozik az IoT Edge-központ modul memóriakivétele, az alsóbb rétegbeli eszközök csatlakoztatása, vagy az eszköz néhány óra elteltével nem küld telemetriai üzeneteket.

Ok

Az IoT Edge-futtatókörnyezet részét képező IoT Edge-központ alapértelmezés szerint teljesítményre van optimalizálva, és nagy memóriatömböket próbál lefoglalni. Ez az optimalizálás nem ideális korlátozott peremeszközökhöz, és stabilitási problémákat okozhat.

Megoldás

Az IoT Edge Hub esetében állítson be egy OptimizeForPerformance környezeti változót hamisra. A környezeti változók kétféleképpen állíthatók be:

Az Azure Portalon:

  1. Az IoT Hubon válassza ki az IoT Edge-eszközt, majd az eszköz részleteit tartalmazó lapon válassza a Modulok>futtatókörnyezetének beállítása Gépház lehetőséget.

  2. Hozzon létre egy környezeti változót az IoT Edge Hub OptimizeForPerformance modulhoz igaz/hamis típusú, Hamis értékre állítva.

  3. Kattintson az Alkalmaz gombra a módosítások mentéséhez, majd válassza a Véleményezés + létrehozás lehetőséget.

    A környezeti változó most már az edgeHub üzembehelyezési jegyzék tulajdonságában van:

       "edgeHub": {
          "env": {
                "OptimizeForPerformance": {
                   "value": false
                }
          },
          "restartPolicy": "always",
          "settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
          },
          "status": "running",
          "type": "docker"
       }
    
  4. A módosítások mentéséhez és a modul üzembe helyezéséhez válassza a Létrehozás lehetőséget .

Nem sikerült elindítani a biztonsági démont

Hibajelenségek

A biztonsági démon nem indul el, és a modultárolók nem jönnek létre. edgeHub Az edgeAgentIoT Edge szolgáltatás nem indítja el az egyéni modulokat és az egyéb egyéni modulokat. A aziot-edged naplókban ez a hiba jelenik meg:

  • A démon nem indítható el sikeresen: Nem sikerült elindítani a felügyeleti szolgáltatást
  • okozta: Hiba történt a/var/run/iotedge/mgmt.sock elérési úton
  • által okozott: Engedély megtagadva (os hiba 13)

Ok

A CentOS 7 kivételével minden Linux-disztribúció esetében az IoT Edge alapértelmezett konfigurációja a systemd szoftvercsatornák aktiválása. Engedélyhiba történik, ha úgy módosítja a konfigurációs fájlt, hogy nem használja a szoftvercsatornák aktiválását, de az URL-címeket /var/run/iotedge/*.sockhagyja meg, mivel a iotedge felhasználó nem tud írni /var/run/iotedge , ezért nem tudja feloldani és csatlakoztatni a szoftvercsatornákat.

Megoldás

Nem kell letiltania a szoftvercsatornák aktiválását olyan disztribúción, ahol a szoftvercsatornák aktiválása támogatott. Ha azonban egyáltalán nem szeretné használni a szoftvercsatornák aktiválását, helyezze be a szoftvercsatornákat /var/lib/iotedge/.

  1. Futtassa systemctl disable iotedge.socket iotedge.mgmt.socket a szoftvercsatornaegységek letiltását, hogy a rendszer ne indítsa el őket szükségtelenül
  2. Az iotedge konfigurációjának módosítása mindkét connect szakaszban és listen szakaszban való használatra /var/lib/iotedge/*.sock
  3. Ha már rendelkezik modulokkal, azok a régi /var/run/iotedge/*.sock csatlakoztatásokkal rendelkeznek, így docker rm -f azok is.

Hálózat

Az IoT Edge-biztonsági démon érvénytelen állomásnév miatt meghibásodik

Hibajelenségek

Az IoT Edge security manager naplóinak ellenőrzése sikertelen, és a következő üzenetet nyomtatja ki:

Error parsing user input data: invalid hostname. Hostname cannot be empty or greater than 64 characters

Ok

Az IoT Edge-futtatókörnyezet csak a 64 karakternél rövidebb gazdagépneveket támogatja. A fizikai gépek általában nem rendelkeznek hosszú gazdagépnévvel, de a probléma gyakoribb a virtuális gépeken. Az Azure-ban üzemeltetett Windows rendszerű virtuális gépek automatikusan létrehozott gazdagépnevei általában hosszúak.

Megoldás

Ha ezt a hibát látja, a virtuális gép DNS-nevének konfigurálásával megoldhatja, majd a DNS-nevet gazdanévként állíthatja be a beállítási parancsban.

  1. Az Azure Portalon lépjen a virtuális gép áttekintési oldalára.

  2. A konfigurációs panel megnyitásához válassza a Nem konfigurált (ha a virtuális gép új) lehetőséget a DNS-név alatt, vagy válassza ki a meglévő DNS-nevet. Ha a virtuális gép már konfigurálta a DNS-nevet, nem kell újat konfigurálnia.

    Képernyőkép a DNS-név konfigurációs paneljének megnyitásáról.

  3. Adjon meg egy értéket a DNS-névfelirathoz, ha még nem rendelkezik ilyen névvel, és válassza a Mentés lehetőséget.

  4. Másolja ki az új DNS-nevet, amelynek a következő formátumban kell lennie:
    <DNSnamelabel>.<vmlocation.cloudapp.azure.com>.

  5. Az IoT Edge-eszközön nyissa meg a konfigurációs fájlt.

    sudo nano /etc/aziot/config.toml
    
  6. Cserélje le a DNS-név értékét hostname .

  7. Mentse és zárja be a fájlt, majd alkalmazza a módosításokat az IoT Edge-ben.

    sudo iotedge config apply
    

Az IoT Edge-modul csatlakozási hibákról küld jelentést

Hibajelenségek

A felhőszolgáltatásokhoz közvetlenül csatlakozó IoT Edge-modulok, beleértve a futtatókörnyezeti modulokat is, leállnak a várt módon, és csatlakozási vagy hálózati hibák esetén adnak vissza hibákat.

Ok

A tárolók az IP-csomagtovábbításra támaszkodnak az internethez való csatlakozáshoz, hogy kommunikálni tudjanak a felhőszolgáltatásokkal. Az IP-csomagok továbbítása alapértelmezés szerint engedélyezve van a Dockerben, de ha le van tiltva, akkor a felhőszolgáltatásokhoz csatlakozó modulok nem fognak a várt módon működni. További információ: Tárolók közötti kommunikáció ismertetése a Docker dokumentációjában.

Megoldás

Az IP-csomagok továbbításának engedélyezéséhez kövesse az alábbi lépéseket.

  1. Nyissa meg a sysctl.conf fájlt.

    sudo nano /etc/sysctl.conf
    
  2. Adja hozzá a következő sort a fájlhoz.

    net.ipv4.ip_forward=1
    
  3. Mentse és zárja be a fájlt.

  4. Indítsa újra a hálózati szolgáltatást és a Docker szolgáltatást a módosítások alkalmazásához.

Az átjáró mögötti IoT Edge nem tud HTTP-kéréseket végrehajtani, és elindítani az edgeAgent modult

Hibajelenségek

Az IoT Edge-futtatókörnyezet aktív egy érvényes konfigurációs fájllal, de nem tudja elindítani az edgeAgent modult. A parancs iotedge list üres listát ad vissza. Az IoT Edge-futtatókörnyezet jelentései Could not perform HTTP request a naplókban.

Ok

Az átjáró mögötti IoT Edge-eszközök a konfigurációs fájl mezőjében megadott szülő IoT Edge-eszközről szerzik be a parent_hostname modulképeiket. A Could not perform HTTP request hiba azt jelenti, hogy az alsóbb rétegbeli eszköz nem tudja elérni a szülőeszközét HTTP-en keresztül.

Megoldás

Győződjön meg arról, hogy a szülő IoT Edge-eszköz fogadhat bejövő kéréseket az alsóbb rétegbeli IoT Edge-eszközről. Nyissa meg a hálózati forgalmat a 443-as és a 6617-es portokon az alsóbb rétegbeli eszközről érkező kérelmekhez.

Az átjáró mögötti IoT Edge nem tud HTTP-kéréseket végrehajtani, és elindítani az edgeAgent modult

Hibajelenségek

Az IoT Edge démon aktív egy érvényes konfigurációs fájllal, de nem tudja elindítani az edgeAgent modult. A parancs iotedge list üres listát ad vissza. Az IoT Edge démonnaplóinak jelentése Could not perform HTTP request.

Ok

Az átjáró mögötti IoT Edge-eszközök a konfigurációs fájl mezőjében megadott szülő IoT Edge-eszközről szerzik be a parent_hostname modulképeiket. A Could not perform HTTP request hiba azt jelenti, hogy az alsóbb rétegbeli eszköz nem tudja elérni a szülőeszközét HTTP-en keresztül.

Megoldás

Győződjön meg arról, hogy a szülő IoT Edge-eszköz fogadhat bejövő kéréseket az alsóbb rétegbeli IoT Edge-eszközről. Nyissa meg a hálózati forgalmat a 443-as és a 6617-es portokon az alsóbb rétegbeli eszközről érkező kérelmekhez.

Az átjáró mögötti IoT Edge nem tud csatlakozni az egyik IoT Hubról a másikra való migráláskor

Hibajelenségek

Amikor IoT Edge-eszközök hierarchiáját próbálja áttelepíteni egyik IoT Hubról a másikra, a legfelső szintű szülő IoT Edge-eszköz csatlakozhat az IoT Hubhoz, az alsóbb rétegbeli IoT Edge-eszközök azonban nem. A naplók jelentése Unable to authenticate client downstream-device/$edgeAgent with module credentials.

Ok

Az alsóbb rétegbeli eszközök hitelesítő adatai nem frissültek megfelelően az új IoT Hubra való migráláskor. Emiatt a edgeAgentedgeHub modulok hitelesítési típusa (ha nem explicit módon van beállítva) hitelesítési típusra none lett beállítva. A kapcsolat során az alsóbb rétegbeli eszközök moduljai régi hitelesítő adatokat használnak, ami a hitelesítés sikertelenségéhez vezet.

Megoldás

Az új IoT Hubra való migráláskor (feltételezve, hogy nem használja a DPS-t) kövesse az alábbi lépéseket a következő sorrendben:

  1. Kövesse ezt az útmutatót az eszközidentitások exportálásához és importálásához a régi IoT Hubról az újba
  2. Az összes IoT Edge-telepítés és -konfiguráció újrakonfigurálása az új IoT Hubon
  3. Az összes szülő-gyermek eszközkapcsolat újrakonfigurálása az új IoT Hubon
  4. Frissítse az egyes eszközöket, hogy az új IoT Hub-gazdagépnévre mutasson (iothub_hostname alatta [provisioning]config.toml)
  5. Ha úgy döntött, hogy kizárja a hitelesítési kulcsokat az eszköz exportálása során, konfigurálja újra az egyes eszközöket az új IoT Hub által megadott új kulcsokkal (device_id_pk a [provisioning.authentication] következő alatt config.toml)
  6. Először indítsa újra a legfelső szintű parent Edge-eszközt, győződjön meg arról, hogy működik
  7. Indítsa újra az összes eszközt hierarchiaszinten felülről lefelé haladva

Az IoT Edge alacsony üzenetteljesítményű, ha földrajzilag távol van az IoT Hubtól

Hibajelenségek

Az Azure IoT Hubtól földrajzilag távoli Azure IoT Edge-eszközök a vártnál alacsonyabb üzenet átviteli sebességgel rendelkeznek.

Ok

Az eszköz és az IoT Hub közötti nagy késés a vártnál alacsonyabb üzenetteljesítményt okozhat. Az IoT Edge alapértelmezett üzenetkötegmérete 10. Ez korlátozza az egyetlen kötegben küldött üzenetek számát, ami növeli az eszköz és az IoT Hub közötti ciklikus utazások számát.

Megoldás

Próbálja meg növelni az IoT Edge Hub MaxUpstreamBatchSize környezeti változóját. Így több üzenet küldhető egyetlen kötegben, ami csökkenti az eszköz és az IoT Hub közötti oda-vissza utazások számát.

Az Azure Edge Hub környezeti változóinak beállítása az Azure Portalon:

  1. Lépjen az IoT Hubra, és válassza az Eszközök lehetőséget az Eszközfelügyelet menüben.
  2. Válassza ki a frissíteni kívánt IoT Edge-eszközt.
  3. Válassza a Modulok beállítása lehetőséget.
  4. Válassza a Futtatókörnyezet Gépház lehetőséget.
  5. Az Edge Hub modul beállításai lapon adja hozzá a MaxUpstreamBatchSize környezeti változót Szám típusként 20 értékkel.
  6. Válassza az Alkalmazás lehetőséget.

Következő lépések

Úgy gondolja, hogy hibát talált az IoT Edge platformon? Küldjön be egy problémát , hogy tovább fejlődhessünk.

Ha további kérdései vannak, hozzon létre egy támogatási kérést a segítségért.