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

Graphite Graph-我们可以以多快的速度更新图表?,graph,graphite,graphite-carbon,wwwhisper,Graph,Graphite,Graphite Carbon,Wwwhisper,我们正在尝试将Graphite用于(接近)实时图形web系统。但是,我们似乎无法将graphite的更新速度提高到1秒以上。最终,我们希望有100毫秒的更新 从阅读常见问题来看,它听起来像石墨是快的-但这要么是非常误导,要么我不明白如何加快石墨 whisper的计时信息似乎使用UNIX时间戳 石墨的可伸缩性如何 从CPU的角度来看,Graphite在前端和后端都是水平扩展的,这意味着您可以简单地向混合中添加更多的机器以获得更高的吞吐量。从某种意义上讲,它也是容错的,即丢失后端计算机将导致最小数量

我们正在尝试将Graphite用于(接近)实时图形web系统。但是,我们似乎无法将graphite的更新速度提高到1秒以上。最终,我们希望有100毫秒的更新

从阅读常见问题来看,它听起来像石墨是快的-但这要么是非常误导,要么我不明白如何加快石墨

whisper的计时信息似乎使用UNIX时间戳

石墨的可伸缩性如何

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

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

高容量(每分钟更新几千个不同的度量)几乎需要一个好的RAID阵列。Graphite的后端缓存传入数据,如果磁盘无法跟上发生的大量小写操作(每个数据点只有几个字节,但大多数磁盘每秒不能执行数千次I/O操作,即使它们很小)。当这种情况发生时,Graphite的数据库引擎whisper允许carbon一次写入多个数据点,从而提高总体吞吐量,但代价是将多余的数据缓存在内存中,直到可以写入为止

图形的实时性如何

非常。即使在负载较重的情况下,每个时间间隔中的度量值数量远大于存储系统执行I/O操作的速率,并且存储管道中缓存了大量数据点(请参见前面的问题以获取解释),Graphite仍然绘制实时图形。诀窍在于,当Graphite webapp收到绘制图形的请求时,它会同时从磁盘和预存储缓存(如果您有多个后端服务器,则可能会分发)中检索数据,并将两个数据源合并以创建实时图形

此外,此处仅显示秒,不显示小数点: 及
起止时间必须是符合此处所述AT风格时间规范的时间规范
:。

那是什么呢?石墨快吗?或者它只是快速处理大型数据集-我们正在寻找一个简单易用的web数据包接收器来直观显示-Graphite似乎是一个伟大的解决方案,但现在我们已经全部配置和运行了,我猜我们只是浪费了很多时间


谢谢

Graphite将在您的storage-schemas.conf中按照最精细的定义精度最多存储一个数据点(接收到的其他数据点将被丢弃)可能的最佳精度为1秒。例如保留时间=1s:6h、1min:7d、10min:5y

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

因此,虽然您不能以小于1秒的粒度报告,但您可以使用聚合器捕获1秒时间间隔内发生的事情的总和和平均值并报告

两种常见的选择是和


**StatsD,国际海事组织是前进的方向。它是一个单独运行并通过UDP发送给它的网络守护程序。也就是说,你可以用carbon aggregator.py做同样的事情(例如UDP)。

我有没有办法改变石墨的一些机制,以获得更高的精度?(想想示波器应用程序)您所说的对很多应用程序来说都是有意义的-但我们正在尝试实时显示平滑的图形信息-1s更新将非常笨拙-我们发送给graphite的数据已经处理过,并且是平均数据否。Graphite-db的设计目的是使存储占用空间保持较低并随时间保持恒定(如)。时间序列数据必须注入定义的时间步(秒、分钟、小时)之一。听起来你可能需要考虑一个不同的工具。