Kommentar von Constantin Gonzalez und Florian Mair, AWS Anomalie-Erkennung für Echtzeit-Datenströme

Autor / Redakteur: Constantin Gonzalez, Florian Mair * / Nico Litzel

Heutzutage sind Daten in Unternehmen allgegenwärtig, doch nur mit ihrer schnellen Analyse können sie Prozesse beschleunigen. Bei datengetriebenen Entscheidungen muss eine hohe Datenqualität gewährleistet sein. Gleichzeitig gilt es zu verhindern, dass Ausreißer Einfluss auf wichtige Entscheidungen nehmen. Doch wie können solche Anomalien in Sensordaten von Produktionsmaschinen erkannt und verarbeitet werden?

Firmen zum Thema

Anomalien in Sensordaten von Produktionsmaschinen: Wie lässt sich verhindern, dass Ausreißer Einfluss auf wichtige Entscheidungen nehmen?
Anomalien in Sensordaten von Produktionsmaschinen: Wie lässt sich verhindern, dass Ausreißer Einfluss auf wichtige Entscheidungen nehmen?
(Bild: © spainter_vfx - stock.adobe.com)

Streaming-Daten stammen aus einer Vielzahl von Quellen, die Datensätze kontinuierlich und gleichzeitig in kleinen Paketen übertragen. Daten-Streaming kommt für viele Anwendungsfälle in Frage – etwa im Internet of Things (IoT), bei Clickstream-Analysen, der Ortung von Geräten, der Datenverarbeitung in sozialen Medien sowie im Finanzhandel. Ausreißer oder Anomalien treten oft aufgrund von Änderungen im Systemverhalten, fehlenden Daten oder menschlichen Fehlern auf. Sie lassen sich leicht mithilfe menschlicher Intuition erkennen, die traditioneller Software jedoch fehlt.

Anwendungen der Echtzeit-Anomalie-Erkennung

Echtzeit-Analyse wird im Allgemeinen für High-Velocity-Daten verwendet, die in kurzer Zeit erfasst, gespeichert, verarbeitet und analysiert werden müssen. Aufgrund ihrer schnellen und häufigen Generierung sind sie anfällig für Zuverlässigkeits- und Qualitätsprobleme. Hier ermöglicht es die Anomalie-Erkennung, Extremwerte herauszufiltern und so die Verlässlichkeit der Daten zu verbessern. Aufgrund der daraufhin erhöhten Qualität ermöglichen solche Daten besonders fundierte Geschäftsentscheidungen – beispielsweise in der Produktion: Bei einer Maschine, die ihre Drehzahl anhand von Temperatursensordaten bestimmt und dabei einen gewissen Schwellenwert überschreitet, wird der Ausstoß verringert, um die Hardware zu schonen. Damit sinkt allerdings auch die Produktivität. Die Erkennung von Anomalien in Echtzeit kann Fehlentscheidungen verhindern, die sich negativ auf das Geschäft auswirken. Ein weiteres Anwendungsbeispiel ist die Analyse von Clickstream-Daten: Hier wird die Klickrate (CTR) beim Kauf von Produkten auf Anomalien analysiert, um Online-Betrügereien auf die Spur zu kommen.

Datenaufnahme

Die Echtzeit-Analyse basiert auf der Datenaufnahme eines Daten-Streams, den ein Daten-Generator erzeugt. Das kann ein Sensor oder ein Webbrowser sein. Wenn eine Organisation nur auf den Datenstrom selbst, nicht aber auf die Datenquelle zugreifen kann, sollte ein Proxy zum Einsatz kommen. Damit lässt sich verhindern, dass Dritte Zugriff auf den Stream erhalten. Die dabei unterstützten Authentifizierungsmethoden hängen von der verwendeten Streaming-Plattform ab. Bei Verwendung eines HTTP-Proxies, für die Erfassung von Stream-Daten, sollten auch Geräte mit niedrigem Energieverbrauch wie IoT-Sensoren berücksichtigt werden, denn sie sind oft nicht in der Lage, anspruchsvolle Software Development Kits (SDKs) auszuführen oder REST-APIs aufzurufen.

Datenanalyse

In der Big-Data-Analyse kommt häufig die Stapelverarbeitung zum Einsatz. Hier werden Daten über einen gewissen Zeitraum hinweg gesammelt und anschließend gemeinsam verarbeitet. Diese Methode eignet sich allerdings nicht für zeitkritische Analysen wie die Erkennung von Echtzeit-Anomalien. Hier sind Methoden gefragt, bei denen Datenströme kontinuierlich analysiert werden. Das ermöglicht nahezu sofortige Ergebnisse, während die Daten noch in Bewegung sind. Es gibt verschiedene Algorithmen für die Anomalie-Erkennung – etwa den Welford-Algorithmus, den Z-Score und den Random-Cut-Forest-Algorithmus (RCF). Im folgenden Beispiel wird RCF, ein autonomer maschineller Lern-Algorithmus für die Anomalie-Erkennung verwendet. RCF ordnet jedem Datensatz einen Anomalie-Wert zu. Anomalie-Werte, die größer als drei Standardabweichungen vom Mittelwert sind, werden in der Regel als ungewöhnlich betrachtet. Für die ersten Datensätze können keine Anomalie-Werte berechnet werden, da es nicht genügend Referenzwerte gibt. Diese erste Sammel-Phase wird als Stream-Priming bezeichnet.

Datenspeicherung und -verarbeitung

Streaming-Datensätze sind klein und sollten zu größeren Dateien aggregiert werden, bevor sie dauerhaft gespeichert werden. Das spart Kosten und verbessert die Leistung. Parallel dazu werden Datensätze mit erkannten Anomalien weiterverarbeitet. Hier bietet sich das sogenannte Event-based Computing an: Wenn ein Datensatz die vorher festgelegte Anomalie-Score-Schwelle überschreitet, wird ein Ereignis (Event) ausgelöst, das einen passenden Programmcode ausführt. Alternativ können Mitarbeiter benachrichtigt werden, die dann eine manuelle Operation ausführen – beispielsweise die Wartung einer überhitzten Maschine planen oder direkt den Techniker für eine sofortige Überprüfung rufen.

Echtzeit-Erkennung von Anomalien bei AWS

Dieses Beispiel gibt einen Überblick darüber, wie ein Echtzeit-Anomalie-Erkennungssystem auf AWS aufgebaut werden kann. Der Code ist auf GitHub verfügbar und kann in der AWS-Cloud ausgeführt werden. Die dazu nötigen Schritte stehen im Abschnitt „Einrichten einer Anomalie-Erkennung“.

Architektur auf AWS
Architektur auf AWS
(Bild: AWS)

Für die Datenerzeugung ist die „Maschine“ eine Amazon Elastic-Compute-Cloud-Instanz (EC2), die ein Python-Skript ausführt, um Daten in den Datenstrom zu schicken. Amazon Kinesis Data Streams (KDS) ist ein skalierbarer und beständiger Streaming-Service für Echtzeitdaten, der kontinuierlich pro Sekunde Datenvolumen im Gigabyte-Bereich aus Hunderttausenden von Quellen aufnehmen kann. Die Rohdaten werden über einen Amazon Kinesis Firehose Delivery Stream in einem Amazon S3 Bucket gespeichert. Firehose unterstützt auch Ziele wie Splunk, ElasticSearch, MongoDB und viele mehr.

Die Erkennung von Anomalien auf den Streaming-Daten erfolgt mit Amazon Kinesis Data Analytics (KDA). KDA ist ein vollständig verwalteter Service zur Analyse von Daten in Echtzeit – entweder mit Apache Flink oder SQL. Für dieses Projekt wird KDA für SQL verwendet. Damit ist es möglich, einen Random-Cut-Forest-Algorithmus zur Anomalie-Erkennung mit wenigen SQL-Code-Zeilen zu implementieren. Datensätze, die einen hohen Anomalie-Score aufweisen, werden über eine AWS-Lambda-Funktion dem Amazon Simple Notification Service (SNS) weiter gegeben. Abonnenten des SNS-Topics erhalten dann automatisch alle nicht normalen Datensätze und können sie weiterverarbeiten oder Mitarbeiter entsprechend benachrichtigen.

Einrichtung einer Anomalie-Erkennung

Voraussetzungen

Für die folgenden Schritte ist ein AWS-Konto notwendig.

Diese Implementation einer Anomalie-Erkennung besteht aus folgenden Schritten:

  • 1. Bereitstellung des CloudFormation Templates
  • 2. Starten der Anwendung
  • 3. Monitoring des Datenstroms und der Anwendungen
  • 4. Aufräumen nicht mehr benötigter Ressourcen

Bereitstellung des CloudFormation Templates

Das folgende Template beinhaltet den Aufbau der o.a. Architektur und kann durch Klick auf „Launch Stack“ gestartet werden.

Dieses Template ist für die AWS Region eu-central-1 (Frankfurt) ausgelegt.

Alternativ kann das CloudFormation Template auch hier heruntergeladen und manuell genutzt werden.

Start der Anwendung

Bevor Daten in den Datenstrom fließen, muss die Analyseanwendung gestartet werden. Dazu wählt man in der Amazon Kinesis Console auf der linken Seite den Punkt „Data Analytics“ aus. Hier nutzt man die Analyseanwendung mit dem Namen „anomalieDetection“ und bestätigt dies mit einem Klick auf „Run“.

Die Amazon Kinesis Console: Zunächst den Punkt „Data Analytics“ auswählen. Hier nutzt man die Analyseanwendung mit dem Namen „anomalieDetection“ und bestätigt das mit einem Klick auf „Run“.
Die Amazon Kinesis Console: Zunächst den Punkt „Data Analytics“ auswählen. Hier nutzt man die Analyseanwendung mit dem Namen „anomalieDetection“ und bestätigt das mit einem Klick auf „Run“.
(Bild: AWS)

Der nächste Schritt erfolgt in der EC2-Konsole. Hier wählt man im Menüpunkt „Instances“ die Instanz „anomaly-detection-data-streams/producerInstance“. Mit einem Klick auf „Verbinden“ oben rechts bestätigt man die Wahl.

Die EC2-Konsole: Im Menüpunkt „Instances“ die Instanz “anomaly-detection-data-streams/producerInstance” wählen. Mit einem Klick auf „Verbinden“ oben rechts bestätigt man die Wahl.
Die EC2-Konsole: Im Menüpunkt „Instances“ die Instanz “anomaly-detection-data-streams/producerInstance” wählen. Mit einem Klick auf „Verbinden“ oben rechts bestätigt man die Wahl.
(Bild: AWS)

Nun wechselt man zum „Session Manager“-Tab und klickt auf „Verbinden“.

Session Manager Tab: Auf „Verbinden“ klicken.
Session Manager Tab: Auf „Verbinden“ klicken.
(Bild: AWS)

Um mit der Aufnahme von Datensätzen zu beginnen, ist folgender Befehl im neu geöffneten Fenster mit der Befehlszeile nötig:

sudo python3 /tmp/producer.py

Überwachung des Datenstroms und der Anwendungen

Der Producer schickt nun Daten mit einer Rate von vier bis fünf Datensätzen pro Sekunde in den Datenstrom. Um die Anzahl der eingehenden Datensätze zu überwachen, kann die IncomingRecord-Metrik des Streams in Amazon CloudWatch Metrics überprüft werden. Die Anzahl der Anomalien in den Daten wird mit der benutzerdefinierten Metrik „Successfully Processed Anomalies“ überwacht.

Freigabe nicht mehr benötigter Ressourcen

Um zusätzliche Kosten zu vermeiden, sollten nach der Nutzung die EC2-Instanz gestoppt und bereitgestellte Ressourcen frei gegeben werden. Hierzu wird der CloudFormation-Stack und der S3 Output Basket manuell in der AWS-Konsole gelöscht. Gegebenenfalls sollten auch zusätzliche Ressourcen, die im Rahmen dieses Tutorials erstellt wurden, entfernt werden.

* Constantin Gonzalez ist Principal Solutions Architect und Florian Mair ist Associate Solutions Architect bei Amazon Web Services.

(ID:47070603)