© Liashko/Shutterstock.com
Vom Gerät zum Live-Dashboard

Mit Azure zur IoT-Infrastruktur


Mit den Azure Event Hubs hat Microsoft einen Dienst im Portfolio, mit dem sich Millionen von Events per Sekunde erfassen lassen. Anwendungsszenarien gibt es viele: Beispielsweise könnte eine gewöhnliche Anwendung Telemetriedaten an den Event Hub senden. Ebenso ist es denkbar, dass Windkrafträder, Kühlschränke oder Raspberry Pis Sensordaten an einen Event Hub übermitteln – typischerweise das, was man sich unter IoT vorstellt. Mit einem Stream Analytics Job lässt sich der Event Stream aus dem Event Hub auslesen und für die Weiterverarbeitung mit einer SQL-ähnlichen Syntax aggregieren. Die aggregierten Daten lassen sich dann bspw. in Echtzeit in einem Live-Dashboard in Power BI anzeigen. Genau dieses Szenario wird in diesem Artikel beschrieben – von der Anwendung über ­einen Event Hub über Stream Analytics hin zum Power-BI-Live-Dashboard.

Microsoft hat mit der „Cloud-first and Mobile-first“-Strategie richtig an Fahrt aufgenommen. Was heute mit Microsoft Azure für jeden Entwickler in einfachen Schritten möglich ist, war vor ein paar Jahren noch nahezu undenkbar. So lässt sich mit etwas Know-how bereits ein hochskalierendes Backend zum Verarbeiten von Millionen von Events konfigurieren. Wie das geht, wird in diesem Artikel beschrieben. Los geht’s mit einem Blick auf das „Big Picture“.

Das „Big Picture“

Die in diesem Artikel erstellte Architektur ist in Abbildung 1 dargestellt: Endgeräte senden Events an einen Azure Event Hub. Ein Stream Analytics Job liest den Event Stream aus dem Event Hub aus und aggregiert gegebenenfalls die Daten mit einer SQL-ähnlichen Abfragesprache. Der Stream Analytics Job kann die Daten in verschiedene Outputs schieben – in eine Azure-SQL-DB, in einen Table Storage, in einen weiteren Event Hub usw. In diesem Artikel ist der Output des Stream Analytics Jobs, wie in Abbildung 1 dargestellt, Power BI. In Power BI lässt sich ein Live-Dashboard erstellen, das die aktuellen Daten nahezu in Echtzeit darstellt.

huber_iot_1.tif_fmt1.jpgAbb. 1: Klassische Architektur mit Event Hub, Stream Analytics und Power BI

In Abbildung 1 sind die Event-Produzenten Raspberry Pis. Doch das sendende Gerät ist beliebig: Es kann ein Kühlschrank, ein Toaster, ein Windrad, ein Motor, ein Smartphone oder beispielsweise auch ein ganz normaler PC sein. Letzten Endes ist es einfach ein Stück Software, das auf irgendeiner Art von Gerät oder sogar ebenfalls als Job in der Cloud läuft. Und diese Software sendet Events an den Event Hub.

Szenarien für eine solche Event-getriebene Architektur gibt es viele. So könnte eine gewöhnliche Anwendung Telemetriedaten an einen Event Hub senden. Die Telemetriedaten ermöglichen Informationen über die Nutzung der Anwendung. Ebenso ist es denkbar, dass Geräte mit Sensoren aktuelle Sensordaten an den Event Hub liefern. Beispielsweise könnten Windräder die aktuell produzierten Kilowatt pro Stunde an den Energiedienstleister in Echtzeit überliefern. Es gibt keine Grenzen.

In diesem Artikel werden keine Raspberry Pis wie in Abbildung 1 eingesetzt, da dies den Umfang des Artikels hinsichtlich Hardwareintegration sprengen würde. Stattdessen wird eine kleine WPF-Applikation [1] verwendet, die den Event Hub mit Events füttert. Damit lässt sich auf einfache Weise das ganze Szenario vom Client über den Event Hub über den Stream Analytics Job zum Power-BI-Live-Dashboard durchspielen. Mehr zu der verwendeten WPF-Applikation als Event-Sender erfahren Sie nach dem Erstellen des Event Hubs.

Azure Event Hubs

Über das Azure-Portal [2] lässt sich auf einfache Weise ein Event Hub erstellen. Nach dem Einloggen in das Azure-Portal wird über das + eine neue Ressource angelegt. Unter der Kategorie Internet of Things (IoT) befindet sich das Element „Event Hubs“. Damit lässt sich ein neuer Name­space für Event Hubs erstellen. Ein Event Hub als solcher gehört immer zu einem Event Hub Namespace. Dieser wiederum kann bis zu zehn Event Hubs enthalten. Wird im Azure-Portal auf das Element Event Hubs geklickt, öffnet sich der „Blade“ – so werden die einzelnen, horizontal nebeneinander geöffneten „Fenster“ im Azure-Portal genannt – zum Erstellen des Event Hub Namespace. Nach der Eingabe eines Namespace-Namens – in unserem Beispiel „WinDeveloper-EH-NS“ – und der Angabe einer Ressourcengruppe lässt sich der Event Hub Namespace durch einen Klick auf den Cre­ate-Button anlegen (mehr Infos zu Ressourcengruppen finden sich im zugehörigen Infokasten).

Über Ressourcengruppen

Mit dem neuen Azure-Portal [2] hat Microsoft das Konzept der Ressourcengruppen eingeführt, das es unter dem alten Azure-Portal [3] noch nicht gab. Ein Azure-Dienst, wie ein Event Hub Namespace oder ein Stream Analytics Job, wird immer einer Ressourcengruppe zugeordnet. Die Dienste einer Ressourcengruppe haben gemeinsame Berechtigungen und einen gemeinsamen Lebenszyklus. So lässt sich z. B. nicht nur ein einzelner Dienst entfernen, sondern bei Bedarf auch die ganze Ressourcengruppe. Zum Testen und Ausprobieren von Azure-Diensten empfiehlt es sich somit, eine neue Ressourcengruppe als „Spielplatz“ zu erstellen, wie dies auch beim Anlegen des Event Hub Namespace gemacht wird. Dann lässt sich nach dem Testen und Ausprobieren die komplette Ressourcengruppe mit einem Schwung entfernen.

Den Event Hub erstellen

Um den eigentlichen Event Hub zu erstellen, wird im Azure-Portal über die neu angelegte Ressourcengruppe „WinDeveloperResGroup“ zum Event Hub Namespace navigiert. Auf dem Blade für den Event Hub Namespace befindet sich ein Button + Event Hub. Ein Klick darauf öffnet ein weiteres Blade zum Erstellen eines Event Hubs. In Abbildung 2 wurde in diesem Blade bereits der Name für den zu erstellenden Event Hub eingegeben. Ein Klick auf den Create-Button genügt, und der Event Hub ist angelegt.

huber_iot_2.tif_fmt1.jpgAbb. 2: Einen Event Hub erstellen

Neben dem Namen lässt sich auch die in Abbildung 2 zu sehende Message Retention einstellen, die festlegt, wie lange die Events im Event Hub verfügbar sind. Der Defaultwert ist ein Tag, der Maximalwert beträgt sieben Tage. Neben der Message Retention lassen sich auch die Partitionen einstellen, die für den Event Hub verwendet werden. Dabei kann eine Zahl zwischen 2 und 32 angegeben werden. Die Partitionen eines Event Hubs sind wichtig für die Skalierung. Obwohl im Portal der maximal einstellbare Wert 32 Partitionen sind, lassen sich durch Supporttickets auch Event Hubs mit 1 024 oder mehr Partitionen erstellen. Doch was genau hat es mit der Skalierung und den Partitionen auf sich? Um diese Frage zu klären, muss eine wichtige Größe beachtet werden, die so genannte Throughput Unit (Durchsatzeinheit).

Die Throughput Unit

Auf dem Blade des Event Hub Namespace lässt sich unter der Einstellung Scale die Anzahl der Throughput Units angeben – das ist der Durchsatz, den die Event Hubs leisten können. Der Defaultwert ist 1, der im Portal verfügbare Maximalwert 20. Eine Throughput Uni...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang