一条原始日志要变成结构化审计记录,得先在万级规则库里找到「那一条」。本页讲引擎最核心的领域逻辑:recognizeStr 便宜前缀先筛 → patternStr 昂贵正则再捕 → fields 模板拼出标准字段。L3 的解析台会在浏览器里真实执行规则库原始正则。
全链路七跳,本页覆盖第五跳:终端 Agent → envoy mTLS → audit-gateway → Kafka → Flink ETL(本页)→ std topic → StarRocks。Flink 从原始 topic 取数,把「洗」这道工序做完,产出可检索的标准字段。
三十三句确定性短句,分五组:部署形态、两步解析、字段映射、ETL 平台、规则库与依赖。
三张图:解析管线四阶段(可点击)、万级规则两步走的性能对比、FlinkDeployment 部署拓扑。
两步解析台:可编辑日志,步进看识别命中 → 真实正则执行 → 捕获组表 → 字段映射 JSON。改日志能走「未命中」路径。加六题自测。
六镜头「万中选一」:洪流进卡池、前缀快筛、正则捕获、模板拼装、平台下发、收尾。成片已交付 · 01:34。
主角:flink-etl(FlinkDeployment)
一句话:万条规则里找到那一条——先便宜筛,再贵正则。
三个数字:1 JM + N TM · 规则库万级(预发 22 条)· 映射表 23 张 xlsx。
解决两件事:结构化(识别·捕获·映射)· 性能(前置识别收窄范围)。
consume agent-* → recognizeStr 前缀识别(收窄到 1 条)→ patternStr 正则捕获 $2/$3/$4… → fields 映射(name/subMSG/srcProcessId/message)→ produce std_clasp_agent_* → 直写 StarRocks
以下每句话都来自交接材料(规则解析参考、ETL 字段映射表、部署手册)。读不懂的句子,去 L2 找对应的结构图。
三张图:先看一条日志流过四个阶段,再算「万级规则为什么必须两步走」,最后看 Flink 在 K8s 里的部署拓扑。
样例是规则库里的真实数据:Linux audit「用户登录」事件。左侧改日志、右侧步进:第 1 步看识别命中与否,第 2 步浏览器现场执行规则库原始 patternStr,第 3 步看捕获组,第 4 步看字段映射与产出。改成不认识的日志,能走「未命中」路径。
来自规则库 rule_linux-用户登录.json 的 sample 字段。
开始后逐步解释:为什么先识别、正则怎么捕、字段怎么映射。
已答 0 / 6 · 正确 0 · 正确率 0%
1. recognizeStr 与 patternStr 的分工是?
2. 为什么要先做前置识别?
3. 捕获组 $3 映射到哪个标准字段?
4. helm 安装 Flink Operator 的关键注意点?
5. IP 归属库 ipip-*.ipdb(141MB)部署时放在哪里?
6. Flink Operator 的前置依赖是?
六镜头沿用总览片「万中选一」意象并展开:洪流进卡池、前缀快筛、正则捕获、模板拼装、平台下发、收尾。画面里的识别串、捕获组、字段名与 L1–L3 同源。
规格:1920×1080 · 30fps · 01:34 · H.264 + AAC · 中文配音(zh-CN-Yunxi 逐句合成,每句实测时长均落在自己的字幕窗口内)+ 画面内嵌字幕。底部常驻进度轨随镜头推进点亮。
镜头 1 · 洪流进卡池
画面:原始日志如卡片洪流涌入一座万格卡池,每格一条规则。
旁白:一条日志,一万条规则。逐格去试,到天亮也试不完——规则引擎的第一课:别硬试。
镜头 2 · 前缀快筛
画面:日志头部 type=LOGIN msg=audit( 六个字符如探针扫过卡池,只有一张卡亮起。
旁白:先用便宜的:一段前缀,万格速筛。一万个可能,瞬间剩下一个。
镜头 3 · 正则捕获
画面:亮起的规则卡展开为正则模板,捕获组括号依次点亮 $2 $3 $4,值被抽出行。
旁白:贵的正则,只跑这一次。括号张开口,把时间戳、进程号、用户号一个个衔出来。
镜头 4 · 模板拼装
画面:捕获值飞进字段槽位 subMSG / srcProcessId / message,name 槽自动填入「用户登录」。
旁白:模板负责说人话:用户,几号,登录了。原始文本到此变成结构化字段。
镜头 5 · 平台下发
画面:data-platform 界面上规则改一行,下发箭头直达 flink-etl,卡池同步刷新。
旁白:规则不是写死的。平台上改,作业里生效——规则配置与计算引擎,各管各的。
镜头 6 · 收尾:结构化完成
画面:std topic 中一行 JSON 落定,StarRocks 检索框输入「用户登录」毫秒返回。
旁白:从一行谁也读不懂的原文,到一条毫秒可查的记录——这就是引擎里「洗」的那一跳。
① 前置识别
万级规则先便宜前缀筛,再跑完整正则。
② 两步走
recognizeStr 定类型,patternStr 取捕获组。
③ 捕获组映射
$2/$3/$4 → subMSG/srcProcessId/message,模板拼装。
④ name 固定值
规则名即事件名,检索的直接锚点。
⑤ 平台管规则
data-platform 下发配置,Flink 只管算——规则与算力解耦。
⑥ operator 调谐
watchNamespaces 对齐 + cert-manager 前置,FlinkDeployment 才有人管。