Es gibt eine neue Preview Version von Time Series Insights (TSI). Diese soll für die AIT Smart Edge Plattform evaluiert werden, um Metriken wie z.B. CPU-Auslastung, RAM und Festplattenspeicher erfassen zu können. Doch wie kommen eigentlich die am IoT-Gerät erfassten Daten in die Cloud? Dafür haben wir unsere IoT-Infrastruktur mit Time Series Insights verknüpft und wollen unsere ersten Erfahrungen mit der neuen Thematik teilen. Dabei werden die zugrunde liegenden Überlegungen und Entscheidungen gezeigt. Die zusammengetragenen Informationen können als Schnellstart dienen, um die Verwendung von TSI einschätzen und richtig planen zu können.
Azure Time Series Insights ist ein End-To-End-PaaS-Angebot (Platform as a Service) und hat einen Fokus auf Daten, die stark kontextualisiert und auf Zeitreihen optimiert sind. Andere Beispiele für Zeitreihen sind z.B. Börsenkurse oder Wetterbeobachtungen. Ziel ist es Trends zu analysieren und daraus Erkenntnisse zu ziehen. Die zu erfassenden Metriken (CPU-, RAM-, Speicherauslastung) sind also natürliche Zeitreihen und eignen sich bestens für das Speichern in TSI.
Was ist nun in der aktuellen TSI Preview anders als in der TSI GA?
Ein wichtiger Unterschied ist das geänderte Preismodell. Die Abrechnung erfolgt in der Preview nutzungsbasiert. Bei der Nutzung von TSI GA sind Pakete zu buchen z.B. in der Ausprägung S1 mit 1 Mio. Nachrichten pro Tag, unlimitierter Größe. Dabei kostet die S1-Instanz etwa 125€ pro Monat. Der Grundpreis für TSI Preview liegt bei etwa 25€ pro Monat für eine Prozessoreinheit, wobei 100GB/Monat bereits inkludiert sind. Jedes weitere Gigabyte wird mit etwa 16 Cent berechnet.
Zum Vergleich der Kosten betrachten wir unsere übertragenen Nachrichten der Gerätemetriken für TSI GA und TSI Preview. Die Nachrichten unserer Metriken sind etwa 6 KB groß. Über die TSI GA S1-Instanz können bei 30 Tagen/Monat also 30 Mio. Nachrichten geschickt werden. Dafür kostet das Paket 125€/Monat.
Bei der Preview Version fallen nutzungsbasiert 30 Mio. Nachrichten * 6 KB an, was etwa 180 GB Datenverbrauch erzeugt. Die ersten 100 GB sind bereits durch die Prozessoreinheit inbegriffen und die zusätzlichen 80 GB kosten etwa 13€, die Instanz 25€, was ca. 38€ pro Monat ergibt. Daher ist die Entscheidung auch aus Kostensicht für TSI Preview sinnvoll. Die Betrachtung welche Instanz besser geeignet ist, sollte erneut durchgeführt werden, wenn sich wesentliche Änderungen in der Nachrichtengröße ergeben.
Weitere Unterschiede sind hauptsächlich im TSI Preview Datenmodell zu sehen. Die Zeitreihendaten können mit Metadaten, Hierarchien und verschiedenen Typen kombiniert und ergänzt werden. Außerdem ist es der Data Processing Engine nun möglich Daten in 2 Streams aufzuteilen. Einen Stream zur Analyse der Daten welcher die letzten 30 Tage speichert (Warm-Storage) und einen der die Daten für beliebige Zeiträume archiviert (Cold-Storage). Detailliertere Informationen stehen auf der Microsoft-Seite „What is Azure Time Series Insights Preview?“ bereit.
Wie sieht eigentlich das Datenmodell aus und worauf muss bei der Modellierung geachtet werden?
Die erste große Frage bezüglich des Einsatzes von Azure Time Series Insights ist wie eigentlich das Datenmodell aussehen kann und wie die zu sendenden Nachrichten aussehen müssen. Das Datenmodell wird vom IoT Hub beeinflusst da dieser die Quelle der Daten ist.
Auf der Seite „Shape Events with Azure Time Series Insights“ veröffentlicht Microsoft einige Empfehlungen. Aufgrund der nutzungsbasierten Abrechnung wird empfohlen, dass die Daten so effizient wie möglich über das Netzwerk zu senden sind und keine unnötigen Felder übertragen werden sollen. Instanzfelder sollen für statische Metadaten verwendet werden. Es werden nur zwei Verschachtelungsebenen in der JSON-Nachricht unterstützt. Weiterhin war die Seite „Shape JSON to maximize query performance“ von Microsoft eine wertvolle Stütze, die an der TSI GA Version ausgerichtet ist aber im Wesentlichen aussagt, dass es auf die Menge von Eigenschaftswerten ankommt.
Für wenige Eigenschaftswerte wird empfohlen die Eigenschaften statisch in die JSON-Nachricht als Schlüssel-Wert Paar aufzunehmen z.B.:
{ "CpuLoad": "50%" }
Für mehrere Eigenschaftswerte soll ein generisches Tupel-Format über Typ, Einheit und Wert gebildet werden z.B.:
{ "Typ": "CpuLoad", "Einheit": "%", "Wert": "50" }
Jetzt stellt sich die Frage was sind viele Eigenschaftswerte, was wenige? Die maximale Anzahl der Eigenschaften wird auf der verlinkten Seite auf 600 Eigenschaften für TSI GA S1-Instanzen beschrieben, wie das für TSI Preview aussieht ist an der Stelle nicht bekannt. In unserem Fall haben wir uns für die Variante mit dem generischen Tupel-Format entschieden, auch insbesondere, weil das Format für Erweiterungen und zukünftige Daten gut geeignet ist.
Wie kann ein Time Series Insights Environment eingerichtet werden?
Fürs erste haben wir die theoretischen Themen behandelt. Nun soll eine Time Series Insights Umgebung aufgesetzt werden. Hier liefert die Microsoft Dokumentation eine Schritt für Schritt Anleitung wie innerhalb weniger Minuten die TSI-Umgebung zur Verfügung stehen kann. Damit die TSI Instanz in unserem Projekt in Zukunft nicht mehr händisch angelegt werden muss, wenn eine neue Version für die AIT Smart Edge Plattform veröffentlicht wird, erfolgt gleich eine Integration in das Infrastuktur-Deployment. Dabei ist schnell aufgefallen, dass TSI Preview in Terraform noch nicht unterstütz wird. Deshalb sind wir auf ein ARM-Template deployment ausgewichen und haben einen entsprechenden Task in die Continuous Deployment (CD)-Pipeline integriert.
Wie kann die TSI Instanz mit dem IoT-Hub verknüpft werden?
Dies funktioniert auf den ersten Blick ganz einfach, denn der TSI Instanz können Nachrichtenquellen hinzugefügt werden, so auch der IoT-Hub (Abbildung 1). Eine weitere Nachrichtenquelle kann der Azure Event-Hub sein. Die Nachrichtenquellen in TSI Preview sind auf zwei limitiert. Die Konfiguration der Nachrichtenquelle in das ARM-Template zu integrieren war aufwändig, da hier viele Instanzinformationen zusammenfließen müssen. Nun gab es nur noch ein Problem zu lösen, denn die Geräte in der AIT Smart Edge Plattform sind Mehrmandantenfähig und haben somit eine Mandanten-ID. Die IoT-Edge Module kennen diese ID nicht, denn diese ist nur Bestandteil des Device-Twins. Der IoT-Hub stellt allerdings eine Möglichkeit zur Verfügung durch Message-Enrichment Nachrichten aller ausgewählten Nachrichtenstreams, um bestimmte Eigenschaften zu ergänzen.
Abbildung 1: IoT-Hub Verknüpfung mit TSI Alternative 1
Der Gedanke war gut, jedoch stellte sich beim Test schnell heraus, dass das IoT-Edge Modul die Daten über die Modulverbindung sendet und somit nur Zugriff auf den Module Identity Twin und nicht auf den Device-Twin hat. Dies ist leider so nirgends dokumentiert und war so auch nicht zu erwarten. Dies hatte dann schließlich zur Folge, dass das Message-Enrichment durch eine Azure Function ersetzt wurde (Abbildung 2), die sich mit dem Device-Twin verbinden kann und die entsprechende Information in den Message-Body schreibt, sodass diese zusätzlichen Informationen nach TSI gesendet werden können.
Abbildung 2: IoT-Hub Verknüpfung mit TSI Alternative 2
Wie sieht das TSI-Dashboard nun aus?
Nachdem alle Probleme aus dem Weg geräumt wurden, war eine erste Version des Monitorings in Form des TSI-Dashboards ersichtlich:
Abbildung 3: Event-Count des Raspberry-Pi
In Abbildung 3 ist der ankommende Event-Count des Raspberry-Pi Demogeräts dargestellt. Die aktuellen Einstellmöglichkeiten sind dabei ob CPU, RAM oder Festplattenspeicher überwacht werden sollen. Das Senden von Nachrichten lässt sich auf unserem IoT-Edge Gerät komplett deaktivieren, sofern keine Zustandsdaten benötigt werden oder erwünscht sind.
Abbildung 4: Datenstruktur Geräte-Metriken Raspberry-Pi
In Abbildung 4 sind die Event-Daten im vorgestellten generischen Tupel-Format zu sehen. Nachteil dieses Formats ist die Darstellung im TSI-Dashboard. Die Daten können nicht einfach als Diagramm angezeigt werden, hierfür müssten Filter unterstützt werden. Die grafische Darstellung ist über das Datenformat mit statischen Eigenschaftswerten möglich. Dies könnte ein relevantes Kriterium werden, sofern die TSI Oberfläche direkt genutzt werden soll.
Wie geht es nun mit TSI im Kontext der AIT Smart Edge Plattform weiter?
Die Daten sollen in der AIT Smart Edge Plattform grafisch zu sehen sein, weshalb die Daten aus TSI in geeigneter Form abgefragt und visualisiert werden. Das TSI-Dashboard lässt sich aktuell nicht wirklich modifizieren, weshalb es aktuell nicht möglich sein wird die Monitoring-Daten in geeigneter Form dort direkt einsehen zu können.
Was ist das Fazit?
Die ersten Schritte mit Time Series Insights sind nicht schwer. Die Dokumentation wirkt an manchen Stellen nicht ganz ausgereift. Dann ist es schwer an die notwendigen Informationen zu kommen. Meist konnten Unklarheiten durch die Hands-On Mentalität bei der Verwendung von TSI Preview aufgelöst werden.
Die beste Informationsquelle ist im Fall von TSI die Microsoft-Dokumentation. Generell sind nur vereinzelt Informationen zu TSI im Internet zu finden. Der Stand der Dokumentation weicht manchmal von der tatsächlichen Funktionsweise ab. Dies ist natürlich zu verschmerzen, denn es handelt sich schließlich um eine Preview-Version.
Gut gefallen hat die Integration zum IoT- oder Event-Hub, denn eine Verknüpfung kann hier schnell und unkompliziert eingerichtet werden. Weiterhin ist der Fokus von TSI auf IoT-Szenarien durchgehend spürbar und TSI wirkt nicht mit Funktionen überladen, die nicht relevant sind.
Weniger gut gefallen hat das unerwartete Verhalten des Message-Enrichment, was aber dem IoT-Hub und nicht TSI zuzuschreiben ist.
Etwas verwundert war ich, z.B. als die Test-Instanzen, inklusive aller relevanten Ressourcen aus Azure gelöscht und neu angelegt wurden und die zuvor gesendeten Daten dennoch vorhanden waren. Dies ist vermutlich auf den Cold-Storage zurückzuführen, fühlt sich aber sehr ungewohnt an.
Die größte Herausforderung war es den Überblick über die relevanten Themen und Komponenten zu bekommen, die anfangs gar nicht direkt ersichtlich waren.
Sprechen Sie uns an, wenn auch Sie Hilfe bei der Planung, Einführung oder Umsetzung von IoT und Industrie 4.0 in Ihrem Unternehmen benötigen. Wir führen Sie gerne ans Ziel.
Sie möchten mehr zum Thema IoT erfahren? Besuchen Sie doch unseren kostenlosen Workshop „IoT in a day – Von Null auf Cloud in einem Tag“ oder buchen Sie unseren zweitägigen IoT Proof of Concept-Workshop.