如何使用RRDTool

时间:2016-12-15 08:10:59

标签: rrdtool

我使用RRDTool在各种图表上绘制了大量数据,偶尔会得到未知数据点,特别是如果更新RRD的计算机处于脱机状态,这是完全可以预料到的。

很酷,但是,当发生这种情况时,我希望有一条漂亮的大红线(对于每一个未知的,所以它让图形的观众非常清楚这些点的价值不是0,而是UNKNOWN

我拥有的: RRDTool Graph showing Load Average

我想要的(Photoshop): enter image description here

有没有简单/优雅的方法来实现这一目标?

3 个答案:

答案 0 :(得分:1)

优雅的方法是检查加载是否包含任何合理的值。如果没有为您为此目的创建的DS添加1。

因此,对于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为无,则创建TICK。

答案 1 :(得分:1)

这是有效的:

我将CDEF与现有数据源(DS)一起使用,而不必创建新的DS。

我在RRDTool图表部分添加了以下两行

'CDEF:up=a1,0,*,0,EQ,0,1,IF' \
'TICK:up#DB0865:1.0'         \

CDEF计算:

a1 * 0

然后将其结果与0进行比较。如果它们相等,则将“up”设置为“0”,否则将“up”设置为“1”。

他们不平等的唯一时间是,如果“a1”未知。

因此,当图表中存在间隙(无数据)时,它将具有深紫色/粉红色(#DB0865)的100%垂直条(TICK)

尽管RRDTool site上的文档表明DS可以添加到现有的RRD中,但它实际上不能(根据Tobi Oetiker的说法)。所以我使用上面的方法来避免丢失我在使用新DS创建新rrd时已经拥有的所有数据。

以下是它的外观示例: RRD Graph showing unknown data highlighted

答案 2 :(得分:0)

此方法在“离线”时绘制区域。 .TagWith(GetCallerName()) 检查public static string GetCallerName([CallerMemberName] string caller = null) { return caller; } 度量值是否为CDEF(未知),如果为load,则返回UN,乘以1以得出最高的图。

INF