Řešení potíží se zařízením IoT Edge
Platí pro: IoT Edge 1.5 IoT Edge 1.4
Důležité
Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
Pokud ve vašem prostředí dochází k problémům se spouštěním Azure IoT Edge, použijte tento článek jako průvodce odstraňováním potíží a diagnostikou.
Spuštění příkazu check
Prvním krokem při řešení potíží se službou IoT Edge by mělo být použití check
příkazu, který spouští kolekci testů konfigurace a připojení pro běžné problémy. Příkaz check
je k dispozici ve verzi 1.0.7 a novější.
Poznámka:
Nástroj pro řešení potíží nemůže spustit kontroly připojení, pokud je zařízení IoT Edge za proxy serverem.
Příkaz můžete spustit check
následujícím způsobem nebo příznak zahrnout --help
, abyste zobrazili úplný seznam možností:
sudo iotedge check
Nástroj pro řešení potíží spouští mnoho kontrol seřazených do těchto tří kategorií:
- Kontroly konfigurace kontrolují podrobnosti, které by mohly bránit zařízením IoT Edge v připojení ke cloudu, včetně problémů s konfiguračním souborem a modulem kontejneru.
- Zkontroluje připojení, že modul runtime IoT Edge má přístup k portům na hostitelském zařízení a že se všechny komponenty IoT Edge můžou připojit ke službě IoT Hub. Tato sada kontrol vrací chyby, pokud je zařízení IoT Edge za proxy serverem.
- Kontroly připravenosti pro produkční prostředí hledají doporučené osvědčené postupy produkce, jako je stav certifikátů certifikační autority zařízení (CA) a konfigurace souboru protokolu modulu.
Nástroj pro kontrolu IoT Edge používá ke spuštění diagnostiky kontejner. Image kontejneru mcr.microsoft.com/azureiotedge-diagnostics:latest
je k dispozici prostřednictvím služby Microsoft Container Registry. Pokud potřebujete spustit kontrolu na zařízení bez přímého přístupu k internetu, budou vaše zařízení potřebovat přístup k imagi kontejneru.
Ve scénáři využívajících vnořená zařízení IoT Edge můžete získat přístup k imagi diagnostiky na podřízených zařízeních směrováním image, která přetáhne nadřazená zařízení.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
Informace o všech diagnostických kontrolách, které tento nástroj spouští, včetně toho, co dělat, pokud se zobrazí chyba nebo upozornění, najdete v tématu Kontroly řešení potíží se službou IoT Edge.
Shromáždění informací o ladění pomocí příkazu support-bundle
Pokud potřebujete shromáždit protokoly ze zařízení IoT Edge, nejpohodlnější způsob je použít support-bundle
tento příkaz. Ve výchozím nastavení tento příkaz shromažďuje modul, správce zabezpečení IoT Edge a protokoly modulu kontejnerů, iotedge check
výstup JSON a další užitečné informace o ladění. Zkomprimuje je do jednoho souboru pro snadné sdílení. Příkaz support-bundle
je k dispozici ve verzi 1.0.9 a novější.
Spuštěním support-bundle
příkazu s příznakem --since
určete, jak dlouho od minulosti chcete získat protokoly. Například 6h
získá protokoly od posledních šesti hodin, 6d
od posledních šesti dnů, 6m
od posledních šesti minut atd. --help
Pokud chcete zobrazit úplný seznam možností, zahrňte příznak.
sudo iotedge support-bundle --since 6h
Ve výchozím nastavení příkaz vytvoří soubor ZIP s názvem support_bundle.zip v adresáři, support-bundle
ve kterém je příkaz volána. --output
Příznak použijte k zadání jiné cesty nebo názvu souboru pro výstup.
Další informace o příkazu najdete v nápovědě.
iotedge support-bundle --help
K nahrání výstupu příkazu support-bundle do služby Azure Blob Storage můžete použít také integrovanou přímou metodu uploadSupportBundle .
Upozorňující
Výstup příkazu support-bundle
může obsahovat názvy hostitelů, zařízení a modulů, informace protokolované moduly atd. Mějte na paměti, že pokud sdílíte výstup ve veřejném fóru.
Kontrola metrik shromážděných z modulu runtime
Moduly runtime IoT Edge vytvářejí metriky, které vám pomůžou monitorovat a pochopit stav zařízení IoT Edge. Přidejte modul kolektoru metrik do vašich nasazení, abyste mohli zpracovávat shromažďování těchto metrik a odesílat je do cloudu, aby se usnadnilo monitorování.
Další informace najdete v tématu Shromažďování a přenos metrik.
Kontrola verze IoT Edge
Pokud používáte starší verzi IoT Edge, je možné, že se váš problém vyřeší upgradem. Nástroj iotedge check
zkontroluje, jestli je proces démon zabezpečení IoT Edge nejnovější verzí, ale nekontroluje verze ioT Edge Hubu a modulů agenta. Ke kontrole verze modulů modulu runtime na vašem zařízení použijte příkazy iotedge logs edgeAgent
a iotedge logs edgeHub
. Číslo verze se zobrazí v protokolech po spuštění modulu.
Pokyny k aktualizaci zařízení najdete v tématu Aktualizace démona zabezpečení IoT Edge a modulu runtime.
Ověření instalace IoT Edge na vašich zařízeních
Instalaci IoT Edge na zařízení můžete ověřit monitorováním dvojčete modulu edgeAgent.
Pokud chcete získat nejnovější dvojče modulu EdgeAgent, spusťte z Azure Cloud Shellu následující příkaz:
az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>
Tento příkaz vypíše všechny vlastnosti hlášené agentem edgeAgent. Tady jsou některé užitečné, které monitorují stav zařízení:
- stav modulu runtime
- čas spuštění modulu runtime
- doba posledního ukončení modulu runtime
- Počet restartování modulu runtime
Kontrola stavu správce zabezpečení IoT Edge a jeho protokolů
Správce zabezpečení IoT Edge zodpovídá za operace, jako je inicializace systému IoT Edge při spuštění a zřizování zařízení. Pokud se IoT Edge nespouští, můžou protokoly správce zabezpečení poskytovat užitečné informace.
Zobrazení stavu systémových služeb IoT Edge:
sudo iotedge system status
Prohlédněte si protokoly systémových služeb IoT Edge:
sudo iotedge system logs -- -f
Pokud chcete zobrazit podrobnější protokoly systémových služeb IoT Edge, povolte protokoly na úrovni ladění:
Povolte protokoly na úrovni ladění.
sudo iotedge system set-log-level debug sudo iotedge system restart
Po ladění přepněte zpět na výchozí protokoly na úrovni informací.
sudo iotedge system set-log-level info sudo iotedge system restart
Kontrola problémů s protokoly kontejneru
Jakmile je proces démon zabezpečení IoT Edge spuštěný, projděte si protokoly kontejnerů a zjistěte problémy. Začněte s nasazenými kontejnery a pak se podívejte na kontejnery, které tvoří modul runtime IoT Edge: edgeAgent a edgeHub. Protokoly agenta IoT Edge obvykle poskytují informace o životním cyklu jednotlivých kontejnerů. Protokoly centra IoT Edge poskytují informace o zasílání zpráv a směrování.
Protokoly kontejneru můžete načíst z několika míst:
Spuštěním následujícího příkazu na zařízení IoT Edge zobrazte protokoly:
iotedge logs <container name>
Na webu Azure Portal použijte integrovaný nástroj pro řešení potíží. Monitorování a řešení potíží se zařízeními IoT Edge na webu Azure Portal
Pomocí přímé metody UploadModuleLogs nahrajte protokoly modulu do služby Azure Blob Storage.
Vyčištění protokolů kontejneru
Ve výchozím nastavení modul kontejnerů Moby nenastavuje limity velikosti protokolů kontejnerů. V průběhu času může rozsáhlé protokoly vést k zaplnění zařízení protokoly a nedostatek místa na disku. Pokud velké protokoly kontejnerů ovlivňují výkon zařízení IoT Edge, pomocí následujícího příkazu vynutíte odebrání kontejneru spolu s souvisejícími protokoly.
Pokud stále řešíte potíže, počkejte, až zkontrolujete protokoly kontejneru a provedete tento krok.
Upozorňující
Pokud vynutíte odebrání kontejneru EdgeHub v době, kdy obsahuje nevyřešený backlog zpráv a nenastaví se žádné úložiště hostitele, nezobrazené zprávy se ztratí.
docker rm --force <container name>
Pro průběžné scénáře údržby protokolů a produkčního prostředí nastavte výchozí ovladač protokolování.
Zobrazení zpráv procházející centrem IoT Edge
Můžete zobrazit zprávy procházející centrem IoT Edge a shromažďovat přehledy z podrobných protokolů z kontejnerů modulu runtime. Pokud chcete pro tyto kontejnery zapnout podrobné protokoly, nastavte proměnnou RuntimeLogLevel
prostředí v manifestu nasazení.
Pokud chcete zobrazit zprávy procházející centrem IoT Edge, nastavte RuntimeLogLevel
proměnnou prostředí pro debug
modul EdgeHub.
Moduly edgeHub i edgeAgent mají tuto proměnnou prostředí modulu runtime s výchozí hodnotou nastavenou na info
. Tato proměnná prostředí může mít následující hodnoty:
- fatální
- chyba
- upozornění
- informace
- ladění
- verbose
Můžete také zkontrolovat, které zprávy se odesílají mezi IoT Hubem a zařízeními IoT. Tyto zprávy můžete zobrazit pomocí rozšíření Azure IoT Hub pro Visual Studio Code. Další informace najdete v praktickém nástroji při vývoji s využitím Azure IoT.
Restartování kontejnerů
Po prozkoumání protokolů a zpráv o informacích můžete zkusit restartovat kontejnery.
Na zařízení IoT Edge pomocí následujících příkazů restartujte moduly:
iotedge restart <container name>
Restartujte kontejnery modulu runtime IoT Edge:
iotedge restart edgeAgent && iotedge restart edgeHub
Moduly můžete také vzdáleně restartovat z webu Azure Portal. Další informace najdete v tématu Monitorování a řešení potíží se zařízeními IoT Edge na webu Azure Portal.
Kontrola pravidel konfigurace brány firewall a portu
Azure IoT Edge umožňuje komunikaci z místního serveru do cloudu Azure pomocí podporovaných protokolů IoT Hubu. Další informace najdete v tématu Volba komunikačního protokolu. Kvůli lepšímu zabezpečení jsou komunikační kanály mezi Azure IoT Edge a Azure IoT Hubem vždy nakonfigurované tak, aby byly odchozí. Tato konfigurace je založená na vzoru komunikace s asistencí služeb, který minimalizuje prostor pro útok, aby se škodlivá entita prozkoumala. Příchozí komunikace se vyžaduje jenom pro konkrétní scénáře , kdy Azure IoT Hub potřebuje odesílat zprávy do zařízení Azure IoT Edge. Zprávy typu cloud-zařízení jsou chráněné pomocí zabezpečených kanálů TLS a je možné je dále zabezpečit pomocí certifikátů X.509 a modulů zařízení TPM. Azure IoT Edge Security Manager určuje, jak se tato komunikace dá vytvořit, viz IoT Edge Security Manager.
I když IoT Edge poskytuje vylepšenou konfiguraci pro zabezpečení modulu runtime Azure IoT Edge a nasazených modulů, stále závisí na základní konfiguraci počítače a sítě. Proto je nezbytné zajistit, aby byla pro zabezpečenou komunikaci s cloudem nastavená správná pravidla sítě a brány firewall. Následující tabulka se dá použít jako vodítko při konfiguraci pravidel brány firewall pro základní servery, kde je hostovaný modul runtime Azure IoT Edge:
Protokol | Port | Příchozí | Odchozí | Pokyny |
---|---|---|---|---|
MQTT | 8883 | BLOCKED (výchozí) | BLOCKED (výchozí) |
|
AMQP | 5671 | BLOCKED (výchozí) | OPEN (výchozí) |
|
HTTPS | 443 | BLOCKED (výchozí) | OPEN (výchozí) |
|
Poslední možnost: zastavení a opětovné vytvoření všech kontejnerů
Někdy může systém vyžadovat významné zvláštní úpravy pro práci se stávajícími síťovými nebo operačními systémy. Systém může například vyžadovat jiné nastavení připojení datového disku a proxy serveru. Pokud jste vyzkoušeli všechny předchozí kroky a stále dojde k selhání kontejneru, nemusí být systémové mezipaměti Dockeru nebo trvalé nastavení sítě aktuální s nejnovější rekonfigurací. V tomto případě je poslední možností použít docker prune
čistý začátek od nuly.
Následující příkaz zastaví systém IoT Edge (a tedy všechny kontejnery), pomocí možnosti docker prune
"all" a "volume" odebere všechny kontejnery a svazky. Zkontrolujte upozornění, že příkaz problémy s příkazem y
a až bude připravený, potvrďte ho.
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]
Znovu spusťte systém. Pokud chcete být v bezpečí, použijte všechny potenciálně zbývající konfigurace a spusťte systém jedním příkazem.
sudo iotedge config apply
Počkejte několik minut a zkontrolujte to znovu.
sudo iotedge list
Další kroky
Myslíte si, že jste v platformě IoT Edge našli chybu? Odešlete problém , abychom mohli pokračovat v vylepšování.
Pokud máte další otázky, vytvořte žádost o pomoc.