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:
Přehled použití Event Gridu se službou IoT Hub najdete v tématu React to IoT Hub events with Event Grid. Věnujte zvláštní pozornost omezením pro události stavu připojení zařízení.
Kurz o objednání událostí připojení zařízení najdete v tématu Objednání událostí připojení zařízení z Azure IoT Hubu pomocí služby Azure Cosmos DB.
Kurz o odesílání e-mailových oznámení najdete v tématu Odesílání e-mailových oznámení o událostech azure IoT Hubu pomocí Event Gridu a Logic Apps v dokumentaci ke službě Event Grid.
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.
Na webu Azure Portal přejděte do centra IoT.
V části Monitorování v levém podokně centra IoT vyberte protokoly.
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")
Pokud jsou výsledky, vyhledejte
OperationName
,ResultType
(kód chyby) aResultDescription
(chybová zpráva), abyste získali podrobnější informace.
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 :
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:
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:
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í:
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:
Pokud máte přístup k problematickým zařízením, ať už fyzicky nebo vzdáleně (jako je SSH), pokračujte v řešení potíží na straně zařízení.
Ověřte, že jsou vaše zařízení povolená na webu Azure Portal > , na zařízeních IoT Hub > IoT.
Pokud vaše zařízení používá protokol MQTT, ověřte, že je otevřený port 8883. Další informace najdete v tématu Připojení ke službě IoT Hub (MQTT).
Získejte pomoc na stránce s dotazy microsoftu Q&A pro Azure IoT Hub, Stack Overflow nebo podpora Azure.
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í.