Twitter 工程团队开源了他们的遥测工具 Rezolus,该工具可以通过比常规工具更高的采样频率来检测系统性能指标中的异常。 Rezolus 以很高的速率采集样本,且采样频率是可配置的。它根据采集到的数据生成直方图,并将百分位数据导出到后端的时序存储中。在“百分位数的尾部”可以检测到短暂的异常。
Rezolus 的需求来源于检测在遥测工具采样时间间隔内发生的异常。例如,大多数工具都配置成每隔 15 秒或 1 分钟才采样一次数据,因为更高的频率可能会导致过多的数据点,从而导致更高的存储成本。在 Twitter 上,一些高吞吐量的基准测试产生了现有工具无法检测到的异常。
Rezolus 可以使用名为“samplers”的插件从多个资源中收集数据。一些采样器会从 Linux 内核资源中读取数据。这些数据包括 CPU、网络及磁盘使用情况等指标,这些指标是从传统的资源(如 procfs 和 sysfs)中获得的。除了这些传统的资源外,Rezolus 还支持perf_events,它是一个嵌入在 Linux 内核中的工具。perf_events 可用于收集硬件和软件事件相关的数据,比如页错误、上下文切换及缓存命中/未命中等。Extended Berkeley Packet Filter(eBPF)也支持在内核组件上收集指标。 eBPF是一组低级别的 API,通过该 API 可以很方便地为 Linux 内核构建分析工具。此外,Rezolus 还可以通过将高频指标转换为基于直方图的指标,从而可以充当应用程序和其他指标收集器之间的桥梁。
根据文档中所写,Rezolus“通过在内核中收集遥测数据,可以以极低的性能开销收集到在极高速率下才会发生的事件数据,比如,任务调度。“ Rezolus 的作者之一、Twitter 工作后台网站的可靠性工程师Brian Martin说到,采用 10Hz(10 次/秒)的采样频率时,它通常会占用 15%的 CPU 内核。禁用 eBPF 可以进一步降低资源消耗。
Rezolus 是用 Rust 编写的,并在 Apache 2.0 许可下发布。它重用了一个名为rpc-perf的 Twitter 度量库。Twitter 工程团队使用 Rezolus 已经有一年多了。
原文链接:
Twitter Open Sources Its Telemetry Tool Rezolus for Detection of Short Lived Anomalies
评论