© Liashko/Shutterstock.com
Anomalieerkennung in Echtzeit mit Kafka und Isolation Forests

Finde die Ausreißer


Anomalien – oder auch Ausreißer – sind in Daten allgegenwärtig. Sei es durch Messfehler der Sensoren, unerwartete Ereignisse in der Umwelt oder fehlerhaftes Verhalten einer Maschine. In vielen Fällen ist es sinnvoll, solche Anomalien in Echtzeit zu erkennen, um unmittelbar darauf reagieren zu können. Das nötige Rüstzeug dafür gibt uns die Data-Streaming-Plattform Apache Kafka sowie die Python-Bibliothek scikit-learn an die Hand.

Anomalien in Datenreihen zu erkennen, kann in vielen Kontexten wertvoll sein: vom vorausschauenden Warten über das Monitoren von Ressourcenverbräuchen bis zur IT-Sicherheit. Bei der Erkennung spielt auch der Faktor Zeit eine Rolle: Je früher die Anomalie erkannt wird, desto besser. Ideal ist es, die Anomalien in Echtzeit und direkt nach dem Auftreten zu erkennen. Das kann mit wenigen Tools realisiert werden. Im Folgenden schauen wir uns Kafka, Docker und Python mit scikit-learn genauer an. Die komplette Implementierung der aufgeführten Codefragmente kann unter [1] gefunden werden.

Apache Kafka

Der Kern von Apache Kafka ist eine einfache Idee: ein Log, an das Daten beliebig angehängt werden können. Dieses fortlaufende Log nennt man dann einen Stream. Auf der einen Seite können sogenannte Producer Daten in den Stream schreiben, auf der anderen Seite können die Consumer diese Daten auslesen. Diese Einfachheit macht Kafka zugleich sehr mächtig und für viele Einsatzzwecke verwendbar. Beispielsweise können Sensordaten direkt nach der Messung in den Stream gesendet werden. Auf der anderen Seite kann eine Anomalieerkennungssoftware die Daten auslesen und verarbeiten. Wieso sollte sich aber überhaupt zwischen Datenquelle (Sensoren) und der Anomalieerkennung ein Stream befinden, anstatt die Daten direkt zur Anomalieerkennung zu senden?

Hierfür gibt es mindestens drei gute Gründe. Erstens kann Kafka verteilt in einem Cluster betrieben werden und hohe Ausfallsicherheit bieten (vorausgesetzt, dass es tatsächlich in einem Cluster von Servern läuft und im Fehlerfall ein anderer Server die Arbeit übernehmen kann). Falls die Anomalieerkennung ausfallen sollte, kann nach einem Neustart der Stream weiterverarbeitet und dort weitergemacht werden, wo zuletzt aufgehört wurde. Es gehen also keine Daten verloren. Zweitens bietet Kafka Vorteile in dem Szenario, wenn ein einzelner Container für die Anomalieerkennung in Echtzeit nicht schnell genug arbeitet. In diesem Fall würde ein Load Balancing zur Verteilung der Daten benötigt werden. Kafka löst diese...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang