Řešení potíží se zařízením IoT Edge

Platí pro:IoT Edge 1.4 checkmark IoT Edge 1.4

Důležité

IoT Edge 1.4 je podporovaná verze. 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.
  • Připojení kontroly ověřují, ž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:latestje 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 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.

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 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.

  • 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í:

    1. Povolte protokoly na úrovni ladění.

      sudo iotedge system set-log-level debug
      sudo iotedge system restart
      
    2. 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:

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í
  • Info
  • 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, 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í)
  • Nakonfigurujte, aby odchozí (odchozí) byl při použití MQTT jako komunikačního protokolu otevřený.
  • IoT Edge nepodporuje 1883 pro MQTT.
  • Příchozí (příchozí) připojení by měla být blokovaná.
AMQP 5671 BLOCKED (výchozí) OPEN (výchozí)
  • Výchozí komunikační protokol pro IoT Edge
  • Musí být nakonfigurovaná tak, aby byla otevřená, pokud azure IoT Edge není nakonfigurovaný pro jiné podporované protokoly nebo AMQP je požadovaný komunikační protokol.
  • IoT Edge nepodporuje 5672 pro AMQP.
  • Tento port zablokujte, když Azure IoT Edge používá jiný podporovaný protokol ioT Hubu.
  • Příchozí (příchozí) připojení by měla být blokovaná.
HTTPS 443 BLOCKED (výchozí) OPEN (výchozí)
  • Nakonfigurujte odchozí (odchozí) tak, aby byla otevřená ve verzi 443 pro zřizování IoT Edge. Tato konfigurace se vyžaduje při použití ručních skriptů nebo služby Azure IoT Device Provisioning Service (DPS).
  • Příchozí (příchozí) připojení by mělo být otevřené jenom pro konkrétní scénáře:
    • Pokud máte transparentní bránu s podřízenými zařízeními, která můžou odesílat žádosti o metody. V tomto případě nemusí být port 443 otevřený externím sítím pro připojení k IoTHubu nebo poskytování služeb IoTHubu prostřednictvím Azure IoT Edge. Příchozí pravidlo by proto mohlo být omezeno pouze na otevření příchozí (příchozí) z interní sítě.
    • Scénáře C2D (Client to Device).
  • IoT Edge nepodporuje 80 pro HTTP.
  • Pokud protokoly jiné než HTTP (například AMQP nebo MQTT) nejde nakonfigurovat v podniku; zprávy lze odesílat přes webSockety. Port 443 se použije pro komunikaci protokolu WebSocket v takovém případě.

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.