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

清风徐来行业资讯📡 BestBlogs·全站精选⭐ 902026-10-1358 阅读💛 272 收藏
使用 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

#可观测性# 日志# 数据工程# Apache DataFusion# Cloudflare

文章评论(12)

空向阳1 天前

支持作者,持续关注中。

回复
空向阳1 天前

收藏了,以后慢慢研究。

回复
南山客1 天前

楼主辛苦了,内容很有参考价值。

回复
逐光而行1 天前

整理得太全面了,省了我不少时间。

回复
雪影1 天前

看完了,收获满满,期待更多更新。

回复
风倚栏22 小时前

不错不错,已加入书签。

回复
南山客1 天前

整理得太全面了,省了我不少时间。

回复
雪知秋22 小时前

实话,说的不明不白

回复
空向阳23 小时前

点赞,必须点赞

回复
风倚栏22 小时前

实测过类似工具,作者说的基本属实。

回复
空向阳23 小时前

赞同,实践出真知。

回复
暮临风20 小时前

思路清晰,干货满满。

回复