Az Azure IoT Hub hibáinak ismertetése és megoldása

Ez a cikk az IoT Hub használata során előforduló gyakori hibakódok okait és megoldásait ismerteti.

400027 Csatlakozás erősen lezárva az új kapcsolaton

A 400027 Csatlakozás ionForcefullyClosedOnNew Csatlakozás ion hiba akkor jelenhet meg, ha az eszköz leválasztja a kapcsolatot, és Communication_Error a .NET SDK és az MQTT átviteli típust használó Csatlakozás ionStatusChangeReason típusúként jelent meg. Vagy az ikereszközről a felhőbe irányuló művelet (például az olvasás vagy javítás jelentett tulajdonságai) vagy a közvetlen metódushívás meghiúsul a hibakód 400027.

Ez a hiba akkor fordul elő, ha egy másik ügyfél új kapcsolatot hoz létre az IoT Hubhoz ugyanazzal az identitással, ezért az IoT Hub bezárja az előző kapcsolatot. Az IoT Hub nem engedélyezi, hogy egynél több ügyfél ugyanazt az identitást használja.

A hiba megoldásához győződjön meg arról, hogy minden ügyfél saját identitással csatlakozik az IoT Hubhoz.

401003 IoT Hub jogosulatlan

A naplókban megjelenhet az eszközök 401003 IoTHubUnauthorized szolgáltatással való leválasztásának mintája, amelyet a 404104 Device Csatlakozás ionClosedRemotely követ, majd röviddel később sikeresen csatlakozik.

Vagy az IoT Hubra irányuló kérések az alábbi hibaüzenetek egyikével meghiúsulnak:

  • Hiányzik az engedélyezési fejléc
  • Az IotHub '*' nem tartalmazza a megadott eszközt (*)
  • A(z) *engedélyezési szabály nem engedélyezi a*hozzáférését
  • Az eszköz hitelesítése sikertelen volt, megújította a jogkivonatot vagy a tanúsítványt, és újracsatlakozott
  • Az ujjlenyomat nem egyezik a konfigurációval: Ujjlenyomat: SHA1Hash=*, SHA2Hash=*; Konfiguráció: PrimaryThumbprint=*, SecondaryThumbprint=*
  • A rendszerbiztonsági tag user@example.com nem jogosult a GET on /exampleOperation szolgáltatásra, mert nincs hozzárendelt engedélye

Ez a hiba azért fordul elő, mert az MQTT esetében egyes SDK-k az IoT Hubra támaszkodnak a kapcsolat megszakadásához, amikor az SAS-jogkivonat lejár, és tudják, mikor kell frissíteni. Tehát:

  1. Az SAS-jogkivonat lejár
  2. Az IoT Hub észleli a lejáratot, és leválasztja az eszközt 401003 IoTHubUnauthorized használatával
  3. Az eszköz befejezi a leválasztást 404104 Eszköz Csatlakozás ionClosedRemotely
  4. Az IoT SDK új SAS-jogkivonatot hoz létre
  5. Az eszköz sikeresen újracsatlakozik az IoT Hubhoz

Vagy az IoT Hub nem tudta hitelesíteni a hitelesítési fejlécet, szabályt vagy kulcsot. Ennek oka a tünetekben hivatkozott bármely ok lehet.

A hiba megoldásához nincs szükség műveletre, ha az IoT SDK-t használja a kapcsolathoz az eszköz kapcsolati sztring. Az IoT SDK újragenerálja az új jogkivonatot az SAS-jogkivonat lejárata után való újracsatlakozáshoz.

Az alapértelmezett jogkivonat élettartama 60 perc az SDK-k között; egyes SDK-k esetében azonban konfigurálható a jogkivonat élettartama és a jogkivonat megújítási küszöbértéke. Emellett az egyes SDK-k esetében eltérőek azok a hibák, amelyek akkor jönnek létre, amikor egy eszköz leválasztja és újracsatlakozik a jogkivonat megújításakor. További információkért és arról, hogyan állapíthatja meg, hogy az eszköz melyik SDK-t használja a naplókban, tekintse meg az MQTT eszközleválasztási viselkedését az Azure IoT SDK-kkal.

Az eszközfejlesztők számára, ha a hibák mennyisége aggodalomra ad okot, váltson a C SDK-ra, amely a lejárat előtt megújítja az SAS-jogkivonatot. Az AMQP esetében az SAS-jogkivonat leválasztás nélkül is frissíthető.

A megjelenő hibaüzenetnek általában meg kell magyaráznia, hogyan lehet kijavítani a hibát. Ha valamilyen okból nem fér hozzá a hibaüzenet részleteihez, győződjön meg arról, hogy:

  • A használt SAS vagy egyéb biztonsági jogkivonat nem járt le.
  • X.509-tanúsítványhitelesítés esetén az eszköz tanúsítványa vagy az eszközhöz társított hitelesítésszolgáltatói tanúsítvány nem járt le. Az X.509 hitelesítésszolgáltatói tanúsítványok IoT Hubon való regisztrálásáról a következő oktatóanyagban olvashat : Tanúsítványok létrehozása és feltöltése teszteléshez.
  • Az X.509-tanúsítvány ujjlenyomat-hitelesítéséhez az eszköztanúsítvány ujjlenyomata regisztrálva van az IoT Hubon.
  • Az engedélyezési hitelesítő adatok jól formázottak a használt protokollhoz. További információt az IoT Hub hozzáférésének szabályozása című témakörben talál.
  • A használt engedélyezési szabály rendelkezik a kért művelet engedélyével.
  • A "principal..." kezdetű utolsó hibaüzenetek esetében ez a hiba megoldható úgy, hogy a felhasználóhoz hozzárendeli az Azure RBAC megfelelő szintű engedélyét. Az IoT Hub egyik tulajdonosa például hozzárendelheti az "IoT Hub Adattulajdonos" szerepkört, amely minden engedélyt megad. Próbálja ki ezt a szerepkört az engedélyhiány elhárításához.

Feljegyzés

Egyes eszközök időeltolódási problémát tapasztalhatnak, ha az eszköz ideje meghaladja az öt perc különbséget a kiszolgálótól. Ez a hiba akkor fordulhat elő, ha egy eszköz hetek vagy akár hónapok óta problémamentesen csatlakozik egy IoT Hubhoz, de a csatlakozást folyamatosan elutasítják. A hiba az IoT Hubhoz csatlakoztatott eszközök egy részhalmazára is vonatkozhat, mivel az időeltolódás az eszköz első csatlakoztatásának vagy bekapcsolásának időpontjától függően eltérő sebességgel történhet.

Az NTP használatával történő időszinkronizálás vagy az eszköz újraindítása (amely automatikusan képes időszinkronizálást végrehajtani a rendszerindítási folyamat során) gyakran megoldja a problémát, és lehetővé teszi az eszköz újracsatlakozását. A hiba elkerülése érdekében konfigurálja az eszközt úgy, hogy az NTP használatával rendszeres időközönként szinkronizáljon. A szinkronizálást napi, heti vagy havi ütemezéssel ütemezheti az eszköz élményének eltérésétől függően. Ha nem tudja konfigurálni a rendszeres NTP-szinkronizálást az eszközön, ütemezzen rendszeres újraindítást.

403002 IoT Hub-kvóta túllépve

Előfordulhat, hogy az IoT Hubra irányuló kérések meghiúsulnak az IoTHubQuotaExceed 403002 hiba miatt. Az Azure Portalon az IoT Hub eszközlistája nem töltődik be.

Ez a hiba általában akkor fordul elő, ha túllépi az IoT Hub napi üzenetkvótáit. A hiba megoldásához tegye a következőket:

Ezt a hibát tömeges importálási feladat is visszaadhatja, ha az IoT Hubon regisztrált eszközök száma megközelíti vagy meghaladja az IoT Hub kvótakorlátját. További információ: Importálási feladatok hibaelhárítása.

403004 Eszköz maximális üzenetsor-mélysége túllépve

Amikor felhőből eszközre irányuló üzenetet próbál küldeni, láthatja, hogy a kérés meghiúsul a 403004 vagy a DeviceMaximumQueueDepthExceeded hiba miatt.

Ennek a hibának az az oka, hogy az eszközön lekért üzenetek száma meghaladja az üzenetsorkorlátot.

Ennek a korlátnak a legvalószínűbb oka az, hogy HTTPS-t használ az üzenet fogadásához, ami folyamatos lekérdezéshez vezet a kérés szabályozásához vezető IoT Hub használatával ReceiveAsync.

A HTTPS-lel rendelkező felhőből eszközre irányuló üzenetek támogatott mintája időszakosan csatlakoztatott eszközök, amelyek ritkán (kevesebb mint 25 percenként) ellenőrzik az üzeneteket. Az üzenetsorkorlátba való futtatás valószínűségének csökkentése érdekében váltson AMQP-re vagy MQTT-re a felhőből az eszközre irányuló üzenetek esetében.

Az eszközoldali logika továbbfejlesztésével gyorsan befejezheti, elutasíthatja vagy felhagyhatja az üzenetsorba helyezett üzeneteket, lerövidítheti az élettartamot, vagy kevesebb üzenetet küldhet. Lásd a C2D-üzenetek élettartamával foglalkozó részt.

Végül fontolja meg a Várólisták törlése API használatát a függőben lévő üzenetek rendszeres törléséhez a korlát elérése előtt.

403006 Eszköz maximális aktív fájlfeltöltési korlátja túllépve

Előfordulhat, hogy a fájlfeltöltési kérés meghiúsul a DeviceMaximumActiveFileUploadLimitExceeded 403006 hibakóddal, és egy "Az aktív fájlfeltöltési kérelmek száma nem haladhatja meg a 10-et" hibaüzenettel.

Ez a hiba azért fordul elő, mert minden eszközügyfél egyidejű fájlfeltöltésekre korlátozott. Könnyedén túllépheti a korlátot, ha az eszköz nem értesíti az IoT Hubot a fájlfeltöltések befejezésekor. Ezt a problémát általában egy megbízhatatlan eszközoldali hálózat okozza.

A hiba megoldásához győződjön meg arról, hogy az eszköz képes azonnal értesíteni az IoT Hub fájlfeltöltésének befejezését. Ezután próbálja csökkenteni az SAS-jogkivonat TTL-ját a fájlfeltöltési konfigurációhoz.

404001 eszköz nem található

A felhőalapú (C2D) kommunikáció, például C2D-üzenet, ikerfrissítés vagy közvetlen módszer során előfordulhat, hogy a művelet a DeviceNotFound 404001 hiba miatt hiúsul meg.

A művelet meghiúsult, mert az IoT Hub nem találja az eszközt. Az eszköz nincs regisztrálva, vagy le van tiltva.

A hiba megoldásához regisztrálja a használt eszközazonosítót, majd próbálkozzon újra.

404103 eszköz nincs online állapotban

Előfordulhat, hogy egy eszköz közvetlen metódusa a DeviceNotOnline 404103 hibával meghiúsul, még akkor is, ha az eszköz online állapotban van.

Ha tudja, hogy az eszköz online állapotban van, és továbbra is megjelenik a hiba, akkor a hiba valószínűleg azért történt, mert a közvetlen metódus visszahívása nincs regisztrálva az eszközön.

Ha az eszközt megfelelően szeretné konfigurálni a közvetlen metódusvisszahívásokhoz, olvassa el a Közvetlen metódus kezelése az eszközön című témakört.

404104 eszközkapcsolat távolról lezárva

Előfordulhat, hogy az eszközök rendszeres időközönként (például 65 percenként) megszakadnak, és 404104 Device Csatlakozás ionClosedRemotely állapot jelenik meg az IoT Hub erőforrásnaplóiban. Néha 401003 IoTHubUnauthorized és egy sikeres eszközkapcsolati esemény is megjelenik kevesebb mint egy perccel később.

Vagy az eszközök véletlenszerűen szakadnak le, és 404104 Eszköz Csatlakozás ionClosedRemotely jelenik meg az IoT Hub erőforrásnaplóiban.

Vagy ha sok eszköz egyszerre bontja a kapcsolatot, a Csatlakozás eszközök (connectedDeviceCount) metrikájában visszaesés jelenik meg, és a szokásosnál több 404104 Eszköz Csatlakozás ionClosedRemotely és 500xxx belső hiba jelenik meg az Azure Monitor-naplókban.

Ez a hiba azért fordulhat elő, mert az IoT Hubhoz való csatlakozáshoz használt SAS-jogkivonat lejárt, ezért az IoT Hub leválasztotta az eszközt. A kapcsolat újra létrejön, amikor az eszköz frissíti a jogkivonatot. Az SAS-jogkivonat például alapértelmezés szerint óránként lejár a C SDK esetében, ami rendszeres leválasztáshoz vezethet. További információ: 401003 IoTHubUnauthorized.

További lehetőségek:

  • Az eszköz az MQTT-nél hosszabb ideig megszakadt a mögöttes hálózati kapcsolat, ami távoli tétlenségi időtúllépést eredményezett. Az MQTT életben tartásának beállítása eszközenként eltérő lehet.
  • Az eszköz TCP/IP-szintű alaphelyzetbe állítást küldött, de nem küldött alkalmazásszintűt MQTT DISCONNECT. Alapvetően az eszköz hirtelen bezárta a mögöttes szoftvercsatorna-kapcsolatot. Ezt a problémát néha az Azure IoT SDK régebbi verzióiban előforduló hibák okozzák.
  • Az eszközoldali alkalmazás összeomlott.

Vagy előfordulhat, hogy az IoT Hub átmeneti problémát tapasztal. Lásd az IoT Hub belső kiszolgálóhibát.

A hiba megoldásához tegye a következőket:

  • Tekintse meg az IoTHubUnauthorized 401003 hiba útmutatását.
  • A kapcsolat tesztelésével győződjön meg arról, hogy az eszköz jó kapcsolattal rendelkezik az IoT Hubhoz. Ha a hálózat megbízhatatlan vagy időszakos, nem javasoljuk az életben tartási érték növelését, mert az észlelés (például Azure Monitor-riasztásokkal) hosszabb időt vehet igénybe.
  • Használja az IoT SDK-k legújabb verzióit.
  • Tekintse meg az IoT Hub belső kiszolgálóhibáira vonatkozó útmutatást.

Javasoljuk, hogy az Azure IoT-eszköz SDK-kkal megbízhatóan kezelje a kapcsolatokat. további információkért Csatlakozás és megbízható üzenetküldés kezelése az Azure IoT Hub eszközoldali SDK-ival

409001 eszköz már létezik

Amikor megpróbál regisztrálni egy eszközt az IoT Hubon, láthatja, hogy a kérés a DeviceAlreadyExists 409001 hibával meghiúsul.

Ez a hiba azért fordul elő, mert az IoT Hubban már létezik ugyanazzal az eszközazonosítóval rendelkező eszköz.

A hiba megoldásához használjon egy másik eszközazonosítót, és próbálkozzon újra.

Előfordulhat, hogy a 409002 LinkCreationConflict hiba jelenik meg a naplókban az eszköz leválasztásával vagy a felhőből az eszközre irányuló üzenethiba mellett.

Ez a hiba általában akkor fordul elő, ha az IoT Hub azt észleli, hogy egy ügyfél több kapcsolattal rendelkezik. Amikor egy meglévő kapcsolattal rendelkező eszközhöz új kapcsolatkérés érkezik, az IoT Hub ezzel a hibával bezárja a meglévő kapcsolatot.

A leggyakoribb esetben egy külön probléma (például 404104 Device Csatlakozás ionClosedRemotely) okozza az eszköz leválasztását. Az eszköz megpróbálja azonnal újra létrehozni a kapcsolatot, de az IoT Hub továbbra is csatlakoztatottnak tekinti az eszközt. Az IoT Hub bezárja az előző kapcsolatot, és naplózza ezt a hibát.

Vagy a hibás eszközoldali logika miatt az eszköz akkor hozza létre a kapcsolatot, ha már meg van nyitva.

A hiba megoldásához keressen más hibákat a naplókban, amelyeket elháríthat, mert ez a hiba általában egy másik, átmeneti probléma mellékhatásaként jelenik meg. Ellenkező esetben csak akkor adjon ki új kapcsolatkérést, ha a kapcsolat megszakad.

412002 eszköz üzenetzárolása elveszett

Amikor felhőből eszközre irányuló üzenetet próbál küldeni, láthatja, hogy a kérés a DeviceMessageLockLost 412002 hibával meghiúsul.

Ez a hiba azért fordul elő, mert amikor egy eszköz egy felhőből eszközre irányuló üzenetet kap az üzenetsorból (például a használatával ReceiveAsync()), az IoT Hub zárolja az üzenetet egy perces zárolási időtúllépési időtartamra. Ha az eszköz megpróbálja befejezni az üzenetet a zárolási időtúllépés lejárta után, az IoT Hub kiveszi ezt a kivételt.

Ha az IoT Hub nem kapja meg az értesítést az egyperces zárolási időtúllépési időtartamon belül, visszaállítja az üzenetet enqueued állapotra. Az eszköz megpróbálhatja újra fogadni az üzenetet. Annak érdekében, hogy a hiba a jövőben ne fordul elő, implementáljon eszközoldali logikát, hogy az üzenet fogadásától számított egy percen belül befejeződjön az üzenet. Ez az egyperces időtúllépés nem módosítható.

429001 Szabályozási kivétel

Előfordulhat, hogy az IoT Hubra irányuló kérései a ThrottlingException 429001 hiba miatt hiúsulnak meg.

Ez a hiba akkor fordul elő, ha az IoT Hub szabályozási korlátai túllépték a kért műveletre vonatkozó korlátozásokat .

A hiba megoldásához ellenőrizze, hogy eléri-e a szabályozási korlátot a telemetriai üzenetnek a fent megadott korlátokhoz viszonyított metrikájának összehasonlításával. A szabályozási hibák számának metrikáját is ellenőrizheti. Ezekről a metrikákról az eszköz telemetriai mérőszámairól olvashat. Az IoT Hub figyeléséhez használt metrikákról az IoT Hub monitorozása című témakörben olvashat.

Az IoT Hub csak akkor adja vissza a 429 ThrottlingException értéket, ha a korlátot túl hosszú ideig megsértették. Ez azért történik, hogy az üzenetek ne eshessenek el, ha az IoT Hub kipukkanó forgalmat kap. Eközben az IoT Hub a művelet sávszélesség-szabályozási értékén dolgozza fel az üzeneteket, ami lassú lehet, ha túl nagy a forgalom a várólistán. További tudnivalókért lásd az IoT Hub adatforgalom-alakításával kapcsolatos részt.

Ha kvóta- vagy szabályozási korlátba ütközik, fontolja meg az IoT Hub felskálázását.

500xxx Belső hibák

Előfordulhat, hogy az IoT Hubra irányuló kérése egy 500-zal kezdődő és/vagy valamilyen "kiszolgálóhiba" hibával meghiúsul. Néhány lehetőség:

  • 500001 ServerError: Az IoT Hub kiszolgálóoldali problémába ütközött.

  • 500008 GenericTimeout: Az IoT Hub nem tudta befejezni a kapcsolatkérést, mielőtt időtúllépést végez.

  • ServiceUnavailable (nincs hibakód): Az IoT Hub belső hibát észlelt.

  • InternalServerError (nincs hibakód): Az IoT Hub belső hibát észlelt.

Az 500xxx hibaválasznak számos oka lehet. A probléma minden esetben valószínűleg átmeneti. Bár az IoT Hub csapata keményen dolgozik az SLA fenntartásán, az IoT Hub-csomópontok kis részhalmazai időnként átmeneti hibákat tapasztalhatnak. Amikor az eszköz megpróbál csatlakozni egy problémás csomóponthoz, ezt a hibaüzenetet kapja.

Az 500xxx-hibák elhárításához próbálkozzon újra az eszközről. Az újrapróbálkozások automatikus kezeléséhez győződjön meg arról, hogy az Azure IoT SDK-k legújabb verzióját használja. Az átmeneti hibakezeléssel és újrapróbálkozásokkal kapcsolatos ajánlott eljárásokért tekintse meg az átmeneti hibakezelést.

Ha a probléma továbbra is fennáll, ellenőrizze a Resource Health és az Azure állapotát , hogy az IoT Hub ismert problémával rendelkezik-e. A manuális feladatátvételi funkciót is használhatja.

Ha nincsenek ismert problémák, és a probléma továbbra is fennáll, forduljon az ügyfélszolgálathoz a további vizsgálathoz.

503003 partíció nem található

Előfordulhat, hogy az IoT Hubra irányuló kérések meghiúsulnak a PartitionNotFound 503003 hiba miatt.

Ez a hiba az IoT Hub belső része, és valószínűleg átmeneti. Lásd az IoT Hub belső kiszolgálói hibáit.

A hiba elhárításához tekintse meg az IoT Hub belső kiszolgálói hibáit.

504101 átjáró időtúllépése

Amikor közvetlen metódust próbál meghívni az IoT Hubról egy eszközre, láthatja, hogy a kérés a GatewayTimeout 504101 hiba miatt meghiúsul.

Ez a hiba azért fordul elő, mert az IoT Hub hibát észlelt, és nem tudta ellenőrizni, hogy a közvetlen módszer befejeződött-e az időzítés előtt. Vagy ha az Azure IoT C# SDK (<1.19.0) egy korábbi verzióját használja, az eszköz és az IoT Hub közötti AMQP-kapcsolat egy hiba miatt csendesen elvethető.

A hiba megoldásához próbálkozzon újra vagy frissítsen az Azure IOT C# SDK legújabb verziójára.