Überwachen des Geräteverbindungsstatus
Azure IoT Hub unterstützt verschiedene Methoden zur Überwachung des Status Ihrer Geräte. In diesem Artikel werden die verschiedenen Überwachungsmethoden vorgestellt und Anleitungen als Hilfe bei der Auswahl der besten Option für Ihre IoT-Lösung geboten.
In der folgenden Tabelle werden drei Möglichkeiten zum Überwachen Ihres Geräteverbindungsstatus beschrieben:
Methode | Statushäufigkeit | Kosten | Erstellungsaufwand |
---|---|---|---|
Gerätezwillingseigenschaft „connectionState“ | Zeitweilig | Niedrig | Niedrig |
Event Grid | 60 Sekunden | Niedrig | Niedrig |
Benutzerdefiniertes Heartbeatmuster | Benutzerdefiniert | High | High |
Aufgrund seiner Zuverlässigkeit, der geringen Kosten und einfachen Handhabung empfehlen wir Event Grid als bevorzugte Überwachungslösung für die meisten Kunden.
Es gibt jedoch bestimmte Einschränkungen bei der Überwachung mit Event Grid, die es für einige IoT-Lösungen disqualifizieren können. Lesen Sie diesen Artikel, um die Vorteile und Einschränkungen der einzelnen Optionen zu verstehen.
„connectionState“ von Gerätezwilling
Jede IoT Hub Geräteidentität enthält die Eigenschaft connectionState (Verbindungsstatus), die entweder verbunden oder getrennt meldet. Diese Eigenschaft stellt das IoT Hub-Verständnis vom Verbindungsstatus eines Geräts dar.
Bei der Eigenschaft „connection“ gibt es mehrere Einschränkungen:
- Der Verbindungsstatus wird nur für bei Geräten aktualisiert, die MQTT oder AMQP verwenden.
- Aktualisierungen dieser Eigenschaft basieren auf Pings auf Protokollebene und können bis zu fünf Minuten verzögert werden.
Aus diesen Gründen empfehlen wir, während der Entwicklung und beim Debuggen nur das Feld connectionState zu verwenden. Dieses Feld sollte von IoT-Lösungen nicht zur Laufzeit abgefragt werden. Fragen Sie das Feld connectionState also beispielsweise nicht ab, um zu ermitteln, ob ein Gerät verbunden ist, bevor Sie eine Cloud-zu-Gerät (C2D)-Nachricht oder eine SMS senden.
Event Grid
Wir empfehlen Event Grid als bevorzugte Überwachungslösung für die meisten Kunden.
Abonnieren Sie die Ereignisse deviceConnected und deviceDisconnected in Event Grid zum Abrufen von Warnungen und Überwachen des Geräteverbindungsstatus.
Informieren Sie sich in den folgenden Artikeln, wie Sie die Ereignisse „Gerät verbunden“ und „Gerät getrennt“ in Ihre IoT-Lösung integrieren können:
- Reagieren auf IoT Hub-Ereignisse mithilfe von Event Grid zum Auslösen von Aktionen
- Sortieren von Geräteverbindungsereignissen mithilfe von Cosmos DB
Geräteverbindungsstatusereignisse sind für Geräte verfügbar, die eine Verbindung entweder über das MQTT- oder das AMQP-Protokoll herstellen oder eines dieser Protokolle über WebSockets verwenden. Anforderungen, die nur mit HTTPS gesendet werden, lösen keine Benachrichtigungen zum Geräteverbindungsstatus aus.
- Für Geräte, die eine Verbindung mit azure IoT SDKs für Java, Node oder Python herstellen:
- MQTT: Verbindungsstatusereignisse werden automatisch gesendet.
- AMQP: Eine Cloud-zu-Gerät (C2D)-Verbindung sollte erstellt werden, um Verzögerungen beim Melden von Verbindungsstatus zu verringern.
- Bei Geräten, die eine Verbindung mithilfe der Azure IoT-SDKs für .NET oder C herstellen, werden Verbindungsstatusereignisse erst dann gemeldet, wenn eine erste Device-to-Cloud (D2C)-Nachricht gesendet oder eine Cloud-to-Device (C2D)-Nachricht empfangen wird.
Außerhalb der Azure IoT SDKs sind diese Vorgänge in MQTT den Vorgängen „SUBSCRIBE“ oder „PUBLISH“ für die entsprechenden Messagingthemen gleichzusetzen. Bei AMQP entsprechen diese Vorgänge dem Anfügen oder Übertragen einer Nachricht über die entsprechenden Linkpfade.
Event Grid-Einschränkungen
Die Verwendung von Event Grid zum Überwachen Ihres Gerätestatus ist mit den folgenden Einschränkungen verbunden:
- Event Grid meldet nicht jedes einzelne Geräteverbindungs- und -trennungsereignis. Stattdessen ruft es alle 60 Sekunden den Gerätestatus ab und veröffentlicht den neuesten Verbindungsstatus, wenn er geändert wurde. Aus diesem Grund können Statusänderungsberichte bis zu einer Minute verzögert werden, und einzelne Statusänderungen werden möglicherweise nicht gemeldet, wenn mehrere Ereignisse innerhalb des 60-Sekunden-Fensters eintreten.
- Geräte, die AMQP verwenden, benötigen eine Cloud-zu-Gerät-Verknüpfung , bevor sie den Gerätestatus melden können.
- Event Grid macht einen öffentlichen Endpunkt verfügbar, der nicht ausgeblendet werden kann.
Wenn sich eine dieser Einschränkungen auf Ihre Möglichkeit zur Verwendung von Event Grid für die Gerätestatusüberwachung auswirkt, sollten Sie stattdessen ein benutzerdefiniertes Geräte-Heartbeatmuster erstellen.
Heartbeatmuster von Geräten
Wenn Sie den Verbindungsstatus Ihrer Geräte wissen müssen, die Einschränkungen von Event Grid Ihre Lösung aber zu sehr einschränken, können Sie das Heartbeatmuster implementieren. Beim Taktmuster sendet das Gerät D2C-Nachrichten mindestens einmal pro festgelegtem Zeitraum (z. B. mindestens einmal pro Stunde). Selbst wenn ein Gerät keine zu sendenden Daten hat, sendet es eine leere Gerät-zu-Cloud (D2C)-Nachricht – normalerweise mit einer Eigenschaft, die sie als Heartbeatnachricht identifiziert. Auf der Dienstseite verwaltet die Lösung eine Karte mit dem letzten für jedes Gerät empfangenen Takt. Falls die Lösung innerhalb der erwarteten Zeitspanne keine Heartbeatnachricht vom Gerät empfängt, geht sie davon aus, dass ein Problem beim Gerät vorliegt.
Einschränkungen beim Geräte-Heartbeat
Da Heartbeatnachrichten als Gerät-zu-Cloud (D2C)-Nachrichten implementiert werden, werden sie auf Ihre IoT Hub-Nachrichtenkontingente und -Drosselungsgrenzwerte angerechnet.
Muster für kurze Ablaufzeiten
Wenn eine IoT-Lösung den Geräteverbindungsstatus nur verwendet, um zu ermitteln, ob Cloud-zu-Gerät-Nachrichten an Geräte gesendet werden müssen, und Nachrichten nicht an große Gruppen von Geräten gesendet werden, empfiehlt sich unter Umständen die Verwendung der Muster für kurze Ablaufzeiten als einfachere Alternative zu Heartbeatmustern. Das Muster für kurze Ablaufzeiten ist eine Möglichkeit, zu bestimmen, ob Cloud-zu-Gerät-Nachrichten gesendet werden sollen, indem Nachrichten mit einer kurzen Ablaufzeit gesendet und Nachrichtenbestätigungen von den Geräten angefordert werden.
Weitere Informationen finden Sie unter Nachrichtenablauf (Gültigkeitsdauer).
Andere Überwachungsoptionen
Eine komplexere Implementierung könnte die Informationen aus Azure Monitor und Azure Resource Health zur Ermittlung der Geräte enthalten, die erfolglos versuchen, eine Verbindung herzustellen oder zu kommunizieren. Azure Monitor-Dashboards sind hilfreich, um die aggregierte Integrität Ihrer Geräte anzuzeigen, während Event Grid und Heartbeatmuster die Reaktion auf einzelne Geräteausfälle vereinfachen.
Weitere Informationen zur Verwendung dieser Dienste bei IoT Hub finden Sie unter Überwachen von IoT Hub und Überprüfen der Integrität von IoT Hub-Ressourcen. Ausführlichere Informationen zur Verwendung von Azure Monitor oder Event Grid zum Überwachen der Gerätekonnektivität finden Sie unter Überwachen, Diagnostizieren und Beheben von Problemen bei der Gerätekonnektivität.