IoT Edge-eszköz hibaelhárítása
A következőkre vonatkozik: 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:latest
a 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 edgeHub
a . 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:
Az IoT Edge démonbeállításainak szerkesztése:
sudo systemctl edit iotedge.service
Frissítse a következő sorokat:
[Service] Environment=IOTEDGE_LOG=debug
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:
Adjon hozzá egy rendszerszintű környezeti változót:
[Environment]::SetEnvironmentVariable("IOTEDGE_LOG", "debug", [EnvironmentVariableTarget]::Machine)
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:
Az IoT Edge-eszközön futtassa a következő parancsot a naplók megtekintéséhez:
iotedge logs <container name>
Az Azure Portalon használja a beépített hibaelhárítási eszközt. IoT Edge-eszközök monitorozása és hibaelhárítása az Azure Portalról
A közvetlen UploadModuleLogs metódussal feltöltheti egy modul naplóit az Azure Blob Storage-ba.
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) |
|
AMQP | 5671 | LETILTVA (alapértelmezett) | MEGNYITÁS (alapértelmezett) |
|
HTTPS | 443 | LETILTVA (alapértelmezett) | MEGNYITÁS (alapértelmezett) |
|
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.