Industrial Sensor Pipeline · Apache Kafka

Echtzeit-Datenpipeline für industrielle Sensordaten — Apache Kafka als Message Broker, PostgreSQL zur Speicherung, Grafana für Live-Dashboards und automatische Anomalieerkennung mit zwei Schweregradklassen.

GitHub Repository

Kontext & Motivation

Industrielle Systeme erzeugen kontinuierlich Sensordaten — Temperatur, Vibration, Druck. Dieses Projekt demonstriert, wie solche Datenströme mit Apache Kafka zuverlässig transportiert, persistent gespeichert und in Echtzeit visualisiert werden können. Besonderes Augenmerk liegt auf der automatischen Erkennung von Anomalien und der Weiterleitung von Alarmen in einen separaten Kafka-Topic.

Streaming

Apache Kafka — zuverlässiger Transport von 3 Sensordatenströmen

Persistenz

PostgreSQL — historische Speicherung aller Messwerte

Anomalieerkennung

Separater Consumer mit MEDIUM/HIGH Schweregrad

Visualisierung

Grafana Dashboard — auto-provisioniert, 5s Refresh

1 — Architektur

Kafka Pipeline Architektur Sensor Producer sendet Daten an Kafka Broker, zwei Consumer lesen parallel: Consumer DB speichert in PostgreSQL, Consumer Alerts erkennt Anomalien und publiziert in sensor-alerts Topic. Grafana visualisiert die Daten aus PostgreSQL. Sensor Producer (Python) Temperatur · Vibration · Druck · 1msg/s sensor-data Apache Kafka Broker Topic: sensor-data · Topic: sensor-alerts consume consume Consumer DB Speichert alle Messwerte in PostgreSQL Consumer Alerts Anomalieerkennung MEDIUM / HIGH Severity sensor-alerts Kafka Topic: sensor-alerts PostgreSQL — sensor_readings Grafana Dashboard — Live Visualisierung (5s Refresh)

2 — Simulierte Sensoren

SensorTypNormbereichAnomalie-SchwelleAnomalierate
sensor-temp-01Temperatur60–90 °C> 95 °C5%
sensor-vibr-01Vibration0.5–5 mm/s> 8 mm/s5%
sensor-press-01Druck1–6 bar> 8 bar5%

Anomalie-Schweregradklassen

MEDIUM : Wert > Schwelle          (z.B. Temperatur = 102 C bei Schwelle 95 C)
HIGH   : Wert > Schwelle * 1.2    (z.B. Vibration  = 10.11 mm/s bei Schwelle 8 mm/s)

3 — Reale Bugs während der Entwicklung

Bug-Serie — flake8 Lint-Fehler in der CI

⚠️ Mehrere Lint-Fehler wurden durch die CI aufgedeckt — E203, E221, E302, E305, W292 — verteilt über 3 separate Fix-Commits auf dedizierten Branches.

Die Fehler entstanden durch Formatierungsunterschiede zwischen dem lokalen Windows-Editor (PowerShell WriteAllText) und dem flake8-Standard auf Linux (GitHub Actions Ubuntu Runner). Jeder Fix wurde auf einer eigenen Branch (fix/flake8-lint-errors, fix/missing-newline, fix/consumer-lint-errors) committet und nach Validierung in main gemergt.

✅ Nach 3 Fix-Commits: CI vollständig grün — Lint + Integration Tests bestanden.

4 — CI/CD Pipeline

jobs:
  lint:
    - flake8 producer/    (PEP8 Stil-Check)
    - flake8 consumer/    (PEP8 Stil-Check)

  integration-test:
    needs: lint
    services:
      - zookeeper
      - kafka
      - postgres
    steps:
      - test_kafka_producer_consumer()   → Kafka send/receive OK
      - test_postgresql_connection()     → DB verbindung OK
      - test_postgresql_insert()         → Insert/Read OK
3
Kafka Topics
3
Integration Tests
2
CI Jobs
5%
Anomalierate

5 — Tech Stack & Skills

Apache Kafka Python PostgreSQL Grafana Docker Compose Event-Driven Architecture Real-Time Streaming Anomalieerkennung GitHub Actions CI flake8 / PEP8 Git Workflow

6 — Ausblick