graphing - RRDtool 多个 RRA 有什么用?

标签 graphing rrdtool

我正在尝试实现rrdtool。我已经阅读了各种教程并启动并运行了我的第一个数据库。但是,有一点我不明白。

令我困惑的是为什么我遇到的这么多示例指示我创建多个 RRA?

请允许我解释一下:假设我有一个想要监控的传感器。我最终希望看到每小时、每天、每周和每月的传感器数据图表,以及一个跨越(我对此仍持观望态度)大约 1.5 年的图表(用于可视化季节性影响)。

现在,为什么我要为每个 View 创建 RRA?为什么不直接创建一个这样的数据库(步长=300秒):

DS:sensor:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:160000

如果我理解正确,我就可以在任何给定时间段内以我需要的任何分辨率创建任何我想要的图表。 人们告诉我需要定义的所有其他 RRA 有什么用?

顺便说一句:我可以想象,在过去,当计算能力更加稀有时,这会很有帮助。如今,有了快速磁盘、高速接口(interface)和强大的 CPU,我想您不需要 RRA 似乎专为的那种预处理。

编辑: 我知道this page 。虽然它非常清楚地解释了合并,但据我了解,rrdtool graph 也可以在数据绘制图形时进行合并。 (对我来说)“收获期整合”似乎仍然没有附加值。

最佳答案

每个 RRA 都是具有特定分辨率的预先合并的数据点集。这执行两个重要的功能。

首先,它节省磁盘空间。因此,如果您对过去 24 小时的高细节图表感兴趣,但只对去年的低细节图表感兴趣,那么您不需要保留一整年的高细节数据 - 合并数据就足够了。通过这种方式,您可以最大限度地减少保存图形生成数据所需的存储量(当然,您会丢失详细信息,因此如果您想要访问它就无法访问它)。是的,磁盘很便宜,但如果您有很多指标并且长期保存低分辨率数据,这可能是一个惊人的大空间(在我们的例子中,它将达到数百 GB)

其次,这意味着整合工作从制图时间转移到了更新时间。 RRDTool 生成图形的速度非常快,因为如果存在所需配置的 RRA,则大部分计算工作在更新时已在 RRA 中完成。如果没有正确分辨率的 RRA,则 RRDtool 将从高粒度 RRA 中动态执行整合,但这需要时间和 CPU。 RRDTool 图表通常由 CGI 脚本动态生成,因此这一点很重要,特别是当您预计会有大量查询进入时。在您的示例中,使用单个 5 分钟 RRA 制作 1.5 年图表(其中 1 像素将大约 1 天)与使用 1 天粒度的 RRA 相比,您需要读取和处理多 288 倍的数据才能生成图表!

简而言之,是的,您可以有一个 RRA,让绘图工作更加努力。如果您的特定实现需要更快的更新并且不关心较慢的图形生成,并且您需要始终保留详细数据,那么也许这对您来说是一个解决方案,RRDTool 可以以这种方式使用。然而,通常情况下,人们会针对图形生成和磁盘空间进行优化,这意味着使用粒度递减的分层 RRA 集。

关于graphing - RRDtool 多个 RRA 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280352/

相关文章:

bash - 脚本和rrdtool

r - 绘制动画交换(绘制方向边缘)

centos - 在 centos 7 中安装 Ganglia 失败(rrd create in -rrd ... no)

linux - 解释一下 MRTG 如何测量传入数据的不同之处

java - rrdtool 的替代品?

从c文件调用rrd_create

javascript - Plotly JS 折线图有非常奇怪的线条

python - Python 3.4 中的函数绘图器显示 'float is not interpreted as an integer' ?

iOS CorePlot 点转换

javascript - 如何向浮点图中添加一个新的单点?