Whisper / Graphite 的磁盘容量规划

Whisper / Graphite 的磁盘容量规划

是否有人有任何公式,或者也许来自他们的环境中的一些样本数据可以帮助我估计每个数据点的石墨将使用多少磁盘空间?

答案1

whisper-info.py让您深入了解每个文件的聚合内容和聚合方式,包括文件的大小。

然而它只对现有的 whisper 文件有用。

如果您希望在实施架构之前查看其预测大小,请尝试使用 Whisper 计算器,例如https://gist.github.com/jjmaestro/5774063

编辑:

当被要求举例时...

存储模式:

{
    :catchall => {
      :priority   => "100",
      :pattern    => "^\.*",
      :retentions => "1m:31d,15m:1y,1h:5y"
    }
}

查看我的文件applied-in-last-hour.wspls -l结果

-rwxr-xr-x 1 root root 4415092 Sep 16 08:26 applied-in-last-hour.wsp

whisper-info.py ./applied-in-last-hour.wsp产生

maxRetention: 157680000
xFilesFactor: 0.300000011921
aggregationMethod: average
fileSize: 4415092

Archive 0
retention: 604800
secondsPerPoint: 10
points: 60480
size: 725760
offset: 52

Archive 1
retention: 2678400
secondsPerPoint: 60
points: 44640
size: 535680
offset: 725812

Archive 2
retention: 157680000
secondsPerPoint: 600
points: 262800
size: 3153600
offset: 1261492

因此,基本上,您要将每个保留匹配、每个保留期段和每个统计数据的主机组合起来,乘以您打算应用此方法的系统的一个因子,再将您要跟踪的新统计数据的数量考虑在内。然后,您将存储量至少翻倍(因为我们要购买存储量,而且我们知道我们会使用它...)

答案2

在文档中统计信息 他们举了一个例子制定数据保留政策。

留存额为10s:6h,1min:7d,10min:5y2160 + 10080 + 262800 =275040 个数据点他们给出的档案大小为3.2 MB

假设存在线性关系,则每个数据点大约 12.2 字节

答案3

没有直接使用过 Graphite 的经验,但我认为我们用于 Cacti 或其他任何 RRD 或时间滚动驱动的逻辑是一样的(Graphite 内部不再使用 RRD,但存储逻辑似乎相当)。

简短的回答是“可能没有您想象的那么大的空间。”


长答案涉及一些特定于站点的数学运算。对于我们的监控系统 (InterMapper),我计算出保留期、分辨率和数据点大小,进行一些乘法运算,并添加开销。

我将使用磁盘空间作为示例 - 我们以 5 分钟精度存储 30 天的数据,以 15 分钟精度存储另外 60 天的数据,然后以每小时精度存储另外 300 天的数据,并且我们使用 64 位(8 字节)整数来存储它:

  • 总共 21600 个样本,细分如下:
    • 30 天 5 分钟精度的 8640 个样本
    • 60 天 15 分钟精度的 5760 个样本
    • 7200 个样本,300 天 1 小时精度

以每个样本 8 字节计算,大约为 173KB,再加上存储索引等的大量开销,一个分区的磁盘使用数据大约为 200KB(任何错误都倾向于高估)。

从基本指标中,我可以计算出“每台机器”的平均大小(10 个磁盘分区、交换空间、RAM、平均负载、网络传输和一些其他东西)——每台机器大约 5MB。

我还在最终数字上添加了 10% 并向上舍入,因此我将每台机器的大小定为 6MB。

然后,我看了看用来存储图表指标数据的 1TB 空间,然后说“是的,除非我们发展壮大,否则我这辈子可能都不会用完存储空间!”:-)

答案4

我有 70 个节点,它们会生成大量数据。使用 Carbon/Whisper,一个节点单独创建了 91k 个文件(该节点生成多个模式,每个模式都有多个计数器和需要可选择的变量字段。例如:(nodename).(schema).(counter).(subcounter).(etc)....等等)。

这提供了绘制任何我想要的图形所需的粒度。运行脚本填充剩余的 69 个节点后,磁盘上的数据为 1.3Tb。而这仅仅是 6 小时的数据/节点。让我吃惊的是,6 小时数据的实际平面 csv 文件约为 230Mb/节点。70 个节点约为 16Gb 数据。我的存储模式是 120s:365d。

我对数据库还比较陌生,所以我可能做错了什么,但我猜这是每个样本的开销。

所以这是一个有趣的实验,但我认为对于我存储的那种数据,使用 whisper 是没有意义的。MongoDB 似乎是一个更好的解决方案,但我需要弄清楚如何将其用作 Grafana 的后端。

相关内容