Az Azure IoT Edge gyakori problémáinak megoldásai
A következőkre vonatkozik: IoT Edge 1.5
Fontos
Az IoT Edge 1.5 LTS a támogatott kiadás. 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, amelyek a motor által indított összes tárolómodulra vonatkoznak. Hozzon létre egy nevű daemon.json
fá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.json
talá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
Ellenőrizze a Docker-hálózat MTU-beállítását.
docker network inspect <network name>
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:
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.
Állítsa le és távolítsa el az Azure-hálózatot.
docker network rm azure-iot-edge
Hozza létre újra az Azure-hálózatot.
docker network create --opt com.docker.network.driver.mtu=1430 azure-iot-edge
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:
Lépjen az IoT Hubra, és válassza az Eszközök lehetőséget az Eszközfelügyelet menüben.
Válassza ki a frissíteni kívánt IoT Edge-eszközt.
Válassza a Modulok beállítása lehetőséget.
Válassza a Futtatókörnyezet beállításai lehetőséget.
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.
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:
Nyissa meg az IoT Edge-eszközre alkalmazott deployment.json fájlt.
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" }
Távolítsa el a
createOptions
vonalat és a záró vesszőt azimage
előtte lévő sor végén:"edgeHub": { "restartPolicy": "always", "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.5", "status": "running", "type": "docker" }
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:
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örnyezeti beállításainak megadása lehetőséget.
Hozzon létre egy környezeti változót az IoT Edge Hub OptimizeForPerformance modulhoz igaz/hamis típusú, Hamis értékre állítva.
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" }
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 edgeAgent
IoT 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/*.sock
hagyja meg, mivel a iotedge
felhasználó nem tud írni /var/run/iotedge
, ezért nem tudja feloldani és csatlakoztatni a szoftvercsatornákat. A CentOS az élet vége (EOL). További információ: CentOS End Of Life útmutató.
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/
.
- 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 - Az iotedge konfigurációjának módosítása mindkét
connect
szakaszban éslisten
szakaszban való használatra/var/lib/iotedge/*.sock
- Ha már rendelkezik modulokkal, azok a régi
/var/run/iotedge/*.sock
csatlakoztatásokkal rendelkeznek, ígydocker rm -f
azok is.
Az üzenetsor tisztítása lassú
Hibajelenségek
Az üzenetsor nem törlődik az üzenetek feldolgozása után. Az üzenetsor idővel növekszik, és végül az IoT Edge-futtatókörnyezet elfogy a memóriája.
Ok
Az üzenettörlési időközt a TTL (élettartam) ügyfélüzenet és az EdgeHubMessageCleanupIntervalSecs környezeti változója szabályozza. Az alapértelmezett üzenet TTL értéke két óra, az alapértelmezett MessageCleanupIntervalSecs érték pedig 30 perc. Ha az alkalmazás az alapértelmezettnél rövidebb TTL-értéket használ, és nem módosítja a MessageCleanupIntervalSecs értéket, a lejárt üzenetek a következő törlési időközig nem törlődnek.
Megoldás
Ha az alkalmazás TTL-értékét az alapértelmezettnél rövidebbre módosítja, módosítsa a MessageCleanupIntervalSecs értéket is. A MessageCleanupIntervalSecs értéknek jelentősen kisebbnek kell lennie, mint az ügyfél által használt legkisebb TTL-érték. Ha például az ügyfélalkalmazás öt perces TTL-t határoz meg az üzenetfejlécben, állítsa a MessageCleanupIntervalSecs értéket egy percre. Ezek a beállítások biztosítják, hogy az üzenetek 6 (5 + 1) percen belül törlődjenek.
A MessageCleanupIntervalSecs érték konfigurálásához állítsa be a környezeti változót az IoT Edge hub modul üzembehelyezési jegyzékében. A futtatókörnyezet környezeti változóinak beállításáról további információt az Edge Agent és az Edge Hub környezeti változói című témakörben talál.
Az IoT Edge Hub jelentései System.FormatException amqp protokoll használatával
Hibajelenségek
Ha egy IoT Edge-eszközről egy IoT Hubra irányít üzeneteket az AMQP protokoll használatával, és a iothub-creation-time-utc
tulajdonságot a kimenő eszközüzeneteken állítja be, az IoT Edge Hub hibát jelez System.FormatException
. A hibaüzenet a következőhöz hasonló:
System.FormatException: String '2024-12-01T00:00:0.000Z' was not recognized as a valid DateTime.
Ok
Az iot-hub-creation-time-utc
érték nem felel meg a szigorú formázási feltételeknek. Az Edge Hub formátumához az ISO 8601 egy részhalmaza szükséges.
Megoldás
Ez egy ismert probléma az AMQP protokollhoz tartozó IoT Edge Hubban. Jelenleg a probléma javítása folyamatban van. Az MQTT protokoll nem rendelkezik ezzel a problémával.
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.
Az Azure Portalon lépjen a virtuális gép áttekintési oldalára.
Nyissa meg a konfigurációs panelt a Nem konfigurált hivatkozás kiválasztásával (ha a virtuális gép új), vagy válassza ki a meglévő DNS-nevet az Essentials>DNS-név alatt. Ha a virtuális gép már konfigurálta a DNS-nevet, nem kell újat konfigurálnia.
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.
Másolja ki az új DNS-nevet, amelynek a következő formátumban kell lennie:
<DNSnamelabel>.<vmlocation.cloudapp.azure.com>.Az IoT Edge-eszközön nyissa meg a konfigurációs fájlt.
sudo nano /etc/aziot/config.toml
Cserélje le a DNS-név értékét
hostname
.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.
Nyissa meg a sysctl.conf fájlt.
sudo nano /etc/sysctl.conf
Adja hozzá a következő sort a fájlhoz.
net.ipv4.ip_forward=1
Mentse és zárja be a fájlt.
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ött lévő IoT Edge nem tud HTTP-kéréseket végrehajtani, és nem tudja 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ött lévő IoT Edge nem tud HTTP-kéréseket végrehajtani, és nem tudja 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 edgeAgent
edgeHub
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:
- 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
- Az összes IoT Edge-telepítés és -konfiguráció újrakonfigurálása az új IoT Hubon
- Az összes szülő-gyermek eszközkapcsolat újrakonfigurálása az új IoT Hubon
- Frissítse az egyes eszközöket, hogy az új IoT Hub-gazdagépnévre mutasson (
iothub_hostname
alatta[provisioning]
config.toml
) - 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ő alattconfig.toml
) - Először indítsa újra a legfelső szintű parent Edge-eszközt, győződjön meg arról, hogy működik
- 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:
- Lépjen az IoT Hubra, és válassza az Eszközök lehetőséget az Eszközfelügyelet menüben.
- Válassza ki a frissíteni kívánt IoT Edge-eszközt.
- Válassza a Modulok beállítása lehetőséget.
- Válassza a Futtatókörnyezet beállításai lehetőséget.
- 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.
- 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.