[rrd-users] Stacking at Infinity

Martin Sperl rrdtool at martin.sperl.org
Mon Mar 5 08:13:38 CET 2012


Hi Chris!

What you are requesting is currently not possible - at least not easily.
The only thing I can offer you as am option is this "red/green" approach - which is not 100% what you want.

As for using the cdef as fraction - I did not say that it may work for you fully, but it may come close if used in this manner

CDEF:C1=Class1Drops,0,GT,-0.01,0,IF
CDEF:C2=Class2Drops,0,GT,-0.01,0,IF
CDEF:C3=Class3Drops,0,GT,-0.01,0,IF
CDEF:C4=Class4Drops,0,GT,-0.01,0,IF

CDEF:C12=c1,c2,+
CDEF:C123=c12,c3,+
CDEF:C1234=c123,c4,+

TICK:C1234#DDDDDD:vname:yourlabel
TICK:C123#CCCCCC:vname:yourlabel
TICK:C12#BBBBBB:vname:yourlabel
TICK:C1#AAAAAA:vname:yourlabel

this should essentially produce the result of manual "stacking" of ticks...

Ciao,
	Martin


On 04.03.2012, at 22:12, Chris Mason wrote:

> Hi Martin,
> 
> Thank you for taking your time to respond.
> 
> To ensure I understand this correctly, this will print a TICK on the
> graph for each DS. It will either be RED or GREEN depending
> on the value of the DS?
> 
> The problem I have is I am graphing classes for QoS with a different
> number of classes per graph. I would prefer it to only show TICKs if I
> have drops within that class and I would like the TICK to be the same
> colour as the Octets for that class.
> 
> E.g:
> 
> Class1Drops = 0
> Class2Drops = 100
> Class3Drops = 0
> Class4Drops = 57
> 
> I have also defined ClassXOctets for each respective class which is
> coloured according to an algorithm. If I detect drops in any of the
> classes then I draw the background red using INF/NEGINF. However, to
> identify the specific classes I wanted to draw a TICK using the colour
> of that class.
> 
> The above scenario would result in 3 TICKs being printed on the graph
> using the respective colour of that class. I suppose it would be nice
> to have TICK stacking where I could append '::STACK' to the end of
> sequential TICKs.
> 
> In the event of using a CDEF for the fraction value I am still
> struggling to work out how to achieve the desired result because I
> would have to start with the highest fraction value. I am not sure if
> the following would work:
> 
> CDEF:BASE1=0,-0.1,+
> CDEF:C1F=Class1Drops,0,GT,BASE1,0,IF
> 
> CDEF:BASE2=Class1Drops,0,GT,BASE1,-0.01,+,BASE1,IF
> CDEF:C2F=Class2Drops,0,GT,BASE2,0,IF
> 
> CDEF:BASE3=Class2Drops,0,GT,BASE2,-0.01,+,BASE2,IF
> CDEF:C3F=Class3Drops,0,GT,BASE3,0,IF
> 
> CDEF:BASE4=Class3Drops,0,GT,BASE3,-0.01,+,BASE3,IF
> CDEF:C4F=Class4Drops,0,GT,BASE4,0,IF
> 
> TICK:Class4Drops#AAAAA:C4F
> TICK:Class3Drops#BBBBB:C3F
> TICK:Class2Drops#CCCCC:C2F
> TICK:Class1Drops#DDDDD:C1F
> 
> Thanks,
> Chris
> 
> On 4 March 2012 12:52, Martin Sperl <rrdtool at martin.sperl.org> wrote:
>> OK, so assuming those 3:
>> Here a "Red/green" colorcoding you could also use:
>> CDEF:DS1GREEN=DS1,UN,0,1,IF
>> CDEF:DS1RED=DS1,UN,1,0,IF
>> CDEF:DS2GREEN=DS2,UN,0,1,IF
>> CDEF:DS2RED=DS2,UN,1,0,IF
>> CDEF:DS3GREEN=DS3,UN,0,1,IF
>> CDEF:DS3RED=DS3,UN,1,0,IF
>> TICK:DS1GREEN#00ff00:-.03
>> TICK:DS1RED#ff0000:-.03
>> TICK:DS2GREEN#00ff00:-.02
>> TICK:DS2RED#ff0000:-.02
>> TICK:DS3GREEN#00ff00:-.01
>> TICK:DS3RED#ff0000:-.01
>> # here graph the other stuff (on top of the ticks!)
>> 
>> Then you would get 3 stripes that are green/red in the relevant sections of the DS being undefined
>> 
>> If you want even "bars" separating those 3 sections:
>> add the following:
>> CDEF:bar=1
>>        TICK:DS1GREEN#00ff00:-.03
>>        TICK:DS1RED#ff0000:-.03
>> TICK:bar#000000:-0.21
>>        TICK:DS2GREEN#00ff00:-.02
>>        TICK:DS2RED#ff0000:-.02
>> TICK:bar#000000:-0.11
>>        TICK:DS3GREEN#00ff00:-.01
>>        TICK:DS3RED#ff0000:-.01
>> 
>> that should show bars all the length of the graph with green/red in between
>> 
>> I also have sent a patch to Tobi to allow TICK to use the values of the DEF/CDEF itself as the fraction - so this could mean a non-constant fraction...
>> This may also be helpful in some usecases to present data...
>> 
>> Ciao,
>>        Martin
>> 
>> On 03.03.2012, at 13:44, Chris Mason wrote:
>> 
>>> Hi,
>>> 
>>>> One line at the top (or bottom) of the graph, then stack a suffient amount
>>>> in the "wrong" direction. I never tried it, but stacking -50M "on top" of
>>>> 150M should get you at 100M.
>>> 
>>> So this works normally when not working at infinity:
>>> 
>>> LINE3:1000000#FF0000
>>> LINE3:-10000#00FF00::STACK
>>> 
>>> I assumed the LINE would take into consideration the lines width when
>>> stacking so I could use -1 as the value. This doesn't seem to work and
>>> I have to use an actual value but this value would be dependant on the
>>> scale of the data.
>>> 
>>> However, when I draw the first line at INF then it doesn't seem to
>>> work and have looked into the possibility of achieving the desired
>>> affect using TICKs as suggested by Martin:
>>> 
>>>> I remember that I have done so to highlight times when we have exceeded predictions.
>>>> You could obviously paint multiple TICKS for different types and paint them with different colors using transparency.
>>>> As the color (de)coding may be a pain you possibly could draw multiple ticks of different fractions.
>>> 
>>> This looks promising and I have used the following to get my desired affect:
>>> 
>>> AREA:ifOutDropsH#FF000055
>>> TICK:DS3#0000FF:-0.03
>>> TICK:DS2#FF0000:-0.02
>>> TICK:DS1#00FF00:-0.01
>>> 
>>> ** ifOutDrops is INF or NEGINF if drops detected.
>>> 
>>> This is so close to what I want to achieve, where each TICK is 1% of
>>> the Y axis. To get a stacking affect I am overlapping TICKs with the
>>> bottom one being slightly taller than the next one.
>>> 
>>> Now, this works if all classes have drops in, but in most cases they
>>> don't and it is only a single class which has drops. If it was DS3 and
>>> DS1 then the DS3 TICK would be visibly 2% tall as opposed to 1%.
>>> 
>>> Is it possible to calculate the fraction dynamically depending if I
>>> have drops in the classes or is there an alternative approach?
>>> 
>>> Thanks,
>>> Chris
>> 



More information about the rrd-users mailing list