statsd 的 C 实现
Statsite 旨在实现高性能和极大的灵活性。为此,它使用事件循环在纯 C 中实现统计数据收集和聚合,从而实现了极高的速度。这使得它能够处理数百个连接和数百万个指标。每当刷新间隔到期时,statsite 都会执行 fork/exec,启动一个新的流处理程序,调用指定的应用程序。然后,statsite 会将聚合的指标通过 stdin 传输给应用程序,应用程序可以根据需要处理这些指标。
这使得 statsite 能够聚合指标,然后将指标发送到任意数量的接收器(Graphite、SQL 数据库等)。其中包含一个 Python 脚本,用于将指标发送到 Graphite。 statsite 尝试通过不存储接收到的所有指标来尽量减少内存使用。计数器值在接收时进行聚合,计时器值则使用来自 "Effective Computation of Biased Quantiles over Data Streams" 的 Cormode-Muthukrishnan 算法进行存储和聚合。这意味着百分位数值不完全准确,并且存在可指定的误差 ε。这使我们能够仅存储一部分样本。
对于定时器值,还可以选择维护直方图。最小值、最大值以及组间宽度必须提前指定,当接收到样本时,组会被更新。Statsite 支持多个直方图配置,并采用最长前缀匹配策略。
暂无开放 Issues,或尚未同步最近议题。