Sdílet prostřednictvím


Monitorování, diagnostika a řešení potíží s připojením zařízení služby Azure IoT Hub

Problémy s připojením zařízení IoT můžou být obtížné vyřešit, protože existuje mnoho možných bodů selhání. Aplikační logika, fyzické sítě, protokoly, hardware, IoT Hub a další cloudové služby můžou způsobit problémy. Schopnost rozpoznat a určit zdroj problému je kritická. Řešení IoT ve velkém měřítku ale může mít tisíce zařízení, takže není praktické zkontrolovat jednotlivá zařízení ručně. IoT Hub se integruje se dvěma službami Azure, které vám pomůžou:

  • Azure Monitor Azure Monitor umožňuje shromažďovat, analyzovat a reagovat na telemetrii ze služby IoT Hub. Pokud chcete pomoct s detekcí, diagnostikou a řešením těchto problémů ve velkém měřítku, využijte funkce monitorování, které IoT Hub poskytuje prostřednictvím služby Azure Monitor. Tento přístup zahrnuje nastavení upozornění pro aktivaci oznámení a akcí při odpojení a konfiguraci protokolů, které můžete použít ke zjišťování podmínek, které způsobily odpojení.

  • Azure Event Grid Pro kritickou infrastrukturu a odpojení jednotlivých zařízení použijte Azure Event Grid k přihlášení k odběru událostí připojení zařízení a odpojení událostí vygenerovaných službou IoT Hub. Azure Event Grid umožňuje používat některé z následujících obslužných rutin událostí:

    • Azure Functions
    • Logic Apps
    • Azure Automation
    • Webhooky
    • Queue Storage
    • Hybridní připojení
    • Event Hubs

Event Grid vs. Azure Monitor

Event Grid poskytuje řešení pro monitorování jednotlivých zařízení s nízkou latencí, které můžete použít ke sledování připojení zařízení pro důležitá zařízení a infrastrukturu. Azure Monitor poskytuje metriku nazvanou Připojená zařízení , pomocí které můžete monitorovat počet zařízení připojených k IoT Hubu a aktivovat výstrahu, když toto číslo klesne pod statickou prahovou hodnotu.

Při rozhodování, jestli použít Event Grid nebo Azure Monitor pro konkrétní scénář, zvažte následující problémy:

  • Latence upozornění: Události připojení ke službě IoT Hub se doručují mnohem rychleji prostřednictvím služby Event Grid. Díky této skutečnosti je Event Grid lepší volbou pro scénáře, ve kterých je rychlé oznámení žádoucí.

  • Oznámení pro jednotlivá zařízení: Event Grid umožňuje sledovat připojení a odpojení jednotlivých zařízení. Díky této skutečnosti je Event Grid lepší volbou pro scénáře, ve kterých potřebujete monitorovat připojení pro důležitá zařízení.

  • Zjednodušené nastavení: Upozornění metrik Azure Monitoru poskytují zjednodušené nastavení, které nevyžaduje integraci s dalšími službami k doručování oznámení prostřednictvím e-mailu, SMS, hlasu a dalších oznámení. S Event Gridem je potřeba integrovat s dalšími službami Azure, abyste mohli doručovat oznámení. Obě služby se můžou integrovat s jinými službami a aktivovat složitější akce.

Event Grid: Monitorování událostí připojení a odpojení

Pokud chcete monitorovat události připojení a odpojení zařízení v produkčním prostředí, doporučujeme přihlásit se k odběru událostí DeviceConnected a DeviceDisconnected ve službě Event Grid, aby se aktivovaly výstrahy a monitorovaly stav připojení zařízení. Event Grid poskytuje nižší latenci událostí než Azure Monitor a můžete je monitorovat na jednotlivých zařízeních. Díky těmto faktorům je Event Grid upřednostňovanou metodou monitorování důležitých zařízení a infrastruktury.

Pokud používáte Event Grid k monitorování nebo aktivaci upozornění na odpojení zařízení, ujistěte se, že vytváříte způsob odfiltrování pravidelných odpojení kvůli obnovení tokenu SAS na zařízeních, která používají sady SDK Azure IoT. Další informace najdete v tématu Chování odpojení zařízení MQTT pomocí sad SDK Azure IoT.

Další informace o monitorování událostí připojení zařízení pomocí Event Gridu najdete v následujících článcích:

Azure Monitor: Řešení chyb připojení pomocí protokolů

Když zjistíte odpojení zařízení pomocí upozornění metrik služby Azure Monitor nebo Event Gridu, můžete k řešení tohoto důvodu použít protokoly. Tato část popisuje, jak hledat běžné problémy v protokolech služby Azure Monitor. Zde uvedené kroky předpokládají, že jste už vytvořili nastavení diagnostiky pro odesílání protokolů připojení služby IoT Hub do pracovního prostoru služby Log Analytics.

Po vytvoření nastavení diagnostiky pro směrování protokolů prostředků Služby IoT Hub do protokolů služby Azure Monitor postupujte podle těchto kroků a zobrazte protokoly na webu Azure Portal.

  1. Na webu Azure Portal přejděte do centra IoT.

  2. V části Monitorování v levém podokně centra IoT vyberte protokoly.

  3. Pokud chcete izolovat protokoly chyb připojení pro IoT Hub, zadejte do editoru dotazů následující dotaz a pak vyberte Spustit:

    AzureDiagnostics
    | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
    
  4. Pokud jsou výsledky, vyhledejte OperationName, ResultType (kód chyby) a ResultDescription (chybová zpráva), abyste získali podrobnější informace.

    Příklad protokolu chyb

Následující příručky k řešení problémů vám pomůžou s nejběžnějšími chybami:

Azure Monitor: Monitorování připojení pro konkrétní zařízení pomocí protokolů

Může docházet k situacím, kdy chcete pomocí služby Azure Monitor zobrazit chyby připojení a informace pro konkrétní zařízení. Pokud chcete izolovat události připojení pro zařízení, můžete postupovat stejně jako v předchozí části, ale zadat následující dotaz. Nahraďte testovací zařízení názvem vašeho zařízení.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "test-device"

Dotaz vrátí pro cílové zařízení chybové i informační události. Následující příklad výstupu ukazuje informační událost deviceConnect :

Snímek obrazovky s událostí deviceConnect v protokolech

Chování odpojení zařízení MQTT pomocí sad SDK Azure IoT

Sady SDK zařízení Azure IoT se odpojí od služby IoT Hub a po obnovení tokenů SAS přes protokol MQTT (a MQTT přes WebSockets) se znovu připojí. V protokolech se zobrazí jako informační zařízení, odpojení a připojení událostí někdy doprovázených chybovými událostmi.

Ve výchozím nastavení je životnost tokenu pro všechny sady SDK 60 minut; Vývojáři ho ale můžou změnit v některých sadách SDK. Následující tabulka shrnuje životnost tokenů, prodloužení platnosti tokenů a chování obnovení tokenů pro každou ze sad SDK:

Sada SDK Životnost tokenů Prodloužení platnosti tokenu Chování při obnovování
.NET 60 minut, konfigurovatelné 85 % životnosti, konfigurovatelné Sada SDK se odpojí a znovu připojí během životnosti tokenu a 10minutovou dobu odkladu. Informační události a chyby generované v protokolech
Java 60 minut, konfigurovatelné 85 % životnosti, není konfigurovatelné Sada SDK se odpojí a znovu připojí během životnosti tokenu a 10minutovou dobu odkladu. Informační události a chyby generované v protokolech
Node.js 60 minut, konfigurovatelné konfigurovatelný Sada SDK se odpojí a znovu připojí při obnovení tokenu. V protokolech se generují pouze informační události.
Python 60 minut, konfigurovatelné 120 sekund před vypršením platnosti Sada SDK se odpojí a znovu připojí při životnosti tokenů.

Následující snímky obrazovky ukazují chování obnovení tokenu v protokolech služby Azure Monitor pro různé sady SDK. Životnost tokenu a prahová hodnota pro prodloužení se změnila ze svých výchozích hodnot, jak je uvedeno.

  • Sada SDK pro zařízení .NET s životností tokenu 1200 sekund (20 minut) a nastaveným obnovením na 90 % životnosti. k odpojení dochází každých 30 minut:

    Chování při obnovování tokenů přes MQTT v protokolech služby Azure Monitor pomocí sady .NET SDK

  • Java SDK s životností tokenu 300 sekund (5 minut) a výchozím prodloužením životnosti je 85 %. K odpojení dochází každých 15 minut:

    Chování chyby při obnovování tokenů přes MQTT v protokolech služby Azure Monitor pomocí sady Java SDK

  • Sada Node SDK s životností tokenu 300 sekund (5 minut) a nastaveným prodloužením platnosti tokenu v 3 minutách. Při prodlužování platnosti tokenu dochází k odpojení. Také neexistují žádné chyby. Vygenerují se pouze informační události připojení nebo odpojení:

    Chování chyby při obnovování tokenů přes MQTT v protokolech služby Azure Monitor pomocí sady Node SDK

K shromáždění výsledků se použil následující dotaz. Dotaz extrahuje název a verzi sady SDK z tašky vlastností. Další informace najdete v tématu Verze sady SDK v protokolech služby IoT Hub.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) , Protocol =  tostring(parsed_json.protocol)
| distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion

Jako vývojář nebo operátor řešení IoT musíte o tomto chování vědět, abyste mohli interpretovat události připojení/odpojení a související chyby v protokolech. Pokud chcete změnit životnost tokenu nebo chování pro prodloužení platnosti zařízení, zkontrolujte, jestli zařízení implementuje nastavení dvojčete zařízení nebo metodu zařízení, která tuto změnu umožňuje.

Pokud monitorujete připojení zařízení se službou Event Hubs, ujistěte se, že vytváříte způsob odfiltrování pravidelných odpojení kvůli prodloužení platnosti tokenu SAS. Například neaktivujte akce na základě odpojení, pokud po události odpojení následuje událost připojení v určitém časovém rozsahu.

Poznámka:

IoT Hub podporuje pouze jedno aktivní připojení MQTT na zařízení. Jakékoli nové připojení MQTT jménem stejného ID zařízení způsobí, že IoT Hub zahodí stávající připojení.

400027 ConnectionForcefullyClosedOnNewConnection se přihlásí k protokolům ioT Hubu.

Zkoušel jsem kroky, ale nefungovalo to

Pokud vám předchozí kroky nepomohly, zkuste:

Další kroky

  • Další informace o řešení přechodných problémů najdete v tématu Zpracování přechodných chyb.

  • Další informace o sadách SDK zařízení Azure IoT a správě opakování najdete v tématu Vzory opakování.