Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:
IoT Edge 1.5
Fontos
IoT Edge 1.5 LTS a támogatott kiadás. IoT Edge 1,4 LTS 2024. november 12-én véget ért. Ha korábbi kiadást használ, tekintse meg a Update IoT Edge című témakört.
Ez a cikk IoT Edge megoldások használatakor előforduló gyakori problémák azonosítására és megoldására használható. Az IoT Edge eszköz naplóinak és hibáinak megtalálásával kapcsolatos további információért lásd: Hibaelhárítás az IoT Edge eszközén.
Ellátás és üzembe helyezés
IoT Edge modul telepítése sikeresen megtörtént, majd eltűnik az eszközről
Hibajelenségek
Egy IoT Edge eszköz moduljainak beállítása után a modulok sikeresen üzembe helyezhetők, de néhány perc múlva eltűnnek az eszközről és az eszköz részleteiről a Azure portálon. 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 Set modulok funkció az Azure portálon vagy az Egy eszköz telepítésének létrehozása funkció a Visual Studio Code-ban rövid időre életbe lép. A látja az ön által meghatározott modulok elindulását az eszközön. 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 ü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ókért lásd: Az IoT Edge automatikus központi telepítések megértése önálló készülékekhez vagy nagy léptékben.
IoT Edge-futtatókörnyezet
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 mutatják, hogy a IoT Edge ügynök megpróbál csatlakozni IoT Hub AMQP-n keresztül, majd megpróbál csatlakozni az AMQP használatával a WebSocketen keresztül. Ha a kapcsolat meghiúsul, a IoT Edge ügynök kilép.
Példa az „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 a 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 megszakad, megpróbálkozik a WebSocketekkel (443-as port).
A IoT Edge futtatókörnyezet minden modulhoz beállít egy hálózatot, amelyen kommunikálni szeretne. Linux rendszeren ez a hálózat egy hídhálózat. A Windows nat-ot használ. Ez a probléma gyakoribb a NAT-hálózatot használó Windows tárolókat használó Windows eszközökön.
Megoldás
Győződjön meg arról, hogy a hídhoz vagy NAT-hálózathoz rendelt IP-címeknek van internetes útvonala. Néha a gazdagépen egy VPN-konfiguráció felülírja 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....
Ha
sudo iotedge checkfuttat egy eszközön, az Kontainer motor nincs konfigurálva DNS-kiszolgálóbeállítással, ami hatással lehet a IoT Hub való kapcsolatra. Az ajánlott eljárásokért lásd: https://aka.ms/iotedge-prod-checklist-dns.
Ok
- Alapértelmezés szerint IoT Edge saját elkülönített tárolóhálózaton 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 IoT Edge illesztőtelepítését használja, a Docker konfigurációs fájlja más helyen található. 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. Ezek a beállítások a motor által elinduló összes tárolómodulra vonatkoznak. Hozzon létre egy daemon.jsonnevű fájlt, és 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ókkal 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
Option 2: A DNS-kiszolgáló beállítása modulonként IoT Edge üzembe helyezésben
Az egyes modulok createOptions szakaszához beállíthatja a DNS-kiszolgálót az IoT Edge üzembe helyezésben. 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, edgeAgent elveszíti a kapcsolatot IoT Hub, és nem tud új üzembe helyezéseket fogadni a probléma megoldásához. A probléma megoldásához újratelepítheti a IoT Edge futtatókörnyezetet. A IoT Edge új példányának telepítése előtt mindenképpen távolítsa el a 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 illesztésként telepíti a IoT Edge, a --container-engine-config-file paraméterrel adja meg a Docker-konfigurációs fájl 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. Jelentés hibaüzenete, hogy az IoT Edge snap nem rendelkezik olvasási hozzáféréssel a Docker snaphez. 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-kapcsolattal jelentkezik, és "üres Edge ügynök konfigurációját" jelzi, ami "ideiglenes hálózati hibát" okoz.
Hibajelenségek
Az LTE-kapcsolattal konfigurált eszközöknél problémákat tapasztal az üzembe helyezés során definiált modulok indításakor. A edgeAgent nem tud csatlakozni az IoT Hubhoz, és "üres edge agent konfiguráció" valamint "átmeneti hálózati hiba történt" üzeneteket jelent.
Ok
Egyes hálózatok csomagterheléssel rendelkeznek, ami miatt az alapértelmezett Docker-hálózati MTU (1500) túl magas, és a csomagok töredezettségét okozza. Ez a tö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
Megjegyzé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ő megoldásokkal:
Hozzon létre egy új hálózatot. Például,
docker network create --opt com.docker.network.driver.mtu=1430 test-mtuA példában az eszköz MTU-beállítása 1430. Állítsa a Docker-hálózat MTU-jának 1430-ra.
Állítsa le és távolítsa el a Azure hálózatot.
docker network rm azure-iot-edgeHozza létre újra a Azure hálózatot.
docker network create --opt com.docker.network.driver.mtu=1430 azure-iot-edgeTá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
IoT Edge ügynök nem fér hozzá egy modul képéhez (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.
IoT Edge ügynök túlzott identitáshívásokat indít
Hibajelenségek
Az IoT Edge ügynök túl sok identitáshívást indít az Azure IoT Hubra.
Ok
Az eszköztelepítési jegyzék helytelen konfigurálása sikertelen üzembe helyezést okoz az eszközön. 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, akkor a 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 a Azure portálon. Javítsa ki a hibákat, és telepítse újra a jegyzékfájlt az eszközre.
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épen egy másik folyamat kötött le egy portot, amelyet az edgeHub modul megpróbál lefoglalni. A 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 a IoT Edge eszköz átjáróeszközként működik, keresse meg és állítsa le a 443-as, 5671-ös 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 átjáróként használnia a IoT Edge eszközt, távolítsa el a portkötéseket az EdgeHub modul létrehozási beállításaiból. A létrehozási beállításokat a Azure portálon vagy közvetlenül a deployment.json fájlban módosíthatja.
A Azure portálon:
Nyissa meg az IoT Hubot, é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 a IoT Edge eszközre alkalmazott deployment.json fájlt.
Keresse meg a
edgeHubbeá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
createOptionsvonalat és a záró vesszőt azimageelő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 Create lehetőséget a IoT Edge eszközre való ismételt alkalmazásához.
IoT Edge modul nem tud üzenetet küldeni az edgeHubnak, és 404-et ad vissza
Hibajelenségek
Az egyéni IoT Edge modul nem tud üzenetet küldeni a IoT Edge központnak, és 404 Module not found hibát ad vissza. A 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
Biztonsági okokból a IoT Edge futtatókörnyezet kényszeríti a folyamatazonosítást az edgeHubhoz csatlakozó összes modul esetében. 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 egy másik folyamatazonosítóról próbál üzenetet küldeni, a futtatókörnyezet elutasítja az üzenetet, és egy 404-ben megjelenő hibaüzenetet ad vissza.
Megoldás
Az 1.0.7-es verziótól kezdve minden modulfolyamat csatlakozhat. További információ: 1.0.7 kiadásváltozási napló.
Ha nem tud frissíteni az 1.0.7-es verzióra, kövesse az alábbi lépéseket. Győződjön meg arról, hogy az egyéni IoT Edge modul mindig ugyanazzal a folyamatazonosítóval küld üzeneteket az edgeHubra. Használja például a ENTRYPOINT parancsot a CMD Docker-fájlban lévő parancs helyett. A CMD parancs egy folyamatazonosítót eredményez a modulhoz és egy másik folyamatazonosítót a fő programot futtató bash parancshoz. A ENTRYPOINT parancs egyetlen folyamatazonosítót eredményez.
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é tartoznak az IoT Edge központi modul memóriakihasználtság miatti kivételei, az alsóbb szintű eszközök kapcsolódási hibái, vagy az eszköz néhány óra elteltével már nem küld telemetriai üzeneteket.
Ok
A IoT Edge futtatókörnyezet részét képező IoT Edge hub alapértelmezés szerint teljesítményre van optimalizálva, és nagy mennyiségű memóriát 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
A IoT Edge hubhoz állítson be egy környezeti változót OptimizeForPerformancefalse értékre. A környezeti változók kétféleképpen állíthatók be:
A Azure portálon:
Az IoT Hubban válassza ki az IoT Edge eszközt. Az eszköz részletei 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 a IoT Edge OptimizeForPerformance nevű központi modulhoz True/False típussal, és állítsa False értékre.
A módosítások mentéséhez válassza az Alkalmaz elemet, majd 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 .
A biztonsági démon nem indítható el
Hibajelenségek
A biztonsági démon nem indítható el, és a modultárolók nem jönnek létre. A IoT Edge szolgáltatás nem indul el edgeAgent, edgeHub vagy más egyéni modullal. A naplókban ez a aziot-edged hibaüzenet 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
- Az ok: Engedély megtagadva (13-as rendszerhiba)
Ok
A CentOS 7 kivételével minden Linux-disztribúció esetében a IoT Edge alapértelmezés szerint systemd szoftvercsatorna-aktiválást használ. Ha úgy módosítja a konfigurációs fájlt, hogy letiltsa a socket aktiválást, de megtartja az URL-címeket /var/run/iotedge/*.sock, engedélyezési hiba jelenik meg. A iotedge felhasználó nem tud írni /var/run/iotedge, ezért nem tudja feloldani és csatlakoztatni a socketeket. A CentOS támogatása megszűnt (EOL). További információ: CentOS End Of Life útmutató.
Megoldás
Ne tiltsa le a soket aktiválást olyan disztribúción, amely támogatja a soket aktiválást. Ha azonban nem szeretné használni a csatlakozók aktiválását, helyezze be a csatlakozókat /var/lib/iotedge/.
- Futtassa
systemctl disable iotedge.socket iotedge.mgmt.socket, hogy letiltsa a socket egységeket, így a systemd nem indítja el azokat. - Módosítsa az iotedge konfigurációját, hogy mind a
/var/lib/iotedge/*.sock, mind aconnect, mind alistenszakaszban szerepeljen. - Ha már rendelkezik modulokkal, azok a régi
/var/run/iotedge/*.sockcsatlakozókkal rendelkeznek, ezért futtassa adocker rm -fparancsot azok eltávolításához.
Az üzenetsor karbantartása lassú
Hibajelenségek
Az üzenetsor nem törölhető az üzenetek feldolgozása után. Az üzenetsor idővel növekszik, és végül a IoT Edge futtatókörnyezet elfogy a memóriája.
Ok
A TTL (élettartam) ügyfélüzenet és az EdgeHubMessageCleanupIntervalSecs környezeti változó szabályozza az üzenetek törlésének időközét. 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 az MessageCleanupIntervalSecs értéket, a lejárt üzeneteket a rendszer a következő törlési időközig nem törli.
Megoldás
Ha az alkalmazás TTL-értékét az alapértelmezettnél rövidebb értékre módosítja, módosítsa az MessageCleanupIntervalSecs értéket is. Az 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 az 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 a IoT Edge központi 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 a Edge Agent és az Edge Hub környezeti változói című témakörben talál.
Az egyéni modulok leállítják az üzenetek küldését az Edge hitelesítésszolgáltatói tanúsítványának megújítása után
Hibajelenségek
Az egyéni modulok egy bizonyos futási idő után, általában 24-30 nap elteltével, megszűnnek kommunikálni az EdgeHubbal az alapértelmezett 30 napos kezdő Edge CA tanúsítvány használatakor, vagy a konfigurált tanúsítvány élettartamának 80%-ánál. Az EdgeHub és az EdgeAgent modulok továbbra is futnak, de az egyéni modulok már nem tudnak üzeneteket küldeni vagy fogadni az EdgeHubon keresztül.
Ok
Amikor az Edge HITELESÍTÉSSZOLGÁLTATÓ tanúsítványa automatikusan megújul, IoT Edge leállítja és újraindítja az összes modult, hogy új kiszolgálótanúsítványokat kapjanak. Az újraindítás után a moduloknak újra létre kell tenniük a kapcsolatot az EdgeHubtal. Ha egy egyéni modul nem implementálja a kapcsolat újrapróbálkozási logikáját, a modul elindul, de nem tud újracsatlakozni az EdgeHubhoz, mert az új EdgeHub-kiszolgálótanúsítvány még nem érhető el, vagy a modul nem próbálja újra a kezdeti kapcsolati kísérletet.
Megoldás
Ellenőrizze az EdgeAgent-naplókban a tanúsítványmegújítási eseményeket:
sudo iotedge logs edgeAgent | grep -i "renewal"
A probléma megoldása:
- Ellenőrizze, hogy minden egyéni modul szerepel-e
"restartPolicy": "always"az üzembe helyezési jegyzékben. - A kapcsolat újrapróbálkozási logikáját egyéni modulokban valósítja meg. Használja az Azure IoT eszköz SDK beépített újrapróbálkozási szabályzatait, vagy adjon hozzá exponenciális backoff újrapróbálkozási logikát, hogy a modul újraindítás után automatikusan újracsatlakozjon az EdgeHubhoz. További információ: A kapcsolat és a megbízható üzenetkezelés Azure IoT Hub eszköz SDK-kkal.
- A megújítási zavar bekövetkezésének ellenőrzéséhez állítsa be a százalékos érték helyett az
thresholdabszolút időpontot. Példáulthreshold = "10d"a tanúsítvány lejárata előtt 10 nappal aktiválja a megújítást. További információt az Edge ca megújítási tervében talál.
IoT Edge Hub a System.FormatException hibát jelenti AMQP protokoll használatakor
Hibajelenségek
Amikor egy IoT Edge eszközről egy IoT Hub az AMQP protokoll használatával irányítja át az üzeneteket, és beállítja a iothub-creation-time-utc tulajdonságot a kimenő eszközüzeneteken, a IoT Edge Hub System.FormatException hibát jelez. 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 a probléma az AMQP protokollhoz tartozó IoT Edge Hub ismert problémája. A termékcsapat jelenleg vizsgálja a javítást. Az MQTT protokoll nem rendelkezik ezzel a problémával.
hálózat
IoT Edge biztonsági démon érvénytelen gazdagépnév esetén hibát jelez.
Hibajelenségek
Sikertelen az IoT Edge Security Manager naplóinak ellenőrzése, és a következő üzenet jelenik meg:
Error parsing user input data: invalid hostname. Hostname cannot be empty or greater than 64 characters
Ok
A IoT Edge futtatókörnyezet támogatja a 64 karakternél rövidebb gazdagépneveket. A fizikai gépek általában nem rendelkeznek hosszú gazdagépnévvel, de a probléma gyakoribb a virtuális gépeken. Az Azure által üzemeltetett Windows virtuális gépek automatikusan létrehozott gazdagépnevei általában hosszúak.
Megoldás
Ha ezt a hibát látja, oldja fel a virtuális gép DNS-nevének konfigurálásával, majd állítsa be a DNS-nevet állomásnévként a beállítási parancsban.
A Azure portálon nyissa meg a virtuális gép áttekintési oldalát.
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. 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>.Nyissa meg a konfigurációs fájlt az IoT Edge eszközön.
sudo nano /etc/aziot/config.tomlCserélje le a
hostnameértékét a DNS-nevére.Mentse és zárja be a fájlt, majd alkalmazza a módosításokat a IoT Edge.
sudo iotedge config apply
IoT Edge modul csatlakozási hibákat jelez
Hibajelenségek
IoT Edge modulok, amelyek közvetlenül csatlakoznak a felhőszolgáltatásokhoz, beleértve a futtatókörnyezeti modulokat is, leállnak a várt módon és olyan hibákat adnak vissza, amelyek a kapcsolat vagy a hálózati problémákkal kapcsolatosak.
Ok
A tárolók ip-csomagtovábbításra támaszkodnak az internethez való csatlakozáshoz, hogy kommunikálni tudjanak a felhőszolgáltatásokkal. A Docker alapértelmezés szerint engedélyezi az IP-csomagok továbbítását, de ha letiltja, a felhőszolgáltatásokhoz csatlakozó modulok nem a várt módon működnek. 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.confAdja hozzá a következő sort a fájlhoz.
net.ipv4.ip_forward=1Mentse é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.
IoT Edge átjáró mögötti eszköz nem tud HTTP-kéréseket végrehajtani vagy elindítani az EdgeAgent modult
Hibajelenségek
A IoT Edge futtatókörnyezet aktív egy érvényes konfigurációs fájllal, de nem tudja elindítani a 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 jelennek meg.
Ok
IoT Edge átjáró mögötti eszközök a konfigurációs fájl parent_hostname mezőjében megadott szülő IoT Edge eszközről kapják le a modulképeiket. A Could not perform HTTP request hiba azt jelenti, hogy az alsóbb rétegbeli eszköz nem éri el 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.
IoT Edge nem tud csatlakozni a gateway mögött, ha az egyik IoT-hubról a másikra migrál.
Hibajelenségek
Ha IoT Edge eszközök hierarchiáját migrálja egyik IoT hubból egy másikba, a legfelső szintű IoT Edge szülőeszköz csatlakozik az IoT Hubhoz, azonban az alsóbb rétegbeli IoT Edge eszközök nem képesek csatlakozni. A naplóbejegyzések jelentése Unable to authenticate client downstream-device/$edgeAgent with module credentials.
Ok
Az áttelepítés nem frissítette megfelelően az alsóbb rétegbeli eszközök hitelesítő adatait. A probléma miatt a edgeAgent és edgeHub modulok hitelesítési típusa none, ami az alapértelmezett, ha nem állítja be explicit módon. 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
Amikor az új IoT Hubra migrál (feltételezve, hogy nem DPS-t használ), 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 üzembe helyezé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_hostnamealatta[provisioning]config.toml) - Ha úgy döntött, hogy az eszköz exportálása során kihagyja a hitelesítési kulcsokat, konfigurálja újra az egyes eszközöket az új IoT hub által megadott új kulcsokkal (
device_id_pka[provisioning.authentication]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
IoT Edge üzenetátvitele alacsony, ha földrajzilag távol helyezkedik el az IoT Hubtól.
Hibajelenségek
Azure IoT Edge eszközök, amelyek földrajzilag távol helyezkednek el az Azure IoT Hubtól, alacsonyabb üzenetteljesítményt nyújtanak.
Ok
Az eszköz és a IoT Hub közötti nagy késés alacsonyabb üzenet-átviteli sebességet okoz. IoT Edge az alapértelmezett 10-es üzenetkötegméretet használja. Ez a kötegméret korlátozza az egyetlen kötegben küldött üzenetek számát, ami növeli az eszköz és a IoT Hub közötti ciklikus utazások számát.
Megoldás
Próbálja meg növelni a IoT Edge Hub MaxUpstreamBatchSize környezeti változót. Ez a módosítás több üzenetet küld egyetlen kötegben, ami csökkenti az eszköz és a IoT Hub közötti ciklikus utazások számát.
Azure Edge Hub környezeti változóinak beállítása a Azure portálon:
- Lépjen az IoT Hubhoz, és válassza az Eszközök lehetőséget az Eszközkezelés 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 lehetőséget.
Következő lépések
Úgy gondolja, hogy hibát talált a IoT Edge platformon? Jelentsen egy problémát, hogy a termékcsapat tovább fejleszthesse a platformot.
Ha további kérdései vannak, hozzon létre egy Support kérést segítségért.