Megosztás a következőn keresztül:


IoT Edge-eszköz hibaelhárítása

A következőkre vonatkozik: igen ikon IoT Edge 1.1

Fontos

Az IoT Edge 1.1 támogatási dátuma 2022. december 13. volt. 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. Az IoT Edge legújabb verziójára való frissítésről további információt az IoT Edge frissítése című témakörben talál.

Ha problémákat tapasztal az Azure IoT Edge környezetben való futtatásával kapcsolatban, ezt a cikket útmutatóként használhatja a hibaelhárításhoz és a diagnosztikához.

Futtassa az "ellenőrzés" parancsot

Az IoT Edge hibaelhárításának első lépése a check parancs használata, amely konfigurációs és kapcsolati tesztek gyűjteményét futtatja a gyakori problémák esetén. A check parancs az 1.0.7-es és újabb verziókban érhető el.

Feljegyzés

A hibaelhárító eszköz nem tudja futtatni a kapcsolati ellenőrzéseket, ha az IoT Edge-eszköz proxykiszolgáló mögött található.

A parancsot az check alábbiak szerint futtathatja, vagy a --help jelölőt is belefoglalva megtekintheti a lehetőségek teljes listáját:

Linuxon:

sudo iotedge check

Windows rendszeren:

iotedge check

A hibaelhárítási eszköz számos ellenőrzést futtat, amelyek az alábbi három kategóriába vannak rendezve:

  • A konfigurációellenőrzések olyan részleteket vizsgálnak meg, amelyek megakadályozhatják, hogy az IoT Edge-eszközök csatlakozzanak a felhőhöz, beleértve a konfigurációs fájllal és a tárolómotorral kapcsolatos problémákat is.
  • A kapcsolatellenőrzések ellenőrzik, hogy az IoT Edge-futtatókörnyezet hozzáfér-e a gazdaeszköz portjaihoz, és hogy az összes IoT Edge-összetevő csatlakozni tud-e az IoT Hubhoz. Ez az ellenőrzőkészlet hibákat ad vissza, ha az IoT Edge-eszköz proxy mögött található.
  • Az éles üzemkészség-ellenőrzések az ajánlott ajánlott gyártási eljárásokat keresik, például az eszköztanúsítványok (CA) tanúsítványainak állapotát és a modul naplófájljának konfigurációját.

Az IoT Edge ellenőrzőeszköz egy tárolóval futtatja a diagnosztikát. A tárolórendszerkép mcr.microsoft.com/azureiotedge-diagnostics:latesta Microsoft Container Registryen keresztül érhető el. Ha olyan eszközön kell ellenőrzést futtatnia, amely nem rendelkezik közvetlen internet-hozzáféréssel, az eszközöknek hozzá kell férnie a tárolólemezképhez.

Az eszköz által futtatott diagnosztikai ellenőrzésekről, többek között arról, hogy mi a teendő, ha hibaüzenetet vagy figyelmeztetést kap, tekintse meg az IoT Edge hibaelhárítási ellenőrzései című témakört.

Hibakeresési információk gyűjtése a "support-bundle" paranccsal

Ha naplókat kell gyűjtenie egy IoT Edge-eszközről, a legkényelmesebb módszer a support-bundle parancs használata. Ez a parancs alapértelmezés szerint összegyűjti a modulokat, az IoT Edge security managert és a tárolómotor naplóit, iotedge check a JSON-kimenetet és más hasznos hibakeresési információkat. Az egyszerű megosztás érdekében egyetlen fájlba tömöríti őket. A support-bundle parancs az 1.0.9-es és újabb verziókban érhető el.

Futtassa a support-bundle parancsot a --since jelölővel, és adja meg, hogy mennyi ideig szeretné lekérni a naplókat. Például 6h az elmúlt hat óra óta, 6d az elmúlt hat nap óta, 6m az elmúlt hat perc óta és így tovább kap naplókat. Adja meg a jelölőt a --help lehetőségek teljes listájának megtekintéséhez.

Linuxon:

sudo iotedge support-bundle --since 6h

Windows rendszeren:

iotedge support-bundle --since 6h

Alapértelmezés szerint a support-bundle parancs létrehoz egy support_bundle.zip nevű zip-fájlt abban a könyvtárban, ahol a parancsot meghívják. A jelölő --output használatával adjon meg egy másik elérési utat vagy fájlnevet a kimenethez.

A parancsról további információt a súgóban talál.

iotedge support-bundle --help

Az UploadSupportBundle beépített közvetlen metódushívásával is feltöltheti a támogatási csomag parancs kimenetét az Azure Blob Storage-ba.

Figyelmeztetés

A parancs kimenete support-bundle tartalmazhat gazdagépeket, eszköz- és modulneveket, a modulok által naplózott adatokat stb. Vegye figyelembe ezt, ha nyilvános fórumon osztja meg a kimenetet.

A futtatókörnyezetből gyűjtött metrikák áttekintése

Az IoT Edge futtatókörnyezeti moduljai metrikákat hoznak létre, amelyek segítenek az IoT Edge-eszközök állapotának monitorozásában és megértésében. Adja hozzá a metrikák gyűjtő modulját az üzemelő példányokhoz a metrikák gyűjtésének kezeléséhez és a felhőbe való küldéséhez a könnyebb monitorozás érdekében.

További információt a Metrikák összegyűjtése és átvitele című témakörben talál.

Az IoT Edge-verzió ellenőrzése

Ha az IoT Edge egy régebbi verzióját futtatja, az új verzióra történő frissítés megoldhatja a problémát. Az iotedge check eszköz ellenőrzi, hogy az IoT Edge biztonsági démon a legújabb verzió-e, de nem ellenőrzi az IoT Edge Hub és az ügynökmodulok verzióit. A futtatókörnyezeti modulok verziójának ellenőrzéséhez használja a parancsokat iotedge logs edgeAgent és iotedge logs edgeHuba . A verziószámot a rendszer a naplókban határozza meg a modul indításakor.

Az eszköz frissítésével kapcsolatos utasításokért lásd : IoT Edge biztonsági démon és futtatókörnyezet frissítése.

Az IoT Edge telepítésének ellenőrzése az eszközökön

Az IoT Edge telepítését az edgeAgent modul ikerpéldányának figyelésével ellenőrizheti az eszközökön.

A legújabb edgeAgent modul ikerpéldányának beszerzéséhez futtassa a következő parancsot az Azure Cloud Shellből:

az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>

Ez a parancs megjeleníti az edgeAgent jelentett összes tulajdonságát. Íme néhány hasznos, amely figyeli az eszköz állapotát:

  • futtatókörnyezet állapota
  • futásidejű kezdési idő
  • futtatókörnyezet utolsó kilépési ideje
  • futásidejű újraindítások száma

Ellenőrizze az IoT Edge biztonsági kezelőjének állapotát és naplóit

Az IoT Edge biztonsági kezelője felelős az olyan műveletekért, mint az IoT Edge-rendszer inicializálása az indításkor és a kiépítési eszközökön. Ha az IoT Edge nem indul el, a security manager naplói hasznos információkat nyújthatnak.

Linuxon:

  • Tekintse meg az IoT Edge biztonsági kezelőjének állapotát:

    sudo systemctl status iotedge
    
  • Tekintse meg az IoT Edge security manager naplóit:

    sudo journalctl -u iotedge -f
    
  • Az IoT Edge security manager részletesebb naplóinak megtekintése:

    1. Az IoT Edge démonbeállításainak szerkesztése:

      sudo systemctl edit iotedge.service
      
    2. Frissítse a következő sorokat:

      [Service]
      Environment=IOTEDGE_LOG=debug
      
    3. Indítsa újra az IoT Edge biztonsági démont:

      sudo systemctl cat iotedge.service
      sudo systemctl daemon-reload
      sudo systemctl restart iotedge
      

Windows rendszeren:

  • Tekintse meg az IoT Edge biztonsági kezelőjének állapotát:

    Get-Service iotedge
    
  • Tekintse meg az IoT Edge security manager naplóit:

    . {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
    
  • Csak az IoT Edge security manager-naplóinak utolsó 5 percét tekintheti meg:

    . {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog -StartTime ([datetime]::Now.AddMinutes(-5))
    
  • Az IoT Edge security manager részletesebb naplóinak megtekintése:

    1. Adjon hozzá egy rendszerszintű környezeti változót:

      [Environment]::SetEnvironmentVariable("IOTEDGE_LOG", "debug", [EnvironmentVariableTarget]::Machine)
      
    2. Indítsa újra az IoT Edge biztonsági démont:

      Restart-Service iotedge
      

A tárolónaplók hibáinak ellenőrzése

Az IoT Edge biztonsági démon futtatása után tekintse meg a tárolók naplóit a problémák észleléséhez. Kezdje az üzembe helyezett tárolókkal, majd tekintse meg az IoT Edge-futtatókörnyezetet alkotó tárolókat: edgeAgent és edgeHub. Az IoT Edge-ügynöknaplók általában információt nyújtanak az egyes tárolók életciklusáról. Az IoT Edge-központ naplói információt nyújtanak az üzenetkezelésről és az útválasztásról.

A tárolónaplókat több helyről is lekérheti:

Tárolónaplók törlése

Alapértelmezés szerint a Moby tárolómotor nem állítja be a tárolónapló méretkorlátait. Idővel ez azt eredményezheti, hogy az eszköz megtelik a naplókkal, és elfogy a lemezterület. Ha a nagyméretű tárolónaplók befolyásolják az IoT Edge-eszköz teljesítményét, az alábbi paranccsal kényszerítheti a tároló és a kapcsolódó naplók eltávolítását.

Ha továbbra is hibaelhárítást hajt végre, várjon, amíg megtekinti a tárolónaplókat, hogy elvégezhesse ezt a lépést.

Figyelmeztetés

Ha kényszeríti az edgeHub-tároló eltávolítását, miközben nem kézbesített üzenetnaplóval rendelkezik, és nincs beállítva gazdagéptároló , a nem kézbesített üzenetek elvesznek.

docker rm --force <container name>

A naplók folyamatos karbantartása és éles forgatókönyvei esetén állítsa be az alapértelmezett naplózási illesztőprogramot.

Az IoT Edge hubon áthaladó üzenetek megtekintése

Megtekintheti az IoT Edge hubon áthaladó üzeneteket, és részletes naplókból gyűjthet megállapításokat a futtatókörnyezeti tárolókból. Ha részletes naplókat szeretne bekapcsolni ezeken a tárolókon, állítsa be RuntimeLogLevel a yaml konfigurációs fájlban. A fájl megnyitása:

Linuxon:

sudo nano /etc/iotedge/config.yaml

Windows rendszeren:

notepad C:\ProgramData\iotedge\config.yaml

Alapértelmezés szerint az elem a agent következő példához hasonlóan fog kinézni:

agent:
  name: edgeAgent
  type: docker
  env: {}
  config:
    image: mcr.microsoft.com/azureiotedge-agent:1.1
    auth: {}

Cserélje le env: {} a következőre:

env:
  RuntimeLogLevel: debug

Figyelmeztetés

A YAML-fájlok nem tartalmazhatnak behúzásként lapokat. Ehelyett használjon 2 szóközt. A legfelső szintű elemek nem tartalmazhatnak kezdő szóközt.

Mentse a fájlt, és indítsa újra az IoT Edge biztonsági kezelőjét.

Az IoT Hub és az IoT-eszközök között küldött üzeneteket is ellenőrizheti. Ezeket az üzeneteket a Visual Studio Code Azure IoT Hub bővítményével tekintheti meg. További információ: Hasznos eszköz az Azure IoT-vel való fejlesztés során.

Tárolók újraindítása

Miután kivizsgálta a naplókat és az üzeneteket, megpróbálhatja újraindítani a tárolókat.

Az IoT Edge-eszközön a következő parancsokkal indítsa újra a modulokat:

iotedge restart <container name>

Indítsa újra az IoT Edge futtatókörnyezeti tárolókat:

iotedge restart edgeAgent && iotedge restart edgeHub

A modulokat távolról is újraindíthatja az Azure Portalról. További információ: IoT Edge-eszközök monitorozása és hibaelhárítása az Azure Portalról.

Tűzfal- és portkonfigurációs szabályok ellenőrzése

Az Azure IoT Edge lehetővé teszi a helyszíni kiszolgáló és az Azure-felhő közötti kommunikációt támogatott IoT Hub-protokollok használatával, lásd a kommunikációs protokoll kiválasztását. A fokozott biztonság érdekében az Azure IoT Edge és az Azure IoT Hub közötti kommunikációs csatornák mindig kimenőre vannak konfigurálva. Ez a konfiguráció a szolgáltatások által támogatott kommunikációs mintán alapul, amely minimálisra csökkenti a rosszindulatú entitások támadási felületét. Bejövő kommunikációra csak olyan helyzetekben van szükség, ahol az Azure IoT Hubnak üzeneteket kell leküldnie az Azure IoT Edge-eszközre. A felhőalapú üzenetek biztonságos TLS-csatornákkal védettek, és X.509-tanúsítványokkal és TPM-eszközmodulokkal tovább védhetők. Az Azure IoT Edge Security Manager szabályozza a kommunikáció létrehozásának módját, lásd: IoT Edge Security Manager.

Bár az IoT Edge továbbfejlesztett konfigurációt biztosít az Azure IoT Edge-futtatókörnyezet és az üzembe helyezett modulok biztonságossá tételéhez, ez továbbra is az alapul szolgáló gép- és hálózati konfigurációtól függ. Ezért elengedhetetlen annak biztosítása, hogy megfelelő hálózati és tűzfalszabályok legyenek beállítva a felhőbeli kommunikáció biztonságos peremhálózata érdekében. Az alábbi táblázat útmutatóként használható az Azure IoT Edge futtatókörnyezetet futtató mögöttes kiszolgálók konfigurációs tűzfalszabályai esetében:

Protokoll Kikötő Bejövő Kimenő Útmutató
MQTT 8883 LETILTVA (alapértelmezett) LETILTVA (alapértelmezett)
  • Konfigurálja a kimenő (kimenő) elemet úgy, hogy nyitott legyen, ha az MQTT protokollt használja kommunikációs protokollként.
  • Az MQTT 1883-at az IoT Edge nem támogatja.
  • A bejövő (bejövő) kapcsolatokat le kell tiltani.
AMQP 5671 LETILTVA (alapértelmezett) MEGNYITÁS (alapértelmezett)
  • Alapértelmezett kommunikációs protokoll az IoT Edge-hez.
  • Ha az Azure IoT Edge nincs konfigurálva más támogatott protokollokhoz, vagy az AMQP a kívánt kommunikációs protokoll, akkor a megnyitást nyitottnak kell beállítani.
  • Az IoT Edge nem támogatja az 5672-es AMQP-t.
  • Tiltsa le ezt a portot, ha az Azure IoT Edge egy másik támogatott IoT Hub protokollt használ.
  • A bejövő (bejövő) kapcsolatokat le kell tiltani.
HTTPS 443 LETILTVA (alapértelmezett) MEGNYITÁS (alapértelmezett)
  • Konfigurálja a kimenő (kimenő) 443-on való megnyitást az IoT Edge kiépítéséhez. Ez a konfiguráció manuális szkriptek vagy az Azure IoT Device Provisioning Service (DPS) használatakor szükséges.
  • A bejövő (bejövő) kapcsolatnak csak bizonyos esetekben kell nyitva lennie:
    • Ha olyan transzparens átjáróval rendelkezik, amely lefelé irányuló eszközökkel rendelkezik, amelyek metóduskéréseket küldhetnek. Ebben az esetben a 443-as portnak nem kell nyitva lennie a külső hálózatok számára az IoTHubhoz való csatlakozáshoz vagy az IoTHub-szolgáltatások Azure IoT Edge-beli biztosításához. Így a bejövő szabály csak a belső hálózatról származó bejövő (bejövő) megnyitásra korlátozható.
    • Ügyfélről eszközre (C2D) vonatkozó forgatókönyvek esetén.
  • A HTTP 80-at az IoT Edge nem támogatja.
  • Ha a nem HTTP protokollok (például AMQP vagy MQTT) nem konfigurálhatók a vállalatban; az üzenetek websocketeken keresztül küldhetők. Ebben az esetben a 443-as port lesz használva a WebSocket kommunikációjához.

Utolsó megoldás: az összes tároló leállítása és újbóli létrehozása

Előfordulhat, hogy egy rendszer jelentős speciális módosítást igényel a meglévő hálózati vagy operációs rendszer korlátainak használatához. Egy rendszer például eltérő adatlemez-csatlakoztatási és proxybeállításokat igényelhet. Ha a fenti összes lépést kipróbálta, és továbbra is tárolóhibákat kap, lehetséges, hogy valahol a Docker-rendszer gyorsítótárai vagy a fenntartott hálózati beállítások nem naprakészek a legújabb újrakonfigurálással. Ebben az esetben az utolsó lehetőség az, hogy az alapoktól kezdve tiszta kezdést használjon docker prune .

A következő parancs leállítja az IoT Edge-rendszert (és így az összes tárolót), az "összes" és a "kötet" lehetőséget használja az összes tároló és kötet eltávolításához docker prune . Tekintse át a parancsokkal kapcsolatos problémákra vonatkozó figyelmeztetést, és erősítse meg, y ha készen áll.

sudo iotedge system stop
docker system prune --all --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all volumes not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N]

Indítsa újra a rendszert. A biztonság érdekében alkalmazza az esetlegesen fennmaradó konfigurációt, és indítsa el a rendszert egy paranccsal.

sudo iotedge config apply

Várjon néhány percet, és ellenőrizze újra.

sudo iotedge list

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.