Övervaka enhetens anslutningsstatus
Azure IoT Hub har stöd för flera metoder för att övervaka status för dina enheter. Den här artikeln beskriver de olika övervakningsmetoderna och ger vägledning som hjälper dig att välja det bästa alternativet för din IoT-lösning.
I följande tabell beskrivs tre sätt att övervaka enhetens anslutningsstatus:
Metod | Statusfrekvens | Kostnad | Arbete med att skapa |
---|---|---|---|
Egenskapen Enhetstvilling connectionState | Tillfälligt | Lägst | Lägst |
Event Grid | 60 sekunder | Lägst | Lägst |
Mönster för anpassad enhets pulsslag | Egen | Högst | Högst |
På grund av dess tillförlitlighet, låga kostnad och användarvänlighet rekommenderar vi Event Grid som den bästa övervakningslösningen för de flesta kunder.
Det finns dock vissa begränsningar för övervakning med Event Grid som kan diskvalificera det för vissa IoT-lösningar. Använd den här artikeln för att förstå fördelarna och begränsningarna för varje alternativ.
EnhetstvillinganslutningState
Varje IoT Hub-enhetsidentitet innehåller en egenskap som kallas connectionState som rapporterar antingen ansluten eller frånkopplad. Den här egenskapen representerar IoT Hubs förståelse av en enhets anslutningsstatus.
Egenskapen anslutningstillstånd har flera begränsningar:
- Anslutningstillståndet uppdateras endast för enheter som använder MQTT eller AMQP.
- Uppdateringar till den här egenskapen förlitar sig på ping på protokollnivå och kan fördröjas så mycket som fem minuter.
Därför rekommenderar vi att du endast använder fältet connectionState under utveckling och felsökning. IoT-lösningar bör inte köra frågor mot fältet vid körning. Fråga till exempel inte fältet connectionState för att kontrollera om en enhet är ansluten innan du skickar ett meddelande från moln till enhet eller ett SMS.
Event Grid
Vi rekommenderar Event Grid som den bästa övervakningslösningen för de flesta kunder.
Prenumerera på enheten Anslut ed och deviceDisconnected events on Event Grid för att få aviseringar och övervaka enhetens anslutningstillstånd.
Använd följande artiklar för att lära dig hur du integrerar enhetsanslutna och frånkopplade händelser i din IoT-lösning:
- Reagera på IoT Hub-händelser med hjälp av Event Grid
- Beställa enhetsanslutningshändelser med hjälp av Cosmos DB
Händelser för enhetsanslutningstillstånd är tillgängliga för enheter som ansluter med MQTT- eller AMQP-protokollet eller med hjälp av något av dessa protokoll via WebSockets. Begäranden som görs endast med HTTPS utlöser inte meddelanden om enhetsanslutningstillstånd.
- För enheter som ansluter med Azure IoT SDK:er för Java, Node eller Python:
- MQTT: Anslutningstillståndshändelser skickas automatiskt.
- AMQP: en länk från moln till enhet ska skapas för att minska fördröjningar i rapporteringsanslutningstillstånd.
- För enheter som ansluter med Azure IoT SDK:er för .NET eller C rapporteras inte anslutningstillståndshändelser förrän ett första meddelande från enheten till molnet skickas eller ett meddelande från moln till enhet tas emot.
Utanför Azure IoT SDK:er motsvarar dessa åtgärder i MQTT prenumerations- eller PUBLISH-åtgärder i lämpliga meddelandeavsnitt. Över AMQP motsvarar dessa åtgärder att ansluta eller överföra ett meddelande på lämpliga länksökvägar.
Begränsningar för Event Grid
Om du använder Event Grid för att övervaka enhetens status följer följande begränsningar:
- Event Grid rapporterar inte varje enskild enhetsanslutnings- och frånkopplingshändelse. I stället avsöker den efter enhetsstatus var 60:e sekund och publicerar det senaste anslutningstillståndet om det skedde en tillståndsändring. Därför kan tillståndsändringsrapporter fördröjas upp till en minut och enskilda tillståndsändringar kan avrapporteras om flera händelser inträffar inom 60-sekundersfönstret.
- Enheter som använder AMQP behöver länken från moln till enhet innan de kan rapportera enhetsstatus.
- Event Grid exponerar en offentlig slutpunkt som inte kan döljas.
Om någon av dessa begränsningar påverkar din möjlighet att använda Event Grid för övervakning av enhetsstatus bör du överväga att skapa ett anpassat pulsslagsmönster för enheten i stället.
Mönster för enhetens pulsslag
Om du behöver känna till enheternas anslutningstillstånd, men begränsningarna i Event Grid är för begränsade för din lösning, kan du implementera pulsslagsmönstret. I pulsslagsmönstret skickar enheten meddelanden från enhet till moln minst en gång varje fast tid (till exempel minst en gång i timmen). Även om en enhet inte har några data att skicka skickar den fortfarande ett tomt meddelande från enhet till moln, vanligtvis med en egenskap som identifierar den som ett pulsslagsmeddelande. På tjänstsidan underhåller lösningen en karta med det senaste pulsslag som togs emot för varje enhet. Om lösningen inte tar emot ett pulsslagsmeddelande inom den förväntade tiden från enheten förutsätter den att det finns ett problem med enheten.
Begränsningar för enhetens pulsslag
Eftersom pulsslagsmeddelanden implementeras som meddelanden från enhet till moln räknas de mot din IoT Hub-meddelandekvot och begränsningsgränser.
Mönster för kort förfallotid
Om en IoT-lösning endast använder anslutningstillståndet för att avgöra om moln-till-enhet-meddelanden ska skickas till en enhet och meddelanden inte skickas till stora uppsättningar enheter bör du överväga att använda mönstret för kort förfallotid som ett enklare alternativ till pulsslagsmönstret. Det korta förfallotidsmönstret är ett sätt att avgöra om du vill skicka meddelanden från molnet till enheten genom att skicka meddelanden med kort förfallotid för meddelanden och begära meddelandebekräftelser från enheterna.
Mer information finns i Meddelande förfallodatum (time to live).
Andra övervakningsalternativ
En mer komplex implementering kan innehålla information från Azure Monitor och Azure Resource Health för att identifiera enheter som försöker ansluta eller kommunicera men misslyckas. Azure Monitor-instrumentpaneler är användbara för att se enhetens aggregerade hälsotillstånd, medan Event Grid- och pulsslagsmönster gör det enklare att svara på enskilda enhetsavbrott.
Mer information om hur du använder dessa tjänster med IoT Hub finns i Övervaka IoT Hub och Kontrollera IoT Hub-resurshälsa. Mer specifik information om hur du använder Azure Monitor eller Event Grid för att övervaka enhetsanslutningar finns i Övervaka, diagnostisera och felsöka enhetsanslutning.