Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az IoT-eszközök csatlakozási problémáit 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:
Azure Monitor: a Azure Monitor lehetővé teszi a IoT Hub telemetriai adatainak gyűjtését, elemzését és 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 a megközelítés magában foglalja a riasztások beállítását az értesítések és műveletek leválasztásakor történő aktiválásához, valamint olyan naplók konfigurálásához, amelyek segítségével felderítheti a leválasztást okozó feltételeket.
Azure Event Grid: A kritikus fontosságú infrastruktúra és az eszközönkénti kapcsolat megszakadása esetén a Azure Event Grid használatával előfizethet 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
- WebHooks
- Queue Storage
- Hibrid kapcsolatok
- Event Hubs
Protokollok és portok
Az eszközök az alábbi protokollok bármelyikével csatlakozhatnak az IoT Hubhoz. Ha a kimenő portot tűzfal blokkolja, az eszköz nem tud csatlakozni.
| protokoll | Kimenő port |
|---|---|
| MQTT | 8883 |
| MQTT WebSocketen keresztül | 443 |
| AMQP | 5671 |
| AMQP WebSocketen keresztül | 443 |
| HTTPS | 443 |
A Message Queuing Telemetria Transport (MQTT) kapcsolatáról további információt a Csatlakozás IoT Hub című témakörben talál.
Eszközkapcsolat ellenőrzése
A Azure CLI és a IoT Hub portál eszközeivel ellenőrizheti, hogy az eszköz képes-e csatlakozni a központhoz és kommunikálni. Az ebben a szakaszban ismertetett lépések segítenek elkülöníteni, hogy a probléma az eszközhitelesítéssel, az eszközről a felhőbe irányuló üzenetküldéssel, a felhőalapú üzenetküldéssel vagy az ikereszköz-szinkronizálással kapcsolatos-e.
A kapcsolat ellenőrzésének előfeltételei
A Azure CLI a azure-iot kiterjesztéssel telepítve van:
az extension add --upgrade --name azure-iotAz IoT Hubban egy kapcsolati karakterlánc-gel regisztrált eszköz. Egy teszteszköz regisztrálásához és a kapcsolati karakterlánc lekéréséhez futtassa az alábbi parancsokat. Cserélje le
<your-device-id>az új eszköz nevére, és cserélje le<your-iot-hub-name>egy már létrehozott IoT Hubra.az iot hub device-identity create --device-id <your-device-id> --hub-name <your-iot-hub-name> az iot hub device-identity connection-string show --device-id <your-device-id> --hub-name <your-iot-hub-name>
Eszközhitelesítés ellenőrzése
Az eszköznek hitelesítenie kell a központtal, mielőtt adatokat cserélhet. A hitelesítés tesztelése:
A Azure CLI használatával küldjön teszttelemetriaüzenetet az eszköz identitásából. A sikeres küldés megerősíti, hogy az eszközkulcs érvényes:
az iot device simulate --device-id <your-device-id> --hub-name <your-iot-hub-name> --msg-count 1Ha a hitelesítés sikertelen, ellenőrizze, hogy az eszköz kapcsolati karakterlánca aktuális-e. Szükség esetén állítsa alaphelyzetbe az elsődleges kulcsot új kulcs létrehozásához:
az iot hub device-identity update --device-id <your-device-id> --set authentication.symmetricKey.primaryKey="" --hub-name <your-iot-hub-name>Ezután kérje le a frissített kapcsolati karakterlánc:
az iot hub device-identity connection-string show --device-id <your-device-id> --hub-name <your-iot-hub-name>
Teszt SAS-jogkivonat létrehozása
Ha az eszköz SAS-jogkivonat-hitelesítést használ, létrehozhat egy ismert jó SAS-jogkivonatot, amely kizárja a jogkivonat-létrehozási kóddal kapcsolatos problémákat:
az iot hub generate-sas-token --device-id <your-device-id> --hub-name <your-iot-hub-name>
Egy érvényes SAS-jogkivonat a következőképpen néz ki: SharedAccessSignature sr=your-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111
Az SAS-jogkivonatok programozott módon történő létrehozásának módját bemutató kódpéldákat a
Az eszközről a felhőbe irányuló kapcsolat ellenőrzése
Annak ellenőrzéséhez, hogy az eszköz által küldött telemetriai adatok elérik-e a központot:
Teszttelemetriaüzenetek küldése az eszközről:
az iot device simulate --device-id <your-device-id> --hub-name <your-iot-hub-name> --msg-count 5Az Azure Portalon keresse meg az IoT hubot. Az oldalsáv menüjének Figyelés területén válassza a Metrikák lehetőséget.
A Metrika legördülő listában válassza ki a metrikaként küldött telemetriai üzeneteket , és állítsa a jobb felső sarokban lévő időtartományt Last hour (Utolsó óra) értékre. A diagram az eszköz által küldött üzenetek összesített számát mutatja.
Megjegyzés
Néhány percig tart, amíg a metrikák elérhetővé válnak az üzenetek elküldése után.
A felhőből az eszközre irányuló kapcsolat ellenőrzése
A felhő-eszköz útvonalának ellenőrzéséhez használjon közvetlen metódushívást. Futtassa a szimulált eszközt az egyik terminálablakban, majd hívjon meg egy közvetlen metódust egy másikból:
az iot hub invoke-device-method --device-id <your-device-id> --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name <your-iot-hub-name>
A sikeres válasz megerősíti, hogy a központ elérheti az eszközt. Ha a hívás túllépi az időkorlátot, ellenőrizze, hogy az eszköz csatlakoztatva van-e, és figyeli-e a metódushívásokat.
Ikereszköz-szinkronizálás ellenőrzése
Annak ellenőrzése, hogy az ikereszköz adatai szinkronizálódnak-e az eszköz és a központ között:
Tekintse meg az aktuális ikereszközt a jelentett tulajdonságok ellenőrzéséhez:
az iot hub device-twin show --device-id <your-device-id> --hub-name <your-iot-hub-name>Küldjön egy kívánt tulajdonságfrissítést, és erősítse meg, hogy az eszköz megkapja:
az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id <your-device-id> --hub-name <your-iot-hub-name>Futtassa ismét a twin show parancsot annak megerősítésére, hogy az eszköz elismerte a kívánt tulajdonságot a jelentett tulajdonságok között.
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 Csatlakoztatott eszközök nevű 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 a következő problémákat, 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 a tény jobb választássá teszi az Event Gridet 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 a tény jobb választássá teszi az Event Gridet olyan helyzetekben, 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 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.
Megjegyzés
Az eszközcsatlakozási és kapcsolati események éles környezetben történő figyeléséhez javasoljuk, hogy az Event Grid DeviceConnected és DeviceDisconnected eseményeire feliratkozva riasztásokat aktiváljon, és figyelje az eszköz kapcsolati állapotát.
Amikor az Event Grid segítségével figyeli vagy aktiválja a riasztásokat az eszköz kapcsolatmegszakadásaira, gondoskodjon arról, hogy az Azure IoT SDK-kat használó eszközök esetében legyen megoldás az SAS-jogkivonat megújítása miatti időszakos kapcsolatmegszakadások kiszűrésére. 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: 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-kapcsolatok naplóinak 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 oldalsávjának Figyelés menüjében válassza a Naplók lehetőséget.
Váltás egyszerű módrólKQL módra. 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 a
OperationName,ResultType(hibakód) ésResultDescription(hibaüzenet) részleteit a további információé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 <your-device-id> az eszköz nevét.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "<your-device-id>"
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 deviceConnect-eseményt mutat be:
Az MQTT-eszközök kapcsolat bontá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-lekapcsolódási és csatlakozási eseményeként jelenik meg, amit időnként hibaesemények kísérhetnek.
Alapértelmezés szerint a jogkivonat élettartama az összes SDK esetében 60 perc; A fejlesztők azonban módosíthatják azt néhány SDK-ban. 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 | Token élettartama | Token megújítása | Megújítási viselkedés |
|---|---|---|---|
| .NET | 60 perc, konfigurálható | Az élettartam 85%-a konfigurálható | Az SDK leválik és újracsatlakozik a jogkivonat élettartamának végén, plusz egy 10 perces türelmi időszak után. 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álik és újracsatlakozik a jogkivonat élettartamának végén, plusz egy 10 perces türelmi időszak után. A naplókban létrehozott információs események és hibák. |
| Node.js | 60 perc, konfigurálható | Konfigurálható | Az SDK szétkapcsol é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ásodperc a lejárat előtt | Az SDK a jogkivonat élettartamának végén megszakítja a kapcsolatot és újracsatlakozik. |
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 token élettartam- és megújítási küszöbértéke módosult az alapértelmezett értékükről, ahogy azt jelezték.
.NET-eszköz SDK 1200 másodperces (20 perces) jogkivonat-élettartammal, ahol a megújítás az élettartam 90%-ánál történik. A kapcsolat bontása 30 percenként történik:
A képernyőkép a tokenmegújítás hibás viselkedését mutatja MQTT-n keresztül az Azure Monitor Naplókban a dotnet SDK-val.
Java SDK 300 másodperces (5 perces) token-élettartammal és az élettartam alapértelmezett 85%-ánál történő megújításával. A kapcsolat bontása 15 percenként történik:
A Node SDK-nek 300 másodperces (5 perces) érvényességi ideje van, a jogkivonat megújítása pedig 3 perc elteltével van megtervezve. 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 bocsáthatók ki:
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é a jogkivonat élettartamát vagy megújítási viselkedését az eszközök esetében, ellenőrizze, hogy az eszköz implementál-e ikereszköz-beállítást vagy olyan eszközmetódust, amely lehetővé teszi ezt a módosítást.
Ha az Event Hubs segítségével figyeli az eszközkapcsolatokat, győződjön meg arról, hogy van egy módszer az SAS-jogkivonat megújítása miatti időszakos leválasztások kiszűrésére. Például ne indítson el műveleteket leválasztási események alapján, ha a leválasztási eseményt egy újracsatlakozási esemény követi egy bizonyos időtartamon belül.
Megjegyzé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 ConnectionForcefullyClosedOnNewConnection rögzítve van az IoT Hub naplókban
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özök engedélyezve vannak-e. Lépjen az IoT Hub az Azure portálon, majd válassza a Devices elemet az Eszközkezelés területen.
Ha az eszköz MQTT protokollt használ, ellenőrizze, hogy a 8883-es port nyitva van-e. További információért lásd a cikk korábbi részében található Protokollok és portok részt, valamint a Kapcsolódás az IoT Hubhoz (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.