我认为您无法完全按照自己的意愿行事,但您有几个选择。
您可以定义一个滑动窗口平均值,它显示前一小时未知的百分比,并使用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 小时滑动窗口平均值,这实际上是前一小时服务器可用的时间百分比。
然而,如果图表中有很多数据点指向一个像素,RRDTool 会在你拿到源数据之前默默地汇总数据(这不会发生)如果做fetch 当然)。为了解决这个问题,您需要在存储时完成offline CDEF -- 即,根据avg DS 是否已知,有一个COMPUTE 类型的 DS 为 100 或 0。然后,任何平均都会保留数据(正常平均会忽略未知数,或者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 小时的阶梯图中显示您的数据。