[rrd-users] find out the current scale (output from autoscaler)

Scott Brumbaugh scottb at prolexic.com
Fri Jan 9 02:45:59 CET 2009

Hi Karl,

Karl Fischer wrote:
> Happy New Year to everyone.
> Is there a way to find out what the current (y) scale is?
> I'm trying to display some values only if they fit the current scale but
> I don't want these values to extend the current scale.
> For example when watching disk usage I'd like to show a line for disk
> capacity when (and only when) disk usage gets near the disk capacity.
> But I don't want the scale to be extended to - lets say 100G - when only
> 1.83 GB is used ...
> So what I've tried so far is:
> CDEF:my_scale=df_used,MAX,1.2,*
> CDEF:my_total=df_total,0,my_scale,LIMIT
> So I'm 'guessing' the current scale is about 20% higher than the highest value.
> But it would be much nicer to get the values from the autoscaler ...
> Any way?
> Thanks
> - Karl

This won't do exactly what you want but has helped us with scaling
issues.  Maybe it will help someone else.

We can use the VDEF and PRINTS functions to get a numeric readout of the
peaks in our timeseries using the rrd_graph function.

We define DEFS as usual,


Then some VDEFS that calculate the maximums,


and use PRINT to get the results,

 PRINT:BytesIn_28_max:curve oid ifHCInOctets iid 28 %.3lf
 PRINT:BytesIn_6_max:curve oid ifHCInOctets iid 6 %.3lf
 PRINT:BytesIn_31_max:curve oid ifHCInOctets iid 31 %.3lf

If we call rrd_graph (perl bindings) like this,

 @max = RRDs::graph('/dev/null', ..., @DEFS, @VDEFS, @PRINTS);

The result @max contains the peak values for all the timeseries,

 curve oid ifHCInOctets iid 28 2195.571
 curve oid ifHCInOctets iid 6 92099111.699
 curve oid ifHCInOctets iid 31 975549.175

We actually run against graphs with 1000's of DEFS.  We can run
processing against the PRINT outputs and identify peaks efficiently.

Scott B

More information about the rrd-users mailing list