メインコンテンツまでスキップ

CEP 概要

CEP(Complex Event Processing) は、流れてくるイベントから「今起きていること」を即座に判定する階層です。保存した後に問い合わせるのではなく、入力される間に判定します。

「深刻度3以上のアラームが発生し、10秒以内に同じ設備で深刻度4以上が再度発生すれば昇格」 — 「アラームが発生したが、30分間解除されない場合は未解除として上げる」

ルールは EQL(PlantPulse CEP SQL) で記述します。

言語が先であり、エンジンはそれを実行するだけです​

EQL 문장
│
▼
의미 분석 ─────────► 판정 셋: SUPPORTED · UNSUPPORTED · UNPARSEABLE
│
▼
공통 IR (엔진 독립)
│
┌─────┴─────┐
▼ ▼
Aster CEP Flink
(기본) (오라클 — 운영에 쓰지 않습니다)
言語EQL 1.0 — SQL-92 コア + ストリーミング拡張
基本バックエンドAster CEP — KOPENS 自社エンジン (動的ルール配備)
Flinkオラクルです — 同じ構文を Aster CEP と共に投入し、回答を照合するために使用します。運用環境では動作しません
ランタイムで動作するエンジンは「常に一つ」です

ブート時に一つを選択し、構文ごとのルーティングやフォールバックはありません。

二つを同時に動作させると「どちらのエンジンがこの結果を出したか」が不明になり、同じ入力が二回発行されます — これは実際に発生した欠陥です。差異実行は CI で行うものであり、運用環境で二つが同時に動作することはありません。

フォールバックがないということは「行く先がない」という意味です

ブートしたバックエンドが読み込めない構文は、登録自体が拒否されます。保存はされますが REJECTED と表示され、他のエンジンに静かに引き継がれることはありません。

拒否される際は常に名称を明示します — どの構成が遮断されたかをトークンで伝えます。静かに無視すれば、構文が計画され、配備され、もっともらしい回答を出してしまいます。

EQL は何であり、何ではないか​

  • 他製品の互換プロジェクトではありません。 他の CEP 製品の言語をすべて実装するわけではありません。ただし、今日動作している構文は引き続き動作し続ける必要があります。
  • Flink SQL の別名ではありません。 基礎は SQL-92 であり、ストリーミングに必要な部分のみを拡張します。
  • バックエンドが言語を決定しません。 言語が先にあり、バックエンドはそれを実行します。
PlantPulse CEP SQL (EQL)
│
├── SQL-92 SELECT · FROM · WHERE · JOIN · GROUP BY
│ (+ HAVING · ORDER BY · LIMIT · DISTINCT · CASE · CAST)
│
└── CEP 확장 WINDOW · OUTPUT … EVERY · INSERT INTO · 스트림 필터
MATCH_RECOGNIZE · pattern[...] · 부재 패턴

拡張は標準にないものだけを維持します。 標準で表現できるものを新しいキーワードとして作り直しません。

データが流れる経路​

  • 入力は Valkey ストリーム、基本プレフィックス PP:CEP-IN-STREAM、16 シャードです。
  • 出力は構文ごとに一つである Valkey トピックです。
  • ルールとイベントタイプの正本は PostgreSQL (cep_statement · cep_event_type) です。

最初の10分​

# 1. 어느 백엔드로 떴나 — 판정 지표는 «로그 한 줄» 입니다
docker exec plantpulse-datalake sh -c 'grep "CEP input path" /opt/kopens/.../system.log | tail -1'
# CEP input path: aster.

# 2. 서버가 살아 있나 (익명 readiness)
curl -fsS http://127.0.0.1:7400/api/health

# 3. 문장이 몇 개 등록됐고 몇 개가 거부됐나
curl -fsS -H "X-API-Key: ${PP_CEP_API_KEY}" http://127.0.0.1:7400/api/v1/eql/registration

# 4. 이 문장들이 다른 백엔드에서도 도나
curl -fsS -H "X-API-Key: ${PP_CEP_API_KEY}" http://127.0.0.1:7400/api/v1/eql/portability
ingest.rate_1m は根拠になりません

どのエンジンで動作していても流入量は増加します。どのバックエンドが動作しているかはブートログの一行が正解です。

イベントタイプを先に登録してください

登録されていないタイプに対する構文はコンパイルされ、配備され、動作しますが、永久にマッチしません。 そのため、配備時点で拒否します → イベントタイプ登録

このセクションの構成​

ページいつ見るか
EQL 言語構文を書くとき — 節 · ウィンドウ · 集計 · パターンと動作例
バックエンドどのエンジンで起動するか、cep.mode で移植性をどう扱うか
イベントタイプ登録新しいイベントを CEP に初めて入れるとき
運用オン/オフ · 登録結果の読み取り · 入出力契約
限界と拒否トークン登録が拒否されたとき、その一行をここで探します

関連文書​