Kyle Brandt Asked: 2013-09-18 12:20:10 +0800 CST2013-09-18 12:20:10 +0800 CST 2013-09-18 12:20:10 +0800 CST Whisper / Graphite 的磁盘容量规划 772 有没有人有任何公式,或者他们环境中的一些示例数据可以帮助我估计每个数据点石墨将使用多少磁盘空间? monitoring 4 个回答 Voted Best Answer gWaldo 2013-09-20T07:50:00+08:002013-09-20T07:50:00+08:00 whisper-info.py让您深入了解每个文件的聚合内容和方式,包括文件的大小。 但是,它仅对现有的耳语文件有用。 如果您想在部署之前查看模式的预测大小,请尝试使用 Whisper 计算器,例如https://gist.github.com/jjmaestro/5774063上提供的计算器 编辑: 当被问到一个例子时...... 存储模式: { :catchall => { :priority => "100", :pattern => "^\.*", :retentions => "1m:31d,15m:1y,1h:5y" } } 查看我的文件applied-in-last-hour.wsp,ls -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 因此,基本上,您将每个保留期匹配的主机与每个统计信息的每个保留期段相结合,乘以您也打算应用此功能的系统因子,以及您要跟踪的新统计信息的数量。然后,您可以使用任何数量的存储空间,并且至少将其翻倍(因为我们正在购买存储空间,而且我们知道我们会使用它......) AndreKR 2014-02-10T05:43:18+08:002014-02-10T05:43:18+08:00 在statsd的文档中, 他们给出了数据保留策略的示例。 保留10s:6h,1min:7d,10min:5y是 2160 + 10080 + 262800 = 275040 个数据点,它们给出的存档大小为3.2 MiB。 假设线性关系,这将是每个数据点大约 12.2 字节。 voretaq7 2013-09-18T13:16:58+08:002013-09-18T13:16:58+08:00 没有直接使用 Graphite 的经验,但我想与我们用于 Cacti 或任何其他 RRD 或时间翻转驱动的逻辑相同(Graphite 在内部不再使用 RRD,但存储逻辑似乎具有可比性。) 快速回答是“可能没有您认为需要的那么多空间。” 长答案涉及一些特定于站点的数学。对于我们的监控系统(InterMapper),我计算出保留期、分辨率和数据点大小,进行一些乘法运算,并增加开销。 作为一个例子,我将使用磁盘空间——我们以 5 分钟的精度存储 30 天的数字,15 分钟的精度再存储 60 天,然后每小时精度再存储 300 天,我们使用的是 64 -bit(8 字节)整数来存储它: 总共 21600 个样本,细分为: 30 天 5 分钟精度的 8640 个样本 60 天 15 分钟精度的 5760 个样本 300 天 1 小时精度的 7200 个样本 每个样本 8 个字节,大约 173KB,加上存储索引等的健康开销,一个分区的磁盘使用数据(任何倾向于高估的错误)大约为 200KB。 根据基本指标,我可以计算出平均“每台机器”大小(10 个磁盘分区、交换空间、RAM、平均负载、网络传输和其他一些东西)——每台机器大约 5MB。 我还在最终数字的基础上添加了健康的 10% 并四舍五入,因此我将每台机器的大小设置为 6MB。 然后,我查看了用于存储图表指标数据的 1TB 空间,然后说:“是的,除非我们增长很多,否则我一生中可能不会用完存储空间!” :-) musca999 2017-11-18T15:32:27+08:002017-11-18T15:32:27+08:00 我有 70 个节点可以生成大量数据。使用 Carbon/Whisper,一个节点单独创建了 91k 个文件(该节点生成多个模式,每个模式都有多个需要选择的计数器和变量字段。例如:(节点名)。(模式)。(计数器)。(子计数器)。(等)....等等)。 这提供了绘制我想要的任何图表所需的粒度。运行脚本填充剩余的 69 个节点后,我在磁盘上有 1.3Tb 的数据。这仅是 6 小时的数据/节点价值。让我明白的是 6 小时数据的实际平面 csv 文件约为 230Mb/节点。70 个节点是 ~16Gb 的数据。我的存储模式是 120s:365d。 我对数据库比较陌生,所以我可能做错了什么,但我猜这是每个样本的所有开销。 所以这是一个有趣的实验,但我认为对我存储的数据类型使用耳语没有意义。MongoDB 似乎是一个更好的解决方案,但我需要弄清楚如何将它用作 Grafana 的后端。
whisper-info.py
让您深入了解每个文件的聚合内容和方式,包括文件的大小。但是,它仅对现有的耳语文件有用。
如果您想在部署之前查看模式的预测大小,请尝试使用 Whisper 计算器,例如https://gist.github.com/jjmaestro/5774063上提供的计算器
编辑:
当被问到一个例子时......
存储模式:
查看我的文件
applied-in-last-hour.wsp
,ls -l
产生和
whisper-info.py ./applied-in-last-hour.wsp
产量因此,基本上,您将每个保留期匹配的主机与每个统计信息的每个保留期段相结合,乘以您也打算应用此功能的系统因子,以及您要跟踪的新统计信息的数量。然后,您可以使用任何数量的存储空间,并且至少将其翻倍(因为我们正在购买存储空间,而且我们知道我们会使用它......)
在statsd的文档中, 他们给出了数据保留策略的示例。
保留
10s:6h,1min:7d,10min:5y
是 2160 + 10080 + 262800 = 275040 个数据点,它们给出的存档大小为3.2 MiB。假设线性关系,这将是每个数据点大约 12.2 字节。
没有直接使用 Graphite 的经验,但我想与我们用于 Cacti 或任何其他 RRD 或时间翻转驱动的逻辑相同(Graphite 在内部不再使用 RRD,但存储逻辑似乎具有可比性。)
快速回答是“可能没有您认为需要的那么多空间。”
长答案涉及一些特定于站点的数学。对于我们的监控系统(InterMapper),我计算出保留期、分辨率和数据点大小,进行一些乘法运算,并增加开销。
作为一个例子,我将使用磁盘空间——我们以 5 分钟的精度存储 30 天的数字,15 分钟的精度再存储 60 天,然后每小时精度再存储 300 天,我们使用的是 64 -bit(8 字节)整数来存储它:
每个样本 8 个字节,大约 173KB,加上存储索引等的健康开销,一个分区的磁盘使用数据(任何倾向于高估的错误)大约为 200KB。
根据基本指标,我可以计算出平均“每台机器”大小(10 个磁盘分区、交换空间、RAM、平均负载、网络传输和其他一些东西)——每台机器大约 5MB。
我还在最终数字的基础上添加了健康的 10% 并四舍五入,因此我将每台机器的大小设置为 6MB。
然后,我查看了用于存储图表指标数据的 1TB 空间,然后说:“是的,除非我们增长很多,否则我一生中可能不会用完存储空间!” :-)
我有 70 个节点可以生成大量数据。使用 Carbon/Whisper,一个节点单独创建了 91k 个文件(该节点生成多个模式,每个模式都有多个需要选择的计数器和变量字段。例如:(节点名)。(模式)。(计数器)。(子计数器)。(等)....等等)。
这提供了绘制我想要的任何图表所需的粒度。运行脚本填充剩余的 69 个节点后,我在磁盘上有 1.3Tb 的数据。这仅是 6 小时的数据/节点价值。让我明白的是 6 小时数据的实际平面 csv 文件约为 230Mb/节点。70 个节点是 ~16Gb 的数据。我的存储模式是 120s:365d。
我对数据库比较陌生,所以我可能做错了什么,但我猜这是每个样本的所有开销。
所以这是一个有趣的实验,但我认为对我存储的数据类型使用耳语没有意义。MongoDB 似乎是一个更好的解决方案,但我需要弄清楚如何将它用作 Grafana 的后端。