微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 rrdtool 图中按时间段聚合数据

如何解决如何在 rrdtool 图中按时间段聚合数据

我有一个 rrd 文件,每分钟平均 ping 到服务器 (GAUGE) 的时间,并且当服务器离线时(由于现在无关紧要的原因非常频繁),它会存储 NaN/未知数。

我想创建一个图表,其中包含服务器每小时离线的百分比,我认为可以通过计算 60 个样本中的每个 NaN 然后除以 60 来实现。

现在,我定义了一个变量,当服务器离线时为 1,否则为 0,但我已经阅读了文档,但不知道如何汇总:

DEF:avg=server.rrd:rtt:AVERAGE CDEF:offline=avg,UN,1,IF

在创建图表时可以这样做吗?或者我必须将该信息存储在另一个 rrd 中?

解决方法

我认为您不能完全按照自己的意愿行事,但您有几个选择。

您可以定义一个滑动窗口平均值,显示前一小时未知的百分比,并使用TRENDNAN绘制该百分比。

DEF:avg=server.rrd:rtt:AVERAGE:step=60
CDEF:offline=avg,UN,100,IF
CDEF:pcavail=offline,3600,TREND
LINE:pcavail#ff0000:Availability

这将 avg 定义为 1 分钟的 ping 数据时间序列。请注意,我们使用 step=60 来确保即使在较小的图形中也能获得最佳数据分辨率。然后我们将 offline 定义为 100 当服务器在时,0 时不存在。然后,pcavail 是此时间的 1 小时滑动窗口平均值,这实际上是前一小时内服务器可用的时间百分比。

然而,有一个问题是,如果图表中的一个像素有很多数据点,RRDTool 会在您动手之前默默地总结源数据(这不会发生)当然,如果执行 fetch)。为了解决这个问题,您需要在商店时间完成 offline CDEF -- 即,有一个 COMPUTE 类型的 DS,它是 100 或 0,具体取决于 avg DS是已知的。然后,任何平均都会保留数据(正常平均会忽略未知数,或者 xff 设置会使整个 cdp 未知)。

rrdtool create ...
DS:rtt:GAUGE:120:0:9999
DS:offline:COMPUTE:rtt,IF

rrdtool graph ...
DEF:offline=server.rrd:offline:AVERAGE:step=3600
LINE:offline#ff0000:Availability

如果您能够修改您的 RRD,并且不需要历史数据,那么以这种方式使用 COMPUTE 将允许您根据需要在 1 小时阶梯图中显示您的数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。