Řešení potíží se zařízením IoT Edge
Platí pro: IoT Edge 1.1
Důležité
Datum ukončení podpory ioT Edge 1.1 bylo 13. prosince 2022. Informace o způsobu podpory tohoto produktu, služby, technologie nebo rozhraní API najdete v tématu věnovaném životnímu cyklu produktů Microsoftu. Další informace o aktualizaci na nejnovější verzi IoT Edge najdete v tématu 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í:
V Linuxu:
sudo iotedge check
Ve Windows:
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.
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
budou protokoly dostávat 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.
V Linuxu:
sudo iotedge support-bundle --since 6h
Ve Windows:
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 modulů centra a agenta IoT Edge. 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 zobrazí výstup všech ohlášených vlastností 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.
V Linuxu:
Zobrazení stavu správce zabezpečení IoT Edge:
sudo systemctl status iotedge
Prohlédněte si protokoly správce zabezpečení IoT Edge:
sudo journalctl -u iotedge -f
Podívejte se na podrobnější protokoly správce zabezpečení IoT Edge:
Upravte nastavení démona IoT Edge:
sudo systemctl edit iotedge.service
Aktualizujte následující řádky:
[Service] Environment=IOTEDGE_LOG=debug
Restartujte proces démon zabezpečení IoT Edge:
sudo systemctl cat iotedge.service sudo systemctl daemon-reload sudo systemctl restart iotedge
Ve Windows:
Zobrazení stavu správce zabezpečení IoT Edge:
Get-Service iotedge
Prohlédněte si protokoly správce zabezpečení IoT Edge:
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
Zobrazení pouze posledních 5 minut protokolů správce zabezpečení IoT Edge:
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog -StartTime ([datetime]::Now.AddMinutes(-5))
Podívejte se na podrobnější protokoly správce zabezpečení IoT Edge:
Přidejte proměnnou prostředí na úrovni systému:
[Environment]::SetEnvironmentVariable("IOTEDGE_LOG", "debug", [EnvironmentVariableTarget]::Machine)
Restartujte proces démon zabezpečení IoT Edge:
Restart-Service iotedge
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 protokolu kontejneru. V průběhu času to může 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 u těchto kontejnerů zapnout podrobné protokoly, nastavte RuntimeLogLevel
ho v konfiguračním souboru yaml. Otevření souboru:
V Linuxu:
sudo nano /etc/iotedge/config.yaml
Ve Windows:
notepad C:\ProgramData\iotedge\config.yaml
Ve výchozím nastavení agent
bude prvek vypadat jako v následujícím příkladu:
agent:
name: edgeAgent
type: docker
env: {}
config:
image: mcr.microsoft.com/azureiotedge-agent:1.1
auth: {}
Nahradit env: {}
:
env:
RuntimeLogLevel: debug
Upozorňující
Soubory YAML nemohou obsahovat tabulátory jako odsazení. Místo toho použijte 2 mezery. Položky nejvyšší úrovně nemohou mít úvodní prázdné znaky.
Uložte soubor a restartujte správce zabezpečení IoT Edge.
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, viz výběr 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 kroky uvedené výše a stále dochází k selhání kontejnerů, je možné, že někde v mezipaměti systému Dockeru nebo trvalém nastavení sítě nejsou 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
"vše" a "svazek" 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.