RRD 图 - 按值更改线条颜色

RRD Graph - Change line colour by value

我有一个包含数据的 RRD 数据库:

    "DS:pkts_transmitted:GAUGE:120:0:U",
    "DS:pkts_received:GAUGE:120:0:U",
    "DS:pkts_lost:GAUGE:120:0:U",
    "DS:rtt_min:GAUGE:120:0:U",
    "DS:rtt_avg:GAUGE:120:0:U",
    "DS:rtt_max:GAUGE:120:0:U",

如果我丢失任何包裹,我希望 Avg 线改变颜色。

例如,如果我丢失了 5 个数据包,则线路变为蓝色,如果我丢失 10 个,则线路变为红色。

我看到有人这样做,但我阅读了文档但找不到如何执行此操作。

实现这一点的方法是实际定义多条线(每种颜色各一条)并使用计算隐藏您不想随时看到的线。

例如,假设我们有一个带有两个 DS 的 RRD:

DS:x:GAUGE:60:0:U
DS:y:GAUGE:60:0:1

现在,如果 y 为 0,我们要将 x 的行显示为红色,如果为 1,则显示为蓝色。为此,我们创建两个计算值,x1x2.

CDEF:x1=y,0,EQ,x,UNKN,IF
CDEF:x2=y,1,EQ,x,UNKN,IF

因此,如果 y=0x1 有效,如果 y=1x2 有效。是的,这可以简化,但我在示例中是这样显示的。

现在,我们可以使用这些来制作线条:

LINE:x1#ff0000:MyLine
LINE:x2#0000ff

请注意,第二行不需要图例。现在,该行将根据 y 指标的值改变颜色,因为在任何时候另一行将是 UNKN,因此不会显示。

当然,您可以扩展它,使其具有多种颜色和更复杂的阈值。