导出时间:2024/07/17 00:00:00 GMT+0,来自 Codex CLI
参考材料
- All you need is Wide Events, not "Metrics, Logs and Traces",作者 Ivan Burmistrov,发表于 2024 年 2 月 15 日
- Hacker News 讨论(2024 年 2 月 27 日)
Substack 精选要点
- Burmistrov 认为,业界对“可观测性三驾马车”(指标、日志、追踪)的执念,让人忽视了真正的目标:当故障形态还是未知的“未知”时,需要能快速探索高基数字段的生产数据。
- 在 Meta,Scuba 把一切都视为 wide event:单条包含大量字段的事件记录(类似超宽的 JSON),几乎把发生时的所有上下文都塞进去。分析师可以沿任何维度切片、分组、筛选,不需要预聚合,也就没有粒度损失。
- 文章通过一次转化率骤降的排障故事说明:团队不断筛选 wide event,最终锁定特定的 OS 版本和构建号。因为没有预聚合,所有细节都保留下来,负责出问题组件的团队立刻浮现。
- wide event 可以覆盖三驾马车:trace 只是在事件里多了
TraceId/SpanId;日志是携带 message 的结构化字段;指标是定期快照。保留原始事件,把模式选择延迟到查询时,自然让跨维度关联更容易。 - 作者的吐槽集中在 OpenTelemetry 教学上:厚厚一摞术语表、以三驾马车为起点的叙述,让可观测性显得晦涩而门槛高。但核心理念其实可以简单归结为“捕获富含上下文的事件并探索它们”。
HN 讨论的侧重点
- 多数评论者认可理念,但强调“把所有字段都存下来并可查询”很 烧钱,尤其在采购 SaaS 时。很多团队选择预聚合指标,并非因为不理解,而是成本压力。
- 不少人指出,wide event 和结构化日志、Kafka→Elastic/ClickHouse、事件溯源模式非常契合。新意更多在于运维成熟度和优秀工具,而非技术本身。
- 中小团队的工程师表示,如果自建(Kafka + Elastic)管线,成本可控;一旦依赖云厂商服务,账单会随着用量呈指数增长。
- 有人提醒不要把数据湖做成“数据沼泽”:如果只是“统统塞进去”,缺少留存策略、责任划分,以及对下游依赖的管理,很快就失控。
- 也有人探讨混合方案:从事件洪流中派生指标、把 wide event 批量写入 Parquet,或在使用 OpenTelemetry span 的同时强化 UI,让 wide event 的心智模型更易理解。
- 元讨论也不少:供应商会把“可观测性”解释成自己能卖的形态,而“一切只需 X”式的口号往往忽略了真实团队面对的权衡。
对我们栈的启发
- wide event 的优势离不开廉价的原始存储,以及支持多维探索的交互界面;少任何一环,思路都会折翼。
- 成本治理与留存策略必须与数据模型同步迭代,否则 wide event 湖迟早变成无法检索的沼泽。
- 即便暂时做不到 Scuba 那种深度,把结构化事件当作默认的输出格式,也能为未来的工具演进留好空间。指标随时可在下游派生,但丢掉的细节再也找不回来。
- 传播理念同样重要:与其让同事背诵“指标、日志、追踪三大类”,不如描述成“捕获可询问的、结构化且上下文丰富的事件”。