Flanking Knight
Flanking Knight

Reputation: 19

Adding values from multiple .rrd file

Problem =====> Basically there are three .rrd which are generated for three departments. From that we fetch three values (MIN, MAX, CURRENT) and print ins 3x3 format. There is a python script which does that.

eg -

Dept1: Min=10 Max=20 Cur=15

Dept2: Min=0 Max=10 Cur=5

Dept3: Min=10 Max=30 Cur=25

Now I want to add the values together (Min, Max, Cur) and print in one line.

eg -

Dept: Min=20 Max=60 Cur=45

Issue I am facing =====> No matter what CDEF i write, I am breaking the graph. :( This is the part I hate as i do not get any error message.

As far as I understand(please correct me if i am wrong) I definitely cannot store the value anywhere in my program as a graph is returned. What would be a proper way to add the values in this condition.

Please let me know if my describing the problem is lacking more detail.

Upvotes: 0

Views: 513

Answers (1)

Steve Shipway
Steve Shipway

Reputation: 4072

You can do this with a VDEF over a CDEF'd sum.

DEF:a=dept1.rrd:ds0:AVERAGE
DEF:b=dept2.rrd:ds0:AVERAGE
DEF:maxa=dept1.rrd:ds0:MAXIMUM
DEF:maxb=dept2.rrd:ds0:MAXIMUM
CDEF:maxall=maxa,maxb,+
CDEF:all=a,b,+
VDEF:maxalltime=maxall,MAXIMUM
VDEF:alltimeavg=all,AVERAGE
PRINT:maxalltime:Max=%f
PRINT:alltimeavg:Avg=%f
LINE:all#ff0000:AllDepartments

However, you should note that, apart form at the highest granularity, the Min and Max totals will be wrong! This is because max(a+b) != max(a) + max(b). If you dont calculate the min/max aggregate at time of storage, the granularity will be gone at time of display.

For example, if a = (1, 2, 3) and b = (3, 2, 1), then max(a) + max(b) = 6; however the maximum at any point in time is in fact 4. The same issue applies to using min(a) + min(b).

Upvotes: 0

Related Questions