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

Připojení problémy s citlivostí pro zařízení IoT může 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. To zahrnuje nastavení upozornění pro aktivaci oznámení a akcí při odpojení a konfiguraci protokolů, které můžete použít ke zjiště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 označovanou jako Připojení zařízení, která můžete použít k monitorování počtu zařízení připojených k IoT Hubu a aktivaci výstrahy, 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í skutečnosti:

  • 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 tomu 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 tomu 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í Zařízení Připojení ed 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: Směrování událostí připojení do protokolů

IoT Hub nepřetržitě generuje protokoly prostředků pro několik kategorií operací. Pokud ale chcete shromažďovat tato data protokolu, musíte vytvořit nastavení diagnostiky, které je bude směrovat do cíle, kde je můžete analyzovat nebo archivovat. Jedním z takových cílů je protokoly Azure Monitoru prostřednictvím pracovního prostoru služby Log Analytics (viz ceny), kde můžete analyzovat data pomocí dotazů Kusto.

Kategorie prostředků IoT Hubu protokoluje operace a chyby, které se musí s připojením zařízení dělat. Následující snímek obrazovky ukazuje nastavení diagnostiky pro směrování těchto protokolů do pracovního prostoru služby Log Analytics:

Doporučené nastavení pro odesílání protokolů připojení do pracovního prostoru služby Log Analytics

Doporučujeme vytvořit nastavení diagnostiky co nejdříve po vytvoření centra IoT, protože i když IoT Hub vždy generuje protokoly prostředků, Azure Monitor je neshromažďuje, dokud je nenasměrujete do cíle.

Další informace o směrování protokolů do cíle najdete v tématu Shromažďování a směrování. Podrobné pokyny k vytvoření nastavení diagnostiky najdete v kurzu Použití metrik a protokolů.

Azure Monitor: Nastavení upozornění metrik pro odpojení zařízení

Upozornění můžete nastavit na základě metrik platformy vygenerovaných službou IoT Hub. Pomocí upozornění na metriky můžete jednotlivcům oznámit, že došlo k podmínce zájmu, a také aktivovat akce, které můžou na tuto podmínku reagovat automaticky.

Metrika Připojení ed devices (Preview) udává, kolik zařízení je připojených k IoT Hubu. Pokud tato metrika klesne pod prahovou hodnotu, můžete vytvořit upozornění, která se mají aktivovat:

Nastavení logiky upozornění pro metriku připojených zařízení

Pravidla upozornění na metriky můžete použít k monitorování anomálií odpojení zařízení ve velkém měřítku. To znamená, že pomocí výstrah můžete určit, kdy se neočekávaně odpojí velký počet zařízení. Po zjištění tohoto problému se můžete podívat na protokoly, které vám pomůžou tento problém vyřešit. Pokud chcete monitorovat, jestli se zařízení odpojí a odpojí pro důležitá zařízení téměř v reálném čase, musíte použít Event Grid.

Další informace o výstrahách ve službě IoT Hub najdete v tématu Výstrahy ve službě Monitor IoT Hub. Návod k vytváření upozornění ve službě IoT Hub najdete v kurzu Použití metrik a protokolů. Podrobnější přehled výstrah najdete v tématu Přehled výstrah v Microsoft Azure v dokumentaci ke službě Azure Monitor.

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. Následující postup předpokládá, že jste už vytvořili nastavení diagnostiky pro odesílání protokolů ioT Hubu Připojení ions 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í zařízení Připojení událost:

Snímek obrazovky zařízení Připojení událostí 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 prodloužením nastavené 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í platnosti tokenu na 3 minuty Při prodlužování platnosti tokenu dochází k odpojení. Kromě toho se nevygenerují žá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á to 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 Připojení ionForcefullyClosedOnNew Připojení ion 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í.