Az Azure IoT Hub eszközkapcsolatának monitorozása, diagnosztizálása és hibaelhárítása
Csatlakozás IoT-eszközökkel kapcsolatos problémákat nehéz lehet elhárítani, mert számos lehetséges hibapont áll fenn. Az alkalmazáslogika, a fizikai hálózatok, a protokollok, a hardver, az IoT Hub és más felhőszolgáltatások mind okozhatnak problémákat. A probléma forrásának észlelése és rögzítése kritikus fontosságú. Egy nagy méretű IoT-megoldás azonban több ezer eszközzel rendelkezhet, ezért nem praktikus manuálisan ellenőrizni az egyes eszközöket. Az IoT Hub két Azure-szolgáltatással integrálva segít:
Az Azure Monitor lehetővé teszi az IoT Hub telemetriai adatainak gyűjtését, elemzését és a telemetria kezelésére. A problémák nagy léptékű észleléséhez, diagnosztizálásához és hibaelhárításához használja az IoT Hub által az Azure Monitoron keresztül nyújtott monitorozási képességeket. Ez magában foglalja a riasztások beállítását, amelyek értesítéseket és műveleteket aktiválnak a kapcsolat bontása esetén, valamint olyan naplók konfigurálását, amelyek segítségével felderítheti a leválasztást okozó feltételeket.
Azure Event Grid A kritikus infrastruktúra és az eszközönkénti kapcsolat bontása érdekében az Azure Event Grid használatával iratkozzon fel az IoT Hub által kibocsátott eszközcsatlakozási és leválasztási eseményekre. Az Azure Event Grid lehetővé teszi a következő eseménykezelők használatát:
- Azure Functions
- Logic Apps
- Azure Automation
- Webhookok
- Queue Storage
- Hibrid kapcsolatok
- Event Hubs
Event Grid és Azure Monitor
Az Event Grid alacsony késésű, eszközenkénti monitorozási megoldást biztosít, amellyel nyomon követheti a kritikus eszközök és az infrastruktúra eszközkapcsolatait. Az Azure Monitor egy Csatlakozás eszköznek nevezett metrikát biztosít, amellyel monitorozhatja az IoT Hubhoz csatlakoztatott eszközök számát, és riasztást aktiválhat, ha ez a szám egy statikus küszöbérték alá csökken.
Vegye figyelembe az alábbiakat, amikor eldönti, hogy az Event Gridet vagy az Azure Monitort használja-e egy adott forgatókönyvhöz:
Riasztás késése: Az IoT Hub kapcsolati eseményei sokkal gyorsabban lesznek kézbesítve az Event Griden keresztül. Ez jobb választás az Event Grid számára olyan helyzetekben, ahol a gyors értesítés kívánatos.
Eszközönkénti értesítések: Az Event Grid lehetővé teszi az egyes eszközök kapcsolódásainak és leválasztásának nyomon követését. Ez jobb választás az Event Grid számára olyan forgatókönyvekhez, ahol figyelnie kell a kritikus eszközök kapcsolatait.
Egyszerű beállítás: Az Azure Monitor metrikariasztásai egyszerű beállítási felületet biztosítanak, amely nem igényel integrációt más szolgáltatásokkal az értesítések e-mailben, SMS-ben, hangüzenetben és egyéb értesítéseken keresztüli kézbesítéséhez. Az Event Grid használatával integrálnia kell más Azure-szolgáltatásokkal az értesítések kézbesítéséhez. Mindkét szolgáltatás integrálható más szolgáltatásokkal, így összetettebb műveleteket indíthat el.
Event Grid: Kapcsolódási és leválasztási események monitorozása
Az éles környezetben lévő eszközcsatlakozási és leválasztási események figyeléséhez javasoljuk, hogy az Event Grid eszköz Csatlakozás ésDeviceDisconnected eseményeire feliratkozva aktiválja a riasztásokat, és figyelje az eszköz kapcsolati állapotát. Az Event Grid alacsonyabb eseménykéséseket biztosít, mint az Azure Monitor, és eszközenként is monitorozhat. Ezek a tényezők teszik az Event Gridet a kritikus eszközök és infrastruktúra monitorozásának előnyben részesített módszereként.
Ha az Event Grid használatával figyeli vagy aktiválja a riasztásokat az eszköz megszakadása esetén, győződjön meg arról, hogy az Azure IoT SDK-t használó eszközökön az SAS-jogkivonat megújítása miatti rendszeres kapcsolatkiválasztások kiszűrésére szolgál. További információ: MQTT-eszközök leválasztási viselkedése az Azure IoT SDK-kkal.
Az eszközkapcsolati események Event Griddel való monitorozásával kapcsolatos további információkért tekintse meg az alábbi cikkeket:
Az Event Grid és az IoT Hub használatának áttekintését lásd : React to IoT Hub events with Event Grid. Különös figyelmet kell fordítani az eszköz kapcsolati állapotának eseményeire vonatkozó korlátozásokra.
Az eszközkapcsolati események megrendelésével kapcsolatos oktatóanyagért lásd : Eszközkapcsolati események megrendelése az Azure IoT Hubról az Azure Cosmos DB használatával.
Az e-mail-értesítések küldésével kapcsolatos oktatóanyagért tekintse meg az Azure IoT Hub-eseményekről szóló e-mail-értesítések küldése az Event Grid és a Logic Apps használatával című témakört az Event Grid dokumentációjában.
Azure Monitor: Kapcsolati események átirányítása naplókhoz
Az IoT Hub folyamatosan bocsát ki erőforrásnaplókat több műveletkategóriához. A naplóadatok gyűjtéséhez azonban létre kell hoznia egy diagnosztikai beállítást, amely átirányítja azokat egy olyan helyre, ahol elemezhető vagy archiválható. Az egyik ilyen cél az Azure Monitor-naplók egy Log Analytics-munkaterületen keresztül (lásd a díjszabást), ahol Kusto-lekérdezésekkel elemezheti az adatokat.
Az IoT Hub-erőforrásnapló-kapcsolatok kategória olyan műveleteket és hibákat bocsát ki, amelyek az eszközkapcsolatokkal kapcsolatosak. Az alábbi képernyőképen egy diagnosztikai beállítás látható, amely ezeket a naplókat egy Log Analytics-munkaterületre irányítja:
Javasoljuk, hogy az IoT Hub létrehozása után a lehető leghamarabb hozzon létre diagnosztikai beállítást, mert bár az IoT Hub mindig kibocsátja az erőforrásnaplókat, az Azure Monitor csak akkor gyűjti őket, ha egy célhelyre irányítja őket.
Ha többet szeretne megtudni a naplók célhelyre való átirányításáról, olvassa el a Gyűjtemény és az útválasztás című témakört. A diagnosztikai beállítások létrehozásának részletes útmutatását a Metrikák és naplók használata oktatóanyagban találja.
Azure Monitor: Metrikariasztások beállítása az eszközök leválasztása esetén
Riasztásokat az IoT Hub által kibocsátott platformmetrikák alapján állíthat be. Metrikariasztásokkal értesítheti az egyéneket arról, hogy egy fontos feltétel történt, és olyan műveleteket is aktiválhat, amelyek automatikusan reagálhatnak erre a feltételre.
A Csatlakozás eszközök (előzetes verzió) metrika azt jelzi, hogy hány eszköz csatlakozik az IoT Hubhoz. Riasztásokat hozhat létre, ha ez a metrika egy küszöbérték alá csökken:
Metrikariariasztási szabályokkal figyelheti az eszközelválasztási rendellenességeket a nagy léptékben. Ez azt jelenti, hogy riasztásokkal állapítsa meg, hogy jelentős számú eszköz mikor bontja le váratlanul a kapcsolatot. Ha ezt észleli, a hiba elhárításához tekintse meg a naplókat. Ha közel valós időben szeretné figyelni a kritikus eszközök leválasztását és leválasztását, az Event Gridet kell használnia.
Az IoT Hub riasztásaival kapcsolatos további információkért lásd : Riasztások a Monitor IoT Hubban. A riasztások IoT Hubban való létrehozásáról a Metrikák és naplók használata oktatóanyagban olvashat. A riasztások részletesebb áttekintéséért tekintse meg a Microsoft Azure-beli riasztások áttekintését az Azure Monitor dokumentációjában.
Azure Monitor: Naplók használata a csatlakozási hibák elhárításához
Ha az Azure Monitor metrikariasztásaival vagy az Event Griddel észleli az eszköz megszakadását, naplókkal elháríthatja az okot. Ez a szakasz azt ismerteti, hogyan kereshet gyakori problémákat az Azure Monitor-naplókban. Az alábbi lépések feltételezik, hogy már létrehozott egy diagnosztikai beállítást az IoT Hub Csatlakozás ions-naplók Log Analytics-munkaterületre való küldéséhez.
Miután létrehozott egy diagnosztikai beállítást az IoT Hub-erőforrásnaplók Azure Monitor-naplókhoz való átirányításához, kövesse az alábbi lépéseket a naplók Azure Portalon való megtekintéséhez.
Az IoT Hub bal oldali paneljének Figyelés csoportjában válassza a Naplók lehetőséget.
Az IoT Hub csatlakozási hibanaplóinak elkülönítéséhez írja be a következő lekérdezést a lekérdezésszerkesztőbe, majd válassza a Futtatás lehetőséget:
AzureDiagnostics | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
Ha vannak eredmények, keresse meg
OperationName
a ,ResultType
(hibakódot) ésResultDescription
(hibaüzenetet) a további részletekért.
A leggyakoribb hibákkal kapcsolatos segítségért használja az alábbi problémamegoldási útmutatókat:
Azure Monitor: Naplók használata egy adott eszköz kapcsolatának monitorozásához
Előfordulhatnak olyan helyzetek, amikor az Azure Monitort szeretné használni egy adott eszköz csatlakozási hibáinak és információinak megtekintéséhez. Az eszköz kapcsolati eseményeinek elkülönítéséhez kövesse az előző szakaszban ismertetett lépéseket, de írja be a következő lekérdezést. Cserélje le a teszteszközt az eszköz nevére.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "test-device"
A lekérdezés a céleszközhöz tartozó hiba- és információs eseményeket is visszaadja. Az alábbi példakimenet egy információs eszközt Csatlakozás eseményt jelenít meg:
Az MQTT-eszközök leválasztási viselkedése az Azure IoT SDK-kkal
Az Azure IoT-eszköz SDK-k leválasztják az IoT Hubot, majd újracsatlakoznak, amikor az MQTT (és az MQTT over WebSockets) protokollon keresztül megújítják az SAS-jogkivonatokat. A naplókban ez információs eszköz leválasztásaként jelenik meg, és időnként hibaesemények kísérik az eseményeket.
Alapértelmezés szerint a jogkivonat élettartama az összes SDK esetében 60 perc; azonban egyes SDK-k fejlesztői módosíthatják. Az alábbi táblázat az egyes SDK-k jogkivonat-élettartamát, jogkivonat-megújítását és jogkivonat-megújítási viselkedését foglalja össze:
SDK | Jogkivonat élettartama | Jogkivonat megújítása | Megújítási viselkedés |
---|---|---|---|
.NET | 60 perc, konfigurálható | Az élettartam 85%-a konfigurálható | Az SDK leválasztja és újracsatlakozik a jogkivonat élettartama alatt, plusz egy 10 perces türelmi időszak. A naplókban létrehozott információs események és hibák. |
Java | 60 perc, konfigurálható | Az élettartam 85%-a, nem konfigurálható | Az SDK leválasztja és újracsatlakozik a jogkivonat élettartama alatt, plusz egy 10 perces türelmi időszak. A naplókban létrehozott információs események és hibák. |
Node.js | 60 perc, konfigurálható | Konfigurálható | Az SDK leválasztja és újracsatlakozik a jogkivonat megújításakor. A naplókban csak tájékoztató események jönnek létre. |
Python | 60 perc, konfigurálható | 120 másodperccel a lejárat előtt | Az SDK leválasztja és újracsatlakozik a jogkivonat élettartama során. |
Az alábbi képernyőképek a különböző SDK-k jogkivonat-megújítási viselkedését mutatják be az Azure Monitor-naplókban. A jogkivonat élettartam- és megújítási küszöbértéke módosult az alapértelmezett értékükről, amint azt a rendszer megjegyezte.
.NET-eszköz SDK 1200 másodperces (20 perces) jogkivonat-élettartammal és megújítással az élettartam 90%-ában történik. a kapcsolat megszakadása 30 percenként történik:
Java SDK 300 másodperces (5 perces) jogkivonat-élettartammal és az élettartam alapértelmezett 85%-ával. A kapcsolat bontása 15 percenként történik:
A Node SDK 300 másodperces (5 perces) jogkivonat-élettartammal és jogkivonat-megújítással 3 percre van beállítva. A kapcsolat megszakad a jogkivonat megújítása során. Emellett nincsenek hibák, csak információs csatlakozási/leválasztási események jelennek meg:
Az eredmények gyűjtéséhez az alábbi lekérdezést használtuk. A lekérdezés kinyeri az SDK nevét és verzióját a tulajdonságcsomagból. További információ: SDK-verzió az IoT Hub-naplókban.
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
IoT-megoldások fejlesztőjeként vagy operátoraként tisztában kell lennie ezzel a viselkedéssel a kapcsolódási/leválasztási események és a naplók kapcsolódó hibáinak értelmezéséhez. Ha módosítani szeretné az eszközök jogkivonatának élettartamát vagy megújítási viselkedését, ellenőrizze, hogy az eszköz implementál-e ikereszköz-beállítást vagy olyan eszközmetódust, amely ezt lehetővé teszi.
Ha az Event Hubs segítségével figyeli az eszközkapcsolatokat, győződjön meg arról, hogy az SAS-jogkivonat megújítása miatt az időszakos leválasztások kiszűrésére épül. Például ne váltsa ki a leválasztásokon alapuló műveleteket, ha a leválasztási eseményt egy kapcsolati esemény követi egy bizonyos időtartamon belül.
Feljegyzés
Az IoT Hub eszközönként csak egy aktív MQTT-kapcsolatot támogat. Ha egy új MQTT-kapcsolat ugyanazon eszközazonosító nevében történik, az IoT Hub megszakítja a meglévő kapcsolatot.
400027 Csatlakozás ionForcefullyClosedOnNew Csatlakozás ion be lesz jelentkezve az IoT Hub-naplókba
Megpróbáltam a lépéseket, de nem működtek.
Ha az előző lépések nem segítettek, próbálkozzon a következőkkel:
Ha fizikailag vagy távolról (például SSH) hozzáfér a problémás eszközökhöz, kövesse az eszközoldali hibaelhárítási útmutatót a hibaelhárítás folytatásához.
Ellenőrizze, hogy az eszközei engedélyezve vannak-e az Azure Portalon > az IoT Hub > IoT-eszközein.
Ha az eszköz MQTT protokollt használ, ellenőrizze, hogy a 8883-es port nyitva van-e. További információ: Csatlakozás az IoT Hubra (MQTT).
Az Azure IoT Hubhoz, a Stack Overflow-hoz vagy a Azure-támogatás a Microsoft Q&A kérdésoldaláról kaphat segítséget.
Következő lépések
Az átmeneti problémák megoldásáról további információt az Átmeneti hibakezelés című témakörben talál.
Az Azure IoT-eszköz SDK-jairól és az újrapróbálkozások kezeléséről további információt az Újrapróbálkozási minták című témakörben talál.