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:
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: 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č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:
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.
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í zařízení Připojení událost:
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:
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í 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í:
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:
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í pro 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í.