Vysvětlení a řešení chyb služby Azure IoT Hub

Tento článek popisuje příčiny a řešení běžných kódů chyb, se kterými se můžete setkat při používání služby IoT Hub.

400027 Připojení pro nové připojení došlo k vynucené zavření

Pokud se zařízení odpojí a nahlásí Communication_Error jako Připojení ionStatusChangeReason pomocí sady .NET SDK a typu přenosu MQTT, může se zobrazit chyba 400027 Připojení ionForcefullyClosedOnNew Připojení ion. Nebo operace dvojčete typu zařízení-cloud (například ohlášené vlastnosti čtení nebo opravy) nebo vyvolání přímé metody selže s kódem chyby 400027.

K této chybě dochází, když jiný klient vytvoří nové připojení ke službě IoT Hub pomocí stejné identity, takže Služba IoT Hub zavře předchozí připojení. Centrum IoT neumožňuje připojení více než jednoho klienta pomocí stejné identity.

Pokud chcete tuto chybu vyřešit, ujistěte se, že se každý klient připojuje ke službě IoT Hub pomocí vlastní identity.

401003 IoT Hub neautorizováno

V protokolech se může zobrazit způsob odpojení zařízení s 401003 IoTHubUnauthorized, za kterým následuje 404104 Device Připojení ionClosedRemotely a následné úspěšné připojení krátce po něm.

Nebo požadavky na IoT Hub selžou s některou z následujících chybových zpráv:

  • Chybí autorizační hlavička
  • IotHub *neobsahuje zadané zařízení *.
  • Autorizační pravidlo *neumožňuje přístup pro *.
  • Ověření pro toto zařízení se nezdařilo, obnovte token nebo certifikát a znovu se připojte.
  • Kryptografický otisk neodpovídá konfiguraci: Kryptografický otisk: SHA1Hash=*, SHA2Hash=*; Konfigurace: PrimaryThumbprint=*, SecondaryThumbprint=*
  • Objekt zabezpečení user@example.com není autorizovaný pro get pro /exampleOperation kvůli žádným přiřazeným oprávněním

K této chybě dochází, protože v případě MQTT se některé sady SDK spoléhají na ioT Hub k vydání odpojení, když vyprší platnost tokenu SAS, abyste věděli, kdy se má aktualizovat. Proto:

  1. Platnost tokenu SAS vyprší.
  2. IoT Hub si všimne vypršení platnosti a odpojí zařízení s 401003 IoTHubUnauthorized
  3. Zařízení dokončí odpojení pomocí zařízení 404104 Připojení ionClosedRemotely
  4. Sada IoT SDK vygeneruje nový token SAS.
  5. Zařízení se úspěšně připojí ke službě IoT Hub.

Nebo služba IoT Hub nemohla ověřit hlavičku, pravidlo nebo klíč ověřování. Důvodem může být některý z důvodů uvedených v symptomech.

K vyřešení této chyby není potřeba žádná akce, pokud pro připojení pomocí připojovací řetězec zařízení použijete sadu IoT SDK. Sada IoT SDK znovu vygeneruje nový token, aby se znovu připojil k vypršení platnosti tokenu SAS.

Životnost výchozího tokenu je 60 minut napříč sadami SDK; U některých sad SDK je ale životnost tokenu a prahová hodnota obnovení tokenu konfigurovatelná. Kromě toho se chyby vygenerované v případě, že se zařízení odpojí a znovu připojí při obnovení tokenu, liší pro každou sadu SDK. Další informace a informace o tom, jak zjistit, kterou sadu SDK vaše zařízení používá v protokolech, najdete v tématu Chování odpojení zařízení MQTT pomocí sad SDK Azure IoT.

Pokud se jedná o problém vývojářů zařízení, přepněte na sadu SDK jazyka C, která token SAS obnoví před vypršením platnosti. V případě AMQP se token SAS může aktualizovat bez odpojení.

Obecně platí, že zobrazená chybová zpráva by měla vysvětlit, jak chybu opravit. Pokud z nějakého důvodu nemáte přístup k podrobnostem chybové zprávy, ujistěte se, že:

  • Platnost sdíleného přístupového podpisu nebo jiného používaného tokenu zabezpečení nevypršela.
  • U ověřování certifikátu X.509 nevypršela platnost certifikátu zařízení nebo certifikátu certifikační autority přidruženého k zařízení. Informace o registraci certifikátů CA X.509 ve službě IoT Hub najdete v tématu Kurz: Vytvoření a nahrání certifikátů pro testování.
  • V případě ověřování kryptografického otisku certifikátu X.509 je kryptografický otisk certifikátu zařízení zaregistrovaný ve službě IoT Hub.
  • Autorizační přihlašovací údaje jsou správně vytvořené pro protokol, který používáte. Další informace najdete v tématu Řízení přístupu ke službě IoT Hub.
  • Použité autorizační pravidlo má oprávnění k požadované operaci.
  • U posledních chybových zpráv začínajících na "objekt zabezpečení...", lze tuto chybu vyřešit přiřazením správné úrovně oprávnění Azure RBAC uživateli. Vlastník ve službě IoT Hub může například přiřadit roli Vlastník dat služby IoT Hub, která uděluje všechna oprávnění. Zkuste tuto roli vyřešit problém s chybějícím oprávněním.

Poznámka:

U některých zařízení může docházet k problému s časovým posunem, když má čas zařízení od serveru větší než pět minut. K této chybě může dojít v případě, že se zařízení připojuje k centru IoT bez problémů po týdny nebo dokonce měsíce, ale začne se nepřetržitě odmítnout jeho připojení. Chyba může být také specifická pro podmnožinu zařízení připojených k centru IoT, protože k posunu času může dojít v závislosti na tom, kdy je zařízení poprvé připojené nebo zapnuté.

Často se problém vyřeší provedením synchronizace času pomocí protokolu NTP nebo restartováním zařízení (což může automaticky provést synchronizaci času během spouštěcí sekvence) a umožní zařízení se znovu připojit. Pokud se chcete této chybě vyhnout, nakonfigurujte zařízení tak, aby provádělo pravidelnou synchronizaci času pomocí protokolu NTP. Synchronizaci můžete naplánovat na denní, týdenní nebo měsíční v závislosti na množství odchylek v prostředí zařízení. Pokud na svém zařízení nemůžete nakonfigurovat pravidelnou synchronizaci protokolu NTP, naplánujte pravidelné restartování.

překročení kvóty služby IoT Hub 403002

Může se zobrazit selhání požadavků na IoT Hub s chybou 403002 IoTHubQuotaExceeded. A na webu Azure Portal se seznam zařízení IoT Hub nenačte.

K této chybě obvykle dochází při překročení denní kvóty zpráv pro centrum IoT. Vyřešení této chyby:

Tato chyba může být vrácena také úlohou hromadného importu, když počet zařízení zaregistrovaných v centru IoT nebo překročí limit kvóty pro centrum IoT. Další informace najdete v tématu Řešení potíží s úlohami importu.

403004 překročení maximální hloubky fronty zařízení

Při pokusu o odeslání zprávy typu cloud-zařízení se může zobrazit, že požadavek selže s chybou 403004 nebo DeviceMaximumQueueDepthExceeded.

Základní příčinou této chyby je, že počet zpráv zařazených do fronty pro zařízení překračuje limit fronty.

Nejpravděpodobnějším důvodem, proč dochází k tomuto limitu, je to, že k přijetí zprávy používáte HTTPS, což vede k průběžnému dotazování, ReceiveAsynccož vede k omezování požadavku ve službě IoT Hub.

Podporovaný vzor zpráv typu cloud-zařízení s protokolem HTTPS je přerušovaně připojená zařízení, která kontrolují zprávy zřídka (méně než každých 25 minut). Pokud chcete snížit pravděpodobnost, že narazíte na limit fronty, přepněte na AMQP nebo MQTT pro zprávy typu cloud-zařízení.

Případně můžete vylepšit logiku na straně zařízení tak, aby se zprávy ve frontě dokončily, odmítaly nebo opustily rychle, zkrátily dobu trvání nebo zvažte odeslání menšího počtu zpráv. Viz téma věnované hodnotě TTL (Time to Live) zpráv ve směru cloud-zařízení.

Nakonec zvažte použití rozhraní API pro vyprázdnění fronty k pravidelnému vyčištění nevyřízených zpráv před dosažením limitu.

403006 překročení limitu maximálního počtu aktivních souborů na zařízení

Může se zobrazit, že požadavek na nahrání souboru selže s kódem chyby 403006 DeviceMaximumActiveFileUploadLimitExceeded a zpráva "Počet aktivních požadavků na nahrání souboru nemůže překročit 10".

K této chybě dochází, protože každý klient zařízení je omezený pro souběžné nahrávání souborů. Limit můžete snadno překročit, pokud vaše zařízení neoznámí Službu IoT Hub při dokončení nahrávání souborů. Příčinou tohoto problému je obvykle nespolehlivý síť na straně zařízení.

Pokud chcete tuto chybu vyřešit, ujistěte se, že zařízení může okamžitě oznámit dokončení nahrávání souborů ioT Hubu. Pak zkuste snížit hodnotu TTL tokenu SAS pro konfiguraci nahrávání souborů.

404001 zařízení se nenašlo

Během komunikace typu cloud-zařízení (C2D), jako je zpráva C2D, aktualizace dvojčete nebo přímá metoda, se může zobrazit, že operace selže s chybou 404001 DeviceNotFound.

Operace selhala, protože IoT Hub nemůže najít zařízení. Zařízení není zaregistrované nebo je zakázané.

Pokud chcete tuto chybu vyřešit, zaregistrujte ID zařízení, které jste použili, a zkuste to znovu.

404103 zařízení není online

Může se zobrazit, že přímá metoda zařízení selže s chybou 404103 DeviceNotOnline , i když je zařízení online.

Pokud víte, že zařízení je online a přesto se zobrazí chyba, pravděpodobně k chybě došlo, protože zpětné volání přímé metody není v zařízení zaregistrované.

Pokud chcete správně nakonfigurovat zařízení pro zpětné volání přímé metody, přečtěte si téma Zpracování přímé metody na zařízení.

404104 připojení zařízení se vzdáleně ukončilo

Může se zobrazit, že se zařízení v pravidelných intervalech odpojí (například každých 65 minut) a v protokolech prostředků služby IoT Hub uvidíte 404104 Device Připojení ionClosedRemotely. Někdy se také zobrazí 401003 IoTHubUnauthorized a úspěšná událost připojení zařízení menší než minutu později.

Nebo se zařízení náhodně odpojí a v protokolech prostředků služby IoT Hub se zobrazí 404104 Device Připojení ionClosedRemotely.

Nebo se mnoho zařízení najednou odpojí, v metrikě Připojení ed zařízení (connectedDeviceCount) se zobrazí pokles a v protokolech služby Azure Monitor je více 404104 zařízení Připojení ionClosedRemotely a 500xxx Vnitřní chyby v protokolech služby Azure Monitor než obvykle.

K této chybě může dojít, protože vypršela platnost tokenu SAS použitého pro připojení ke službě IoT Hub , což způsobí odpojení zařízení službou IoT Hub. Připojení se znovu naváže při aktualizaci tokenu zařízením. Token SAS například ve výchozím nastavení vyprší každou hodinu pro sadu C SDK, což může vést k pravidelnému odpojení. Další informace najdete v tématu 401003 IoTHubUnauthorized.

Mezi další možnosti patří:

  • Zařízení ztratilo základní síťové připojení delší než MQTT keep-alive, což vede k vypršení časového limitu vzdálené nečinnosti. Nastavení udržování MQTT se může lišit podle jednotlivých zařízení.
  • Zařízení odeslalo resetování na úrovni protokolu TCP/IP, ale neodeslalo aplikační úroveň MQTT DISCONNECT. V podstatě zařízení náhle ukončilo základní připojení soketu. Tento problém někdy způsobuje chyby ve starších verzích sady Azure IoT SDK.
  • Aplikace na straně zařízení se chybově ukončila.

Nebo může docházet k přechodnému problému ve službě IoT Hub. Viz vnitřní chyba serveru služby IoT Hub.

Vyřešení této chyby:

  • Pokyny k chybě 401003 IoTHubUnauthorized
  • Otestováním připojení se ujistěte, že má zařízení dobré připojení ke službě IoT Hub. Pokud je síť nespolehlivý nebo přerušovaný, nedoporučujeme zvýšit hodnotu udržování, protože by mohla vést k detekci (například prostřednictvím upozornění služby Azure Monitor), která trvá déle.
  • Použijte nejnovější verze sad SDK IoT.
  • Přečtěte si pokyny k interním chybám serveru služby IoT Hub.

Ke spolehlivé správě připojení doporučujeme používat sady SDK zařízení Azure IoT. Více informací najdete v části Správa možností připojení a spolehlivé zasílání zpráv pomocí sad SDK pro zařízení služby Azure IoT Hub

409001 zařízení již existuje

Při pokusu o registraci zařízení ve službě IoT Hub se může zobrazit, že požadavek selže s chybou 409001 DeviceAlreadyExists.

K této chybě dochází, protože ve službě IoT Hub už existuje zařízení se stejným ID zařízení.

Pokud chcete tuto chybu vyřešit, použijte jiné ID zařízení a zkuste to znovu.

Může se zobrazit chyba 409002 LinkCreationConflict v protokolech spolu se selháním odpojení zařízení nebo zpráv typu cloud-zařízení.

K této chybě obvykle dochází, když IoT Hub zjistí, že klient má více než jedno připojení. Ve skutečnosti, když přijde nová žádost o připojení pro zařízení s existujícím připojením, IoT Hub ukončí stávající připojení s touto chybou.

V nejběžnějším případě samostatný problém (například 404104 Zařízení Připojení ionClosedRemotely) způsobí odpojení zařízení. Zařízení se pokusí znovu vytvořit připojení okamžitě, ale IoT Hub stále považuje zařízení připojené. IoT Hub zavře předchozí připojení a zaznamená tuto chybu.

Nebo chybná logika na straně zařízení způsobí, že zařízení naváže připojení, když je už otevřené.

Pokud chcete tuto chybu vyřešit, vyhledejte další chyby v protokolech, které můžete vyřešit, protože tato chyba se obvykle zobrazuje jako vedlejší účinek jiného přechodného problému. Jinak nezapomeňte vydat novou žádost o připojení jenom v případě, že připojení klesne.

Ztráta zámku zpráv zařízení 412002

Při pokusu o odeslání zprávy typu cloud-zařízení se může zobrazit, že požadavek selže s chybou 412002 DeviceMessageLockLost.

K této chybě dochází, protože když zařízení obdrží zprávu typu cloud-zařízení z fronty (například pomocí) ReceiveAsync()je zpráva uzamčena službou IoT Hub po dobu časového limitu uzamčení jedné minuty. Pokud se zařízení pokusí dokončit zprávu po vypršení časového limitu uzamčení, Služba IoT Hub vyvolá tuto výjimku.

Pokud Služba IoT Hub nedostane oznámení během časového limitu 1 minuty uzamčení, nastaví zprávu zpět do fronty . Zařízení se může pokusit zprávu znovu přijmout. Pokud chcete této chybě zabránit v budoucnu, implementujte logiku na straně zařízení, aby se zpráva dokončila během jedné minuty od přijetí zprávy. Tento časový limit na jednu minutu nejde změnit.

výjimka omezování 429001

Může se zobrazit, že vaše požadavky na IoT Hub selžou s chybou 429001 ThrottlingException.

K této chybě dochází v případě, že došlo k překročení limitů omezování služby IoT Hub pro požadovanou operaci.

Pokud chcete tuto chybu vyřešit, zkontrolujte, jestli nedosahujete limitu omezování tím, že porovnáte metriku odesílání zpráv telemetrie s výše uvedenými limity. Můžete také zkontrolovat metriku Počet chyb omezování. Informace o těchto metrikách najdete v tématu Metriky telemetrie zařízení. Informace o tom, jak pomocí metrik můžete monitorovat centrum IoT, najdete v tématu Monitorování služby IoT Hub.

Služba IoT Hub vrátí 429 ThrottlingException až po porušení limitu po příliš dlouhou dobu. To se provádí tak, aby se vaše zprávy nezahodily, pokud vaše centrum IoT dostane nárazový provoz. IoT Hub mezitím zpracovává zprávy rychlostí odpovídající omezení šířky pásma, která může být nízká, pokud je v backlogu příliš velký provoz. Další informace najdete v tématu věnovaném formování provozu služby IoT Hub.

Pokud narážíte na limity kvót nebo omezování, zvažte vertikální navýšení kapacity služby IoT Hub.

500xxx Vnitřní chyby

Může se zobrazit, že váš požadavek na IoT Hub selže s chybou, která začíná 500 nebo nějakým druhem chyby serveru. Mezi možnosti patří:

  • 500001 Chyba serveru: IoT Hub narazil na problém na straně serveru.

  • 500008 GenericTimeout: IoT Hub nemohl dokončit požadavek na připojení před vypršením časového limitu.

  • ServiceUnavailable (bez kódu chyby):: Služba IoT Hub zjistila vnitřní chybu.

  • InternalServerError (bez kódu chyby):: Služba IoT Hub zjistila vnitřní chybu.

Odpověď na chybu 500xxx může mít mnoho příčin. Ve všech případech je problém pravděpodobně přechodný. I když tým IoT Hubu tvrdě udržuje smlouvu SLA, u malých podmnožina uzlů IoT Hubu může občas docházet k přechodným chybám. Když se zařízení pokusí připojit k uzlu, u kterého dochází k problémům, zobrazí se tato chyba.

Pokud chcete zmírnit chyby 500xxx, zkuste to znovu ze zařízení. Pokud chcete automaticky spravovat opakování, ujistěte se, že používáte nejnovější verzi sad SDK Azure IoT. Osvědčené postupy pro zpracování přechodných chyb a opakování najdete v tématu Zpracování přechodných chyb.

Pokud problém přetrvává, zkontrolujte stav prostředku a Azure a zjistěte, jestli je ve službě IoT Hub známý problém. Můžete také použít funkci ručního převzetí služeb při selhání.

Pokud neexistují žádné známé problémy a problém přetrvává, obraťte se na podporu pro další šetření.

oddíl 503003 nebyl nalezen.

Může se zobrazit, že požadavky na IoT Hub selžou s chybou 503003 PartitionNotFound.

Tato chyba je interní pro IoT Hub a je pravděpodobně přechodná. Podívejte se na vnitřní chyby serveru služby IoT Hub.

Pokud chcete tuto chybu vyřešit, přečtěte si informace o vnitřních chybách serveru služby IoT Hub.

vypršení časového limitu brány 504101

Při pokusu o vyvolání přímé metody ze služby IoT Hub do zařízení se může zobrazit, že požadavek selže s chybou 504101 GatewayTimeout.

K této chybě dochází, protože služba IoT Hub zjistila chybu a nemohla potvrdit, jestli se přímá metoda dokončila před uplynutím časového limitu. Nebo pokud používáte starší verzi sady Azure IoT C# SDK (<1.19.0), můžete propojení AMQP mezi zařízením a IoT Hubem bezobslužně vynechat kvůli chybě.

Pokud chcete tuto chybu vyřešit, spusťte opakování nebo upgrade na nejnovější verzi sady Azure IOT C# SDK.