使用 Transformers 在导出前对日志进行过滤、重塑和脱敏

📌 One-Sentence Summary
Cloudflare 工程师介绍 Logpush Transformers 如何在日志导出前用 SQL 过滤、重塑和脱敏记录,并把 Apache DataFusion 进程内嵌入 Go 写的投递服务以兼顾吞吐与可靠性。
📝 Summary
Rob Taylor 与 Sahidya Devadoss 介绍了在生日周正式可用的 Logpush Transformers:用户为某个 Logpush 数据集写一条 SQL 查询,Logpush 在每批数据导出前执行它,WHERE 过滤记录,SELECT 决定输出字段,可增删改名、嵌套字段并对 IP 等敏感数据脱敏,结果以 NDJSON 导出,省去单独的处理服务并减少下游存储成本。Cloudflare 数据管道每秒摄入超过十亿事件,其投递服务 Bufstream 每秒向客户目的地投递超过 1.1 亿条记录。团队最初用 Workers 运行 WebAssembly 原型,但这会在导出路径引入网络调用、带来超时与重试,于是改为在投递服务进程内执行,并选用已支撑 Cloudflare Basin 的 Rust 查询引擎 Apache DataFusion;单个 goroutine 对 5000 行批次执行预编译查询约 3 毫秒。Go 与 Rust 之间通过 Arrow IPC 经 cgo 传递列式批次,并明确两侧内存所有权;schema 由数据集规范生成而非从数据推断。查询存于 R2,按时间片预编译为逻辑计划复用。转换失败时 fail closed:不推进投递偏移、不发送未转换数据,渐进延迟重试,长期失败的作业会被自动停用。
💡 Main Points
导出前用 SQL 处理日志
Transformer 是针对某个 Logpush 数据集的 SQL 查询,在每批导出前执行,可过滤记录、脱敏并重塑字段,输出 NDJSON。
放弃 Workers 原型,改为进程内执行
调用 Workers 会在导出热路径引入网络调用和超时重试,团队改为在投递服务 Bufstream 内执行转换。
选用 Apache DataFusion 与 Arrow
Rust 查询引擎 DataFusion 以向量化列式方式执行,5000 行批次约 3 毫秒;Go 与 Rust 通过 Arrow IPC 经 cgo 交换批次并明确内存归属。
计划复用与稳定 schema
SQL 存于 R2,按时间片编译成可复用的逻辑计划;schema 由数据集规范生成,便于校验查询。
失败即关闭(fail closed)
转换失败时不推进偏移、不投递原始数据,渐进退避重试,长期失败作业自动停用,并在 Health 视图展示指标。
💬 Key Quotes
Transformers 被设计为失败即关闭(fail closed)。
我们决定把 Transformer 的执行保留在投递服务进程内,以优先保证可靠性和投递吞吐。
📊 Article Meta
AI Screening: 90
Featured: Yes
Source: The Cloudflare Blog
Author: Rob Taylor
Category: 人工智能
Language: 英文
Read Time: 12 min
Word Count: 2893
Tags:
可观测性 , 日志 , 数据工程 , Apache DataFusion , Cloudflare
支持作者,持续关注中。
收藏了,以后慢慢研究。
楼主辛苦了,内容很有参考价值。
整理得太全面了,省了我不少时间。
看完了,收获满满,期待更多更新。
不错不错,已加入书签。
整理得太全面了,省了我不少时间。
实话,说的不明不白
点赞,必须点赞
实测过类似工具,作者说的基本属实。
赞同,实践出真知。
思路清晰,干货满满。