rrdtool

How to put a 100% TICK or VRULE for unknown data with RRDTool


I'm plotting a number of data on various graphs using RRDTool, occasionally I get unknown data points, this is totally expected especially if the computer updating the RRDs is offline.

That's cool, however, when this happens, I want there to be a nice big red line (for each and every unkonwn so it makes the graph's viewer very aware that the value at those points is not 0, but actually UNKNOWN.

What I have: RRDTool Graph showing Load Average

What I want (Photoshopped): enter image description here

Is there an easy/elegant way to accomplish this?


Solution

  • Here's what worked:

    I used the CDEF with an existing Data Source (DS) instead of having to create a new DS.

    I added the following 2 lines in my RRDTool Graph section

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

    The CDEF doe the calculation of:

    a1 * 0

    Then compares the the result of that to 0. If they're equal, set "up" to "0" else set "up" to "1".

    The only time that they would not be equal, would be if "a1" was unknown.

    Therefore when there is a gap in the graph (no data), it will have a 100% vertical bar (TICK) of a deep purple/pink colour (#DB0865)

    Even though the documentation on the RRDTool site Indicates that a DS can be added to an existing RRD, it actually cannot be (according to Tobi Oetiker). So I went with the above method to avoid losing all the data in the rrds that I already have when creating a new rrd with a new DS.

    Here's an example of how it looks: RRD Graph showing unknown data highlighted