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őkre vonatkozik:
IoT Edge 1.1
Fontos
Az IoT Edge 1.1 támogatási dátumának vége 2022. december 13.,. A termék, szolgáltatás, technológia vagy API támogatásáról a Microsoft-termékek életciklusa című leírásból tájékozódhat. További információ az IoT Edge legújabb verziójára való frissítésről: IoT Edge frissítése.
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.
Ellátá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.
Oka
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. Az Azure Portal Modulok beállítása funkciója vagy a Visual Studio Code Telepítés létrehozása egyetlen eszközhöz funkció egy rövid időre érvénybe lép. Látod, ahogy az általad meghatározott modulok elindulnak 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 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.
Nem lehet lekérni az IoT Edge futtatókörnyezeti naplóit Windows rendszeren
Hibajelenségek
A Windows rendszeren való használatkor Get-WinEvent eventLogException-t kap.
Oka
A Get-WinEvent PowerShell-parancs egy beállításjegyzéki bejegyzés jelenlétére támaszkodik, hogy megtalálja a naplókat egy adott ProviderName alapján.
Megoldás
Állítson be egy beállításjegyzék-bejegyzést az IoT Edge démonhoz. Hozzon létre egy iotedge.reg fájlt a következő tartalommal, és importálja azt a Windows-beállításjegyzékbe duplán kattintva vagy a reg import iotedge.reg parancs használatával:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\iotedged]
"CustomSource"=dword:00000001
"EventMessageFile"="C:\\ProgramData\\iotedge\\iotedged.exe"
"TypesSupported"=dword:00000007
DPS-ügyfélhiba
Hibajelenségek
Az IoT Edge nem indul el hibaüzenettel failed to provision with IoT Hub, and no valid device backup was found dps client error.
Oka
A csoportregisztrációval IoT Edge-eszközt hozhat létre egy IoT Hubhoz. Az IoT Edge-eszköz egy másik központba kerül. A regisztráció a DPS-ben törlődik. Új regisztráció jön létre a DPS-ben az új központhoz. Az eszköz nincs újraprovisionálva.
Megoldás
- Ellenőrizze, hogy a DPS-hitelesítő adatai helyesek-e.
- Alkalmazza a konfigurációt
sudo iotedge apply configsegítségével. - Ha az eszköz nincs újrakonfigurálva, indítsa újra az eszközt a
sudo iotedge system restartsegítségével. - Ha az eszköz nincs újrakonfigurálva, kényszerítse az újrakonfigurálást a következővel:
sudo iotedge system reprovision.
Az automatikus újraépítéshez állítsa be dynamic_reprovisioning: true az eszközkonfigurációs fájlban. Ha ezt a jelzőt igaz értékre állítja, bekapcsolódik a dinamikus újraelosztási funkcióba. Az IoT Edge észleli azokat a helyzeteket, amikor úgy tűnik, hogy az eszköz újraépítésre került a felhőben azáltal, hogy figyeli a saját IoT Hub-kapcsolatát bizonyos hibák esetén. Az IoT Edge úgy válaszol, hogy leállítja az összes Edge-modult és magát. A démon következő indításakor megkísérli újra létrehozni ezt az eszközt az Azure-ral, hogy megkapja az új IoT Hub-kiépítési információkat.
Külső kiépítés használatakor a démon a leállítás előtt értesíti a külső kiépítési végpontot az újraépítési eseményről. További információ: IoT Hub-eszközök újraépítési fogalmai.
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éldák az edgeAgent naplóira:
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...
Oka
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, akkor megpróbálja meghívni a WebSockets-t (443-as port).
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ép VPN-konfigurációja 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 folyamatosan jelenti az "üres konfigurációs fájlt...".
Oka
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.
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éldául:
{
"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 a megfelelő helyre a platformhoz:
| Platforma | Elhelyezkedés |
|---|---|
| Linux | /etc/docker |
| Windows-gazdagép Windows-tárolókkal | C:\ProgramData\iotedge-moby\config |
Ha a hely már tartalmaz 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.
| Platforma | Parancs |
|---|---|
| Linux | sudo systemctl restart docker |
| Windows (Rendszergazdai PowerShell) | Restart-Service iotedge-moby -Force |
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éldául:
"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.
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.
Oka
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-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)
Oka
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ásai között törölje a Beállítások létrehozása szövegmezőt.
Mentse a módosításokat, és hozza létre az üzembe helyezést.
A deployment.json fájlban:
Nyissa meg az 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": { "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.1", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }, "type": "docker", "status": "running", "restartPolicy": "always" }Távolítsa el a
createOptionsvonalat és a záró vesszőt azimageelőtte lévő sor végén:"edgeHub": { "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.1" }, "type": "docker", "status": "running", "restartPolicy": "always" }Mentse a fájlt, és alkalmazza újra az IoT Edge-eszközre.
Az IoT Edge-modul nem küld üzenetet az edgeHubra 404-es hibával
Hibajelenségek
Az egyéni IoT Edge-modul egy 404-es Module not found hibával nem tud üzenetet küldeni az IoT Edge-központnak. 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 )
Oka
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óból küld üzenetet, a modul egy 404-ben megjelenő hibaüzenettel utasítja el 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 győződjön meg róla, hogy a ENTRYPOINT parancsot használja a CMD helyett. 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 hub modul memóriahibája, a downstream eszközök kapcsolódási hibája, vagy az eszköz néhány óra elteltével nem küld telemetriai üzeneteket.
Oka
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 modulhoz, amelynek neve OptimizeForPerformance , amely hamis értékre van állítva.
Az üzembehelyezési jegyzékben:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.1",
"createOptions": <snipped>
},
"env": {
"OptimizeForPerformance": {
"value": "false"
}
},
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. Az IoT Edge szolgáltatás nem indítja el a edgeAgent, edgeHub és más 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
- Az okozó: Engedély megtagadva (Rendszerhiba 13)
Oka
A CentOS 7 kivételével minden Linux-disztribúció esetében az IoT Edge alapértelmezett konfigurációja a systemd socket aktiválás. Engedélyhiba történik, ha úgy módosítja a konfigurációs fájlt, hogy nem használja a csatlakozások aktiválását, de az URL-eket úgy hagyja, mint a /var/run/iotedge/*.sock van, mivel a iotedge felhasználó nem tud írni /var/run/iotedge-hez, így nem képes feloldani és csatlakoztatni a csatlakozásokat.
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 foglalatok aktiválását, a foglalatokat helyezze /var/lib/iotedge/.
- Futtassa
systemctl disable iotedge.socket iotedge.mgmt.socketa socket egységek letiltásához, hogy a rendszer ne indítsa el őket szükségtelenül - Módosítsa az iotedge konfigurációt, hogy a
/var/lib/iotedge/*.sockmind aconnectéslistenszakaszokban használatos legyen. - Ha már rendelkezik modulokkal, azok a régi
/var/run/iotedge/*.sockcsatlakoztatásokkal rendelkeznek, ígydocker rm -fazok is.
Nem sikerült elindítani a modult az operációs rendszer eltérése miatt
Tünet
Az edgeHub-modul nem indul el az IoT Edge 1.1-es verziójában.
Oka
A Windows-modul olyan Windows-verziót használ, amely nem kompatibilis a gazdagépEn futó Windows verziójával. Az IoT Edge Windows 1809-es buildje 17763-as buildre van szükség a modul lemezképének alaprétegeként, de egy másik verzió van használatban.
Megoldás
Ellenőrizze a különböző Windows operációs rendszerek verzióját a gazdagép- és tárolórendszerképek eltéréseinek elhárításában. Ha az operációs rendszerek eltérőek, frissítse őket az IoT Edge Windows 1809 17763-es buildre, és építse újra a modulhoz használt Docker-rendszerképet.
Kapcsolatteremtés
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
Oka
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.
Válassza a konfigurálás lehetőséget a 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év címkéjének, és válassza a Mentés lehetőséget.
Másolja ki az új DNS-nevet, amelynek DNSnamelabel< formátumban> kell lennie.<vmlocation.cloudapp.azure.com>.
A virtuális gépen belül az alábbi paranccsal állítsa be az IoT Edge-futtatókörnyezetet a DNS-nevével:
Linux rendszeren:
sudo nano /etc/iotedge/config.yamlWindows rendszeren:
notepad C:\ProgramData\iotedge\config.yaml
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.
Oka
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.
Windows rendszeren:
Nyissa meg a Run alkalmazást.
Írja be
regedita szövegmezőbe, és válassza az Ok gombot.A Beállításszerkesztő ablakban keresse meg a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
Keresse meg az IPEnableRouter paramétert.
Ha a paraméter létezik, állítsa a paraméter értékét 1 értékre.
Ha a paraméter nem létezik, adja hozzá új paraméterként a következő beállításokkal:
Beállítás Érték Név IPEnableRouter Típus szerint REG_DWORD Érték 1
Zárja be a beállításszerkesztő ablakát.
Indítsa újra a rendszert a módosítások alkalmazásához.
Linux rendszeren:
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.
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.