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 | 注册被拒绝时,在此查找对应错误行 |
相关文档
plantpulse-cep组件 — 模块 · 路径 · 配置文件- CEP 控制台 (7401) — 在浏览器中编写 EQL
- CEP 客户端 — Java SDK