Zum Hauptinhalt springen

plantpulse-cep (Complex Event Processing)

Rolle​

Dies ist die Complex Event Processing Schicht. Sie erkennt zeitliche und logische Muster mehrerer Ereignisse in Echtzeit, um Alarme, Flow-Trigger und Automatisierungen auszulösen. Regeln werden in EQL(PlantPulse CEP SQL) geschrieben.

PunktWert
Modulnameplantpulse-cep
Installationspfad/opt/kopens/plantpulse-platform/plantpulse-cep/
Port7400 (HTTP) · 7401 (TLS)
AusführungsengineEine beim Booten — Aster CEP(cep.backend=aster, identisch auch ohne Konfiguration)
pd Dienstcep — Nur MASTER
API-AuthentifizierungX-API-Key: <PP_CEP_API_KEY>
Konsolen-LoginPP_CEP_WEB_USER / PP_CEP_WEB_PASSWORD — Wenn leer, wird nur die Konsole geschlossen
Sprache, Backend, Betrieb und Einschränkungen befinden sich in den entsprechenden Abschnitten

Diese Seite behandelt Module und Dateien. Informationen zur Syntax und Ausführung finden Sie im CEP-Abschnitt.

Anwendungsbeispiel​

"Wenn ein Alarm ausgelöst wurde, aber innerhalb von 30 Minuten keine Aufhebung erfolgt, wird dies als nicht aufgehoben gemeldet"

SELECT a.machineId AS machine
FROM pattern [every a=AlarmEvent -> not ClearEvent for 30 min]

Konfiguration​

API, Konsole und Engine befinden sich im selben Prozess. Es läuft nur die eine Engine, die beim Booten ausgewählt wurde.

Verzeichnisstruktur​

plantpulse-cep/
├── config/plantpulse-cep.properties # 생성물 ← plantpulse-datalake-cli 의 템플릿
├── bin/start.sh
├── logs/
└── server/ # 내장 Tomcat — webapps/ROOT.war · logs/catalina.<date>.log

Hauptkonfiguration​

# 백엔드 — 부팅 시 하나. 미설정이면 이전 것을 그대로 유지한다
cep.backend=aster
#cep.mode=native # native | portable

# 이벤트 입력 (Valkey 스트림)
cache.host=${PP_REDIS_HOST}
cache.port=${PP_REDIS_PORT}
cache.password=${PP_REDIS_PASSWORD}
cache.ssl.enabled=false
cep.stream.shard_count=16
cep.consumer.thread_count=16

# 룰 · 이벤트 타입 레지스트리 (PostgreSQL datalake DB — CEP 가 표를 스스로 만든다)
jdbc.datalake.url=jdbc:postgresql://${PP_POSTGRES_HOST}:${PP_POSTGRES_PORT}/datalake
jdbc.datalake.username=${PP_DATALAKE_DB_USER}
jdbc.datalake.password=${PP_DATALAKE_DB_PASSWORD}

# 운영 지표 (Cassandra)
storage.host=${PP_CASSANDRA_HOST}
storage.keyspace=${PP_KEYSPACE}
cep.storage.ttl_seconds=864000 # 10일

# 인증
cep.api.key=${PP_CEP_API_KEY}
cep.web.user=${PP_CEP_WEB_USER}
cep.web.password=${PP_CEP_WEB_PASSWORD}
cep.api.max_eql_text_length=100000
cep.flink.* ist nur beim Booten mit Flink relevant

In derselben Datei bleiben cep.flink.reconciler.enabled und cep.flink.router.enabled vorhanden. Wenn mit einem anderen Backend gebootet wird, werden diese ignoriert und der Name einmal im Log ausgegeben.

Es gab Fälle, in denen bei aktiviertem Schalter mit einem anderen Backend gestartet wurde und dasselbe Statement in zwei Engines lief, wodurch Ergebnisse doppelt veröffentlicht wurden → Backend

Das Verfahren zur Änderung von Werten finden Sie unter Konfigurationsänderung, die Rotation von API-Keys unter Passwörter und API-Keys ändern.

Haupt-APIs​

PfadFunktion
POST /api/v1/eql/deployStatement-Registrierung
POST /api/v1/eql/validateNur Entscheidung — SUPPORTED / UNSUPPORTED / UNPARSEABLE
DELETE /api/v1/eql/undeploy/{id}De-Registrierung
GET /api/v1/eql/registrationRegistrierungstabelle (ACTIVE / REJECTED)
GET /api/v1/eql/portabilityPortabilität
GET /api/v1/eql/metrics/snapshot · /metrics/engineMatch-Rate und Output-Rate pro Statement, Engine-Kennzahlen
GET·POST·PUT·DELETE /api/v1/event-typesEreignistyp-Registrierung
GET·POST·DELETE /api/v1/keysAPI-Key
GET /api/healthAnonymer Readiness-Check — Engine · Cache · Schema

Betriebsbefehle​

docker exec plantpulse-datalake pd status cep
docker exec plantpulse-datalake pd restart cep
docker exec plantpulse-datalake pd logs --lines 200 cep

# 어느 백엔드로 떴나 — 판정 지표는 로그 한 줄이다
docker exec plantpulse-datalake sh -c 'grep "CEP input path" ... | tail -1'

curl -fsS http://127.0.0.1:7400/api/health

Häufig auftretende Probleme​

SymptomUrsacheMaßnahme
Registrierung bleibt bei REJECTEDDas gebootete Backend unterstützt diese Konfiguration nichtSuchen Sie die entsprechende Zeile im Reject-Token
Registrierung mit 400 abgelehntNicht registrierter EreignistypEreignistyp-Registrierung
CEP startet gar nichtTippfehler in cep.backend oder fehlende Runtime im WARDas Log nennt die Ursache. Es gibt keinen Fallback
Ergebnisse kommen nirgendwo anKeine Subscriber (0)Log-Eintrag no subscriber
Ergebnisse kommen doppelt anBooten mit anderem Backend, während cep.flink.*-Schalter aktiv istBackend
Health ist DEGRADED, Tabellenname im GrundCEP-Tabellen fehlenPrüfen Sie die DB-Verbindung(jdbc.datalake.*) und starten Sie neu — Tabellen werden beim Start selbst erstellt
API 401API-Key stimmt nicht übereinpasswd.sh PP_CEP_API_KEY
Konsolen-Login abgelehntPP_CEP_WEB_PASSWORD ist leerWeb-Login-Konto

Verwandte Dokumente​