如何使用 RRDTool 为未知数据设置 100% TICK 或 VRULE
How to put a 100% TICK or VRULE for unknown data with RRDTool
我正在使用 RRDTool 在各种图表上绘制大量数据,偶尔会得到未知的数据点,这完全是预料之中的,尤其是在更新 RRD 的计算机处于离线状态时。
这很酷,但是,当发生这种情况时,我希望有一条漂亮的大红线(对于每个未知数,这样它让图表的查看者非常清楚这些点的值不是 0
, 但实际上 UNKNOWN
.
我有:
我想要的(Photoshop):
是否有 easy/elegant 方法来完成此操作?
优雅的方法是检查负载是否包含任何合理的值。如果不是,则将 1 添加到您为此目的创建的 DS。
因此,对于 Robin 数据库,添加值为 0 或 1 的新 DS
DS:somestatus1:GAUGE:600:U:U
如果您的主要 DS 不可用,然后开始向此 DS 添加 0 或 1
最后画图:
DEF:somestatus1=$RRD_FILE:somestatus1:AVERAGE \
CDEF:my_status_cdef=somestatus1,1,0,IF \
TICK:my_status_cdef#e0ffe0:1.0:"Device was ON\n" \
每个 TICK 都会根据需要在图表上绘制 100% 高度的垂直条
另一个选项是创建条件 CDEF,如果主 DS 是 none,它将创建 TICK。
这是有效的方法:
我将 CDEF
与现有数据源 (DS) 结合使用,而不必创建新的 DS。
我在我的 RRDTool Graph 部分添加了以下两行
'CDEF:up=a1,0,*,0,EQ,0,1,IF' \
'TICK:up#DB0865:1.0' \
CDEF
计算:
a1 * 0
然后将结果与 0 进行比较。如果它们相等,则将 "up" 设置为“0”,否则将 "up" 设置为“1”。
唯一不相等的情况是 "a1" 未知。
因此,当图表中存在间隙(无数据)时,它将具有深 purple/pink 颜色的 100% 垂直条 (TICK) (#DB0865
)
尽管 RRDTool site 上的文档表明可以将 DS 添加到现有 RRD,但实际上不能(根据 Tobi Oetiker 的说法)。所以我采用了上述方法,以避免在使用新 DS 创建新 rrd 时丢失我已经拥有的 rrd 中的所有数据。
这是一个外观示例:
此方法在“离线”时绘制一个区域。 CDEF
检查 load
测量值是否为 UN
(未知),如果是,它将 return 1
,乘以 INF
为使其达到绘图的最高值。
CDEF:offline=load,UN,INF,* \
AREA:offline#FF000011: \
我正在使用 RRDTool 在各种图表上绘制大量数据,偶尔会得到未知的数据点,这完全是预料之中的,尤其是在更新 RRD 的计算机处于离线状态时。
这很酷,但是,当发生这种情况时,我希望有一条漂亮的大红线(对于每个未知数,这样它让图表的查看者非常清楚这些点的值不是 0
, 但实际上 UNKNOWN
.
我有:
我想要的(Photoshop):
是否有 easy/elegant 方法来完成此操作?
优雅的方法是检查负载是否包含任何合理的值。如果不是,则将 1 添加到您为此目的创建的 DS。
因此,对于 Robin 数据库,添加值为 0 或 1 的新 DS
DS:somestatus1:GAUGE:600:U:U
如果您的主要 DS 不可用,然后开始向此 DS 添加 0 或 1
最后画图:
DEF:somestatus1=$RRD_FILE:somestatus1:AVERAGE \
CDEF:my_status_cdef=somestatus1,1,0,IF \
TICK:my_status_cdef#e0ffe0:1.0:"Device was ON\n" \
每个 TICK 都会根据需要在图表上绘制 100% 高度的垂直条
另一个选项是创建条件 CDEF,如果主 DS 是 none,它将创建 TICK。
这是有效的方法:
我将 CDEF
与现有数据源 (DS) 结合使用,而不必创建新的 DS。
我在我的 RRDTool Graph 部分添加了以下两行
'CDEF:up=a1,0,*,0,EQ,0,1,IF' \
'TICK:up#DB0865:1.0' \
CDEF
计算:
a1 * 0
然后将结果与 0 进行比较。如果它们相等,则将 "up" 设置为“0”,否则将 "up" 设置为“1”。
唯一不相等的情况是 "a1" 未知。
因此,当图表中存在间隙(无数据)时,它将具有深 purple/pink 颜色的 100% 垂直条 (TICK) (#DB0865
)
尽管 RRDTool site 上的文档表明可以将 DS 添加到现有 RRD,但实际上不能(根据 Tobi Oetiker 的说法)。所以我采用了上述方法,以避免在使用新 DS 创建新 rrd 时丢失我已经拥有的 rrd 中的所有数据。
这是一个外观示例:
此方法在“离线”时绘制一个区域。 CDEF
检查 load
测量值是否为 UN
(未知),如果是,它将 return 1
,乘以 INF
为使其达到绘图的最高值。
CDEF:offline=load,UN,INF,* \
AREA:offline#FF000011: \