Azure Stream Analytics-Unterstützung für die IoT Hub-Betriebsüberwachung

Veröffentlicht am 21 September, 2016

Program Manager, Azure Stream Analytics

Azure Stream Analytics ist ein hochgradig skalierbarer, vollständig verwalteter Echtzeit-Streamanalysedienst, der Millionen Ereignisse pro Sekunde verarbeiten und Aggregierungen und Berechnungen nahezu in Echtzeit ausführen kann.

Stream Analytics und Azure IoT Hub arbeiten seit einiger Zeit sehr gut zusammen und ermöglichen Ihnen einfache Erkenntnissen aus den Daten, die Ihre IoT-Geräte an IoT Hub senden. Für den Einstieg in IoT Hub müssen Sie lediglich eine Eingabe konfigurieren, wie in der Dokumentation Streamen von Daten als Eingabe in Stream Analytics beschrieben. Viele unserer Kunden verwenden diese Funktion bereits mit Ihren IoT-Lösungen, und sie funktioniert ausgesprochen gut. Eine häufige Frage von Kunden ist jedoch, wie der Status von Vorgängen in IoT Hub in Echtzeit überwacht werden kann. Daher freuen wir uns, heute bekannt zu geben, dass Sie dies nun durch eine Verbindung mit dem IoT Hub-Endpunkt für die Betriebsüberwachung erreichen können.

Die IoT Hub-Betriebsüberwachung ermöglicht Ihnen das Überwachen des Status von Vorgängen auf Ihrem IoT-Hub in Echtzeit. IoT Hub verfolgt Ereignisse in mehreren Vorgangskategorien. Sie können dabei festlegen, dass Ereignisse aus einer oder mehreren Kategorien zur Verarbeitung an einen Endpunkt Ihres IoT-Hubs gesendet werden. Sie können die Daten auf Fehler überwachen oder eine komplexere, auf Datenmustern basierende Verarbeitung einrichten.

IoT Hub überwacht fünf Ereigniskategorien:

  • Geräteidentitätsvorgänge
  • Gerätetelemetrie
  • Cloud-zu-Gerät-Befehle
  • Verbindungen
  • Dateiuploads

Weitere Informationen zur IoT Hub-Vorgangsüberwachung finden Sie in der Dokumentation IoT Hub-Vorgangsüberwachung.

Kunden fragen häufig, wie sie nahezu in Echtzeit erfahren können, wenn die Verbindung eines Geräts mit ihrem IoT-Hub getrennt und nicht innerhalb eines bestimmten Zeitraums (z.B. 1 Minute) wiederhergestellt wird. Wenn dies auftritt, sollte nahezu in Echtzeit eine E-Mail gesendet oder ein Workflow ausgelöst werden. Bei einigen Geräten ist es ausschlaggebend, dass diese Warnungen möglichst schnell gesendet werden und eine Wartung ausgeführt wird, bevor ein Problem auftritt.

Zur Demonstration, wie einfach dies mit Stream Analytics zu erreichen ist, nutzen wir die Möglichkeiten der IoT Hub-Betriebsüberwachung und konfigurieren die Ereignisüberwachung für Verbindungen.

 

ConnectionsInfo

Wie Sie dem vorstehenden Bild entnehmen können, wird beim Aktivieren die Ereignisprotokollierung für das Herstellen und Trennen der Verbindung von Geräten gestartet. Um dies zu verwenden, schalten Sie „Verbindungen“ zu „Ausführlich“ um, wie dargestellt:

ConnectionsConfig

 

Nach dieser Konfiguration sollten Ereignisse erfasst werden, wenn Geräte eine Verbindung mit Ihrem IoT-Hub herstellen. Verwenden Sie zur Überprüfung ein Tool wie den Service Bus-Explorer, stellen Sie eine Verbindung mit „Event Hub – compatible name / endpoint“ (Event Hub – kompatibler Name/Endpunkt) her, und zeigen Sie die Nachrichten an.

Eine erfasste Beispielnachricht ähnelt dieser:

{
     "durationMs": 1234,
     "authType": "{\"scope\":\"hub\",\"type\":\"sas\",\"issuer\":\"iothub\"}",
     "protocol": "Amqp",
     "time": "2016-09-13T20:00Z",
     "operationName": "deviceConnect",
     "category": "Connections",
     "level": "Error",
     "statusCode": 4XX,
     "statusType": 4XX001,
     "statusDescription": "MessageDescription",
     "deviceId": "device-ID"
}

Wenn ein Gerät seine Verbindung mit IoT Hub trennt, wird ein ähnliches Ereignis erfasst, wobei „operationName“ den Wert „deviceDisconnect“ hat.

Nachdem wir nun bestätigt haben, dass diese Nachrichten auf unserem IoT-Hub ankommen, ist es einfach, sie in einem Stream Analytics-Auftrag zu verwenden:

1. Erstellen Sie einen neuen Stream Analytics-Auftrag.

Hilfestellung beim Erstellen eines neuen Stream Analytics-Auftrags finden Sie unter Erstellen eines Stream Analytics-Auftrags mithilfe des Azure-Portals.

2. Erstellen Sie eine Datenstromeingabe, die an Ihren IoT-Hub gerichtet ist. Wählen Sie als Endpunkt „Vorgangsüberwachung“ aus, nicht „Messaging“.

ConnectionsConfig

3. Erstellen Sie die folgende Abfrage:

WITH
Disconnected AS (
SELECT *
FROM input TIMESTAMP BY [Zeit]
WHERE OperationName = 'deviceDisconnect'
    AND Category = 'Connections'
),
Connected AS (
SELECT *
FROM input TIMESTAMP BY [Zeit]
WHERE OperationName = 'deviceConnect'
    AND Category = 'Connections'
)

SELECT Disconnected.DeviceId, Disconnected.Time
INTO Output 
FROM Disconnected
LEFT JOIN Connected 
    ON DATEDIFF(second, Disconnected, Connected) BETWEEN 0 AND 180
    AND Connected.deviceId = Disconnected.deviceId
WHERE Connected.DeviceId IS NULL

Diese Abfrage umfasst zwei Schritte: Im ersten Schritt werden alle Trennungsereignisse abgerufen, und im zweiten alle Verbindungsereignisse.

Anschließend verbinden wir diese beiden Streams mithilfe des DATEDIFF-Vorgangs von Stream Analytics unter LEFT JOIN miteinander und filtern dann Datensätze aus, bei denen eine Übereinstimmung vorlag. Dadurch erhalten wir Geräte, bei denen ein Trennungsereignis aufgetreten ist, jedoch innerhalb von 180 Sekunden kein zugehöriges Verbindungsereignis.

Die Ausgabe dieses Auftrags kann nun an eine der unterstützten Stream Analytics-Ausgaben weitergeleitet werden, einschließlich Service Bus-Warteschlangen. Sobald die Ausgabe in einer Service Bus-Warteschlange angekommen ist, kann ganz einfach eine Azure-Funktion oder eine Azure-Logik-App erstellt werden, die ausgeführt wird, sobald eine Nachricht in der Warteschlange veröffentlicht wird.

Dadurch können Sie in wenigen Schritten mit einer sehr einfachen SQL-ähnlichen Abfrage Echtzeitupdates von Ihrem IoT-Endpunkt für die Betriebsüberwachung erhalten.

Manchmal vermisse ich die gute alte Zeit, als komplexe Szenarien wie dieses schwierig und zeitaufwendig umzusetzen waren … nein, das stimmt natürlich ganz und gar nicht! Mit den PaaS-Diensten und den Möglichkeiten des serverlosen Computing von Azure ist alles so viel einfacher und leistungsfähiger, sodass ich mich darauf konzentrieren kann, einen Mehrwert zu schaffen.

Verwandte Dienste

Microsoft Azure IoT Hub: Verbinden, Überwachen und Verwalten von Millionen IoT-Ressourcen

Microsoft Azure Event Hubs: Erfassen von Daten von Websites, Apps und Geräten

Microsoft Azure Service Bus: Verbinden von Apps und Geräten über private und öffentliche Clouds

Microsoft Azure Logic Apps: schnelles Erstellen von leistungsfähigen Integrationslösungen

Microsoft Azure Functions: Verarbeiten von Ereignissen mit serverlosem Code

Nächste Schritte

Wir freuen uns sehr über diese enge Integration mit IoT Hub und hoffen, sie wird Ihnen und Ihren IoT-Anwendungen viele aufregende neue Möglichkeiten eröffnen.

Fühlen Sie sich herzlich eingeladen, uns auf unserer User Voice-Seite Feedback zu Ihren Wünschen für den Dienst zu geben.

Falls Sie noch keine Erfahrungen mit Microsoft Azure oder Stream Analytics haben, sollten Sie sich für ein kostenloses Azure-Testkonto registrieren und Ihren ersten Stream Analytics-Auftrag erstellen.

Wenn Sie Hilfe benötigen oder Fragen haben, erreichen Sie uns über die Foren bei MSDN oder Stack Overflow, oder senden Sie direkt eine E-Mail an das Produktteam.