如何在 rrdtool 图中按时间段聚合数据
How to aggregate data by period in a rrdtool graph
我有一个 rrd 文件,其中包含每分钟到服务器的平均 ping 次数 (GAUGE),并且当服务器离线时(出于现在无关紧要的原因,这种情况非常频繁)它会存储一个 NaN/unknown .
我想创建一个图表,其中包含服务器每小时离线的百分比,我认为可以通过计算 60 个样本内的每个 NaN 然后除以 60 来实现。
现在我要定义一个变量,该变量在服务器离线时为 1,否则为 0,但我已经阅读了文档,但不知道如何汇总:
DEF:avg=server.rrd:rtt:AVERAGE CDEF:offline=avg,UN,1,0,IF
创建图表时可以这样做吗?或者我必须将该信息存储在另一个 rrd 中?
我认为您无法完全按照自己的意愿行事,但您有几个选择。
您可以定义一个滑动window平均值,显示前一小时未知的百分比,并使用TRENDNAN
绘制图表。
DEF:avg=server.rrd:rtt:AVERAGE:step=60
CDEF:offline=avg,UN,100,0,IF
CDEF:pcavail=offline,3600,TREND
LINE:pcavail#ff0000:Availability
这里定义avg
为ping数据的1分钟时间序列。请注意,我们使用 step=60
来确保即使在较小的图形中也能获得最佳的数据分辨率。然后我们定义 offline
当服务器存在时为 100,当服务器不存在时为 0。然后,pcavail
是 1 小时的滑动 window 平均值,这实际上是前一小时服务器可用的时间百分比。
但是,有一个问题是 RRDTool 会在你动手之前默默地总结源数据,如果图中的一个像素有很多数据点(当然,如果执行 fetch
就不会发生这种情况)。要解决这个问题,您需要在存储时完成 offline
CDEF——IE,有一个 COMPUTE
类型的 DS,它是 100 或 0,具体取决于 avg
DS众所周知。然后,任何平均都将保留数据(正常平均会忽略未知数,或者 xff
设置使整个 cdp
未知)。
rrdtool create ...
DS:rtt:GAUGE:120:0:9999
DS:offline:COMPUTE:rtt,UN,100,0,IF
rrdtool graph ...
DEF:offline=server.rrd:offline:AVERAGE:step=3600
LINE:offline#ff0000:Availability
如果您能够修改 RRD,并且不需要历史数据,那么以这种方式使用 COMPUTE 将允许您根据需要在 1 小时的阶梯图中显示数据。
我有一个 rrd 文件,其中包含每分钟到服务器的平均 ping 次数 (GAUGE),并且当服务器离线时(出于现在无关紧要的原因,这种情况非常频繁)它会存储一个 NaN/unknown .
我想创建一个图表,其中包含服务器每小时离线的百分比,我认为可以通过计算 60 个样本内的每个 NaN 然后除以 60 来实现。
现在我要定义一个变量,该变量在服务器离线时为 1,否则为 0,但我已经阅读了文档,但不知道如何汇总:
DEF:avg=server.rrd:rtt:AVERAGE CDEF:offline=avg,UN,1,0,IF
创建图表时可以这样做吗?或者我必须将该信息存储在另一个 rrd 中?
我认为您无法完全按照自己的意愿行事,但您有几个选择。
您可以定义一个滑动window平均值,显示前一小时未知的百分比,并使用TRENDNAN
绘制图表。
DEF:avg=server.rrd:rtt:AVERAGE:step=60
CDEF:offline=avg,UN,100,0,IF
CDEF:pcavail=offline,3600,TREND
LINE:pcavail#ff0000:Availability
这里定义avg
为ping数据的1分钟时间序列。请注意,我们使用 step=60
来确保即使在较小的图形中也能获得最佳的数据分辨率。然后我们定义 offline
当服务器存在时为 100,当服务器不存在时为 0。然后,pcavail
是 1 小时的滑动 window 平均值,这实际上是前一小时服务器可用的时间百分比。
但是,有一个问题是 RRDTool 会在你动手之前默默地总结源数据,如果图中的一个像素有很多数据点(当然,如果执行 fetch
就不会发生这种情况)。要解决这个问题,您需要在存储时完成 offline
CDEF——IE,有一个 COMPUTE
类型的 DS,它是 100 或 0,具体取决于 avg
DS众所周知。然后,任何平均都将保留数据(正常平均会忽略未知数,或者 xff
设置使整个 cdp
未知)。
rrdtool create ...
DS:rtt:GAUGE:120:0:9999
DS:offline:COMPUTE:rtt,UN,100,0,IF
rrdtool graph ...
DEF:offline=server.rrd:offline:AVERAGE:step=3600
LINE:offline#ff0000:Availability
如果您能够修改 RRD,并且不需要历史数据,那么以这种方式使用 COMPUTE 将允许您根据需要在 1 小时的阶梯图中显示数据。