Graphite Graph - 我们可以多快更新图表?

时间:2013-10-01 12:37:38

标签: graph graphite graphite-carbon wwwhisper

我们正在尝试将Graphite用于(近乎)实时图形网络系统。然而,我们似乎无法以比1秒更新率更快的速度加速石墨。最终我们希望有100ms的更新

通过阅读常见问题解答,它听起来像石墨很快 - 但这要么是非常误导,要么我不理解如何加速石墨

耳语的时间信息似乎使用UNIX时间戳

  

Graphite的可扩展性如何?

     

从CPU的角度来看,Graphite在前端和后端都是水平扩展的,这意味着你可以简单地在混合中添加更多的机器来获得更多的吞吐量。它也是容错的,因为丢失后端机器会导致最小量的数据丢失(无论机器在内存中缓存了什么),并且如果你有足够的容量来处理负载,也不会中断系统。

     

从I / O的角度来看,在负载下,Graphite可以非常快速地对许多不同的文件执行大量微小的I / O操作。这是因为发送到Graphite的每个不同度量标准都存储在自己的数据库文件中,类似于在RRD工作之上构建的工具(drraw,Cacti,Centreon等)的数量。实际上,Graphite最初确实使用RRD进行存储,直到出现需要新存储引擎的基本限制。

     

高容量(几千个不同的指标稍微更新)几乎需要一个好的RAID阵列。如果磁盘无法跟上发生的大量小写操作(每个数据点只有几个字节,但大多数磁盘每秒执行的操作数不会超过几千次,即使如此,Graphite的后端也会缓存传入的数据他们很小)。当发生这种情况时,Graphite的数据库引擎,低声,允许碳一次写入多个数据点,从而增加整体吞吐量,但代价是保留多余的数据缓存在内存中,直到可以写入。

     

图表的实时性如何?

     

非常。即使在负载很重的情况下,每个时间间隔内的指标数量远远大于存储系统执行I / O操作的速度,并且大量数据点正在缓存在存储管道中(请参阅上一个问题的解释),Graphite仍然绘制实时图形。诀窍在于,当Graphite webapp收到绘制图形的请求时,它同时从磁盘以及预存储缓存(如果您有多个后端服务器可以分发)中检索数据,并将两个来源组合在一起。用于创建实时图表的数据。

此外,他们只在这里显示秒数和小数点: http://graphite.readthedocs.org/en/latest/config-carbon.htmlfrom and until must be a time specification conforming to the AT-STYLE time specification described此处:http://oss.oetiker.ch/rrdtool/doc/rrdfetch.en.htmlhttp://graphite.wikidot.com/url-api-reference

那是什么?石墨快吗?或者只是处理大型数据集的速度很快 - 我们正在寻找一个简单易用的分组数据网络接收器来直观显示 - Graphite似乎是一个很好的解决方案但现在我们已经完成所有配置和运行我猜我们只是浪费了一个很多时间

谢谢!

1 个答案:

答案 0 :(得分:6)

Graphite将在storage-schemas.conf中按照最精确定义的精度存储最多一个数据点(接收的其他数据点将被删除)。 最精确的精确度是1秒。,例如保留= 1s :6小时,1分钟:7天,10分钟:5天

为了实现您的目标,您需要在Graphite前面放置一个聚合器。聚合器将接收所有指标并聚合数据,刷新到Graphite存储以匹配存储架构。聚合器将对指标执行计算(平均值,总和,平均值等)并将其发送。 e.g。在过去的一秒中,您平均需要14毫秒来处理请求,或者在过去的10秒内,请求的总数是4234.

因此,虽然您无法以比1秒更精细的粒度进行报告,但您可以使用聚合器捕获 - 在1秒时间间隔内发生的事件的总和和平均值并报告。

两个常见的选择是StatsDGraphite provided in carbon aggregator.

** StatsD,IMO是要走的路。它是一个网络守护程序,您可以单独运行并通过UDP发送给它。也就是说,你可以用carbon-aggregator.py做很多事情(例如UDP)。