跳到主要内容

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,而不会静默传递给其他引擎。

拒绝时始终明确指出原因 — 通过 Token 说明哪个配置被拦截。如果静默忽略,语句将被规划、部署并给出看似合理但错误的答案。

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 时
运维启停 · 读取注册结果 · 输入输出契约
限制与拒绝 Token注册被拒绝时,在此查找对应错误行

相关文档​