Lets start from the end. Since you have two RRA statement, and the step
is one, you can drop the RRA:MAX... you could in fact drop the RRA max
since it is redundant, you max value in a data set of one record will
always be the same as the average (value/1). 

But looking back at your previous posts I think that the problem of
different max values as you zoom out will be exacerbated by only having
one RRA data set to work with. I believe that you are interested in
displaying the high water mark for a given period. However, because you
only have one data set recorded, you will end up watering down your
values. 

Say you are displaying two weeks worth of data that is recorded at your
1 minute interval. Your graph is 700 pixels wide, so you have 50 pixels
to display 1440 maximum values recorded for each day. RRD is going to
have to display the average of every 28 maximum values to represent in
each column of pixels. You would be much better off using several RRA
definitions to reduce the amount of averaging that is occurring.
Ideally, you would want 1 data point for each pixel, to get the best
resolution.  

Since what matters to you is getting your Zenoss graphs to display the
same as your cacti graphs, I would analyze the cacti RRD files and build
your Zenoss definition to match. Use the "rrdtool info rrdfilename" on
your cacti rrd databases to analyze them. 

For example, here is a commented mrtg rrd file:

[EMAIL PROTECTED] ]# rrdtool info 10.100.1.1.rrd
filename = "10.100.1.1.rrd"
rrd_version = "0003"
step = 300              (recording data every 5 minutes, same as Zenoss)
last_update = 1127995300
ds[ds0].type = "GAUGE"          (1st data point definition in zenoss) 
ds[ds0].minimal_heartbeat = 600
ds[ds0].min = 0.0000000000e+00     (datapoint minimum = 0)
ds[ds0].max = 1.0000000000e+02     (datapoint maximum = 100)
ds[ds0].last_ds = "UNKN"
ds[ds0].value = 0.0000000000e+00
ds[ds0].unknown_sec = 100
ds[ds1].type = "GAUGE"          (2nd data point definiton in zenoss)
ds[ds1].minimal_heartbeat = 600
ds[ds1].min = 0.0000000000e+00     (datapoint minimum = 0)
ds[ds1].max = 1.0000000000e+02     (datapoint maximum = 100)
ds[ds1].last_ds = "UNKN"
ds[ds1].value = 0.0000000000e+00
ds[ds1].unknown_sec = 100
rra[0].cf = "AVERAGE"              (first RRA is Average)
rra[0].rows = 800                  (800 rows = 2.67 days)
rra[0].pdp_per_row = 1             (steps = 1 = 5 minutes)
rra[0].xff = 5.0000000000e-01      (xff=.5)
rra[0].cdp_prep[0].value = NaN
rra[0].cdp_prep[0].unknown_datapoints = 0
rra[0].cdp_prep[1].value = NaN
rra[0].cdp_prep[1].unknown_datapoints = 0
rra[1].cf = "AVERAGE"              (2nd RRA is Average)
rra[1].rows = 800                  (800 rows = 16.67 days)
rra[1].pdp_per_row = 6             (steps = 6 = 30 minutes)
rra[1].xff = 5.0000000000e-01      (xff=.5)
rra[1].cdp_prep[0].value = NaN
rra[1].cdp_prep[0].unknown_datapoints = 0
rra[1].cdp_prep[1].value = NaN
rra[1].cdp_prep[1].unknown_datapoints = 0
rra[2].cf = "AVERAGE"              (3rd RRA is Average)
rra[2].rows = 800
rra[2].pdp_per_row = 24
rra[2].xff = 5.0000000000e-01
rra[2].cdp_prep[0].value = NaN
rra[2].cdp_prep[0].unknown_datapoints = 0
rra[2].cdp_prep[1].value = NaN
rra[2].cdp_prep[1].unknown_datapoints = 0
rra[3].cf = "AVERAGE"              (4th RRA is Average)
rra[3].rows = 800
rra[3].pdp_per_row = 288
rra[3].xff = 5.0000000000e-01
rra[3].cdp_prep[0].value = NaN
rra[3].cdp_prep[0].unknown_datapoints = 144
rra[3].cdp_prep[1].value = NaN
rra[3].cdp_prep[1].unknown_datapoints = 144
rra[4].cf = "MAX"                  (first MAX RRA)
rra[4].rows = 800                  (800 rows = 2.67 days)
rra[4].pdp_per_row = 1             (steps = 1 = 5 minutes)
rra[4].xff = 5.0000000000e-01      (xff=.5)
rra[4].cdp_prep[0].value = NaN
rra[4].cdp_prep[0].unknown_datapoints = 0
rra[4].cdp_prep[1].value = NaN
rra[4].cdp_prep[1].unknown_datapoints = 0
rra[5].cf = "MAX"                  (2nd MAX RRA)
rra[5].rows = 800
rra[5].pdp_per_row = 6
rra[5].xff = 5.0000000000e-01
rra[5].cdp_prep[0].value = NaN
rra[5].cdp_prep[0].unknown_datapoints = 0
rra[5].cdp_prep[1].value = NaN
rra[5].cdp_prep[1].unknown_datapoints = 0
rra[6].cf = "MAX"                  (3rd MAX RRA)
rra[6].rows = 800
rra[6].pdp_per_row = 24
rra[6].xff = 5.0000000000e-01
rra[6].cdp_prep[0].value = NaN
rra[6].cdp_prep[0].unknown_datapoints = 0
rra[6].cdp_prep[1].value = NaN
rra[6].cdp_prep[1].unknown_datapoints = 0
rra[7].cf = "MAX"                  (4th MAX RRA)
rra[7].rows = 800
rra[7].pdp_per_row = 288
rra[7].xff = 5.0000000000e-01
rra[7].cdp_prep[0].value = NaN
rra[7].cdp_prep[0].unknown_datapoints = 144
rra[7].cdp_prep[1].value = NaN
rra[7].cdp_prep[1].unknown_datapoints = 144

Here MRTG is storing the Incomong packets and Outgoing packets in the
same RRD file. Zenoss uses separate RRD files. So my MRTG definition is
using 8 RRA definitions, so I would use the following statements to
create the same RRD in Zenoss.

Syntax: 
RRA:AVERAGE | MIN | MAX | LAST:xff:steps:rows

RRA:AVERAGE:.5:1:800
RRA:AVERAGE:.5:6:800
RRA:AVERAGE:.5:24:800
RRA:AVERAGE:.5:288:800
RRA:MAX:.5:1:800
RRA:MAX:.5:6:800
RRA:MAX:.5:24:800
RRA:MAX:.5:288:800

Looking at your graph statement below, there are a few things that stand
out.

> --rigid \
> --base=1000 \
> --height=150 \
> --width=700 \
The only way I know to get Zenoss to execute rigid is to set the minimum
and maximum values to display in your graph. You may get some values
that overlap, but you can modify the perfconf to increase it as needed.

> DEF:a="/var/www/cacti/rra/foo_traffic_in_224.rrd":traffic_in:MAX \
> DEF:b="/var/www/cacti/rra/foo_traffic_in_224.rrd":traffic_out:MAX \
> CDEF:cdefa=a,8,* \
> CDEF:cdefe=b,8,* \
Your DEF commands are going to come from selecting the data sources in your 
graph config.
Zenoss normally stores the converted value in the RRD, by defining it in
the data point. So MRTG converts on the way out, while Zenoss converts
on the way in. I would instead use the VDEF statements to choose the MAX
value instead of the AVERAGE.

VDEF:datasource_datapoint_maximum=datasource_datapoint,MAXIMUM


> GPRINT:cdefa:LAST:" Current\:%8.2lf %s"  \
> GPRINT:cdefa:AVERAGE:"Average\:%8.2lf %s"  \
> GPRINT:cdefa:MAX:"Maximum\:%8.2lf %s\n"  \

MRTG is recording data at %8.2lf %s instead of %5.2lf %s like zenoss. So there 
is a bit more precision in the MRTG data. This can be adjusted in the data 
point definition.


On Fri, 2007-07-13 at 14:00 +0000, Sator81 wrote:
> Thank you for a thorough reply.
> 
> Regarding the HRULE, it does not address my needs since I woud have to 
> redesign the graph for each and every hos. Since I am monitoring WAN links 
> from 128Kb frame-relay to Gb.
> 
> But I am stil puzzeld from what I have made Cacti do that Zenoss doesnt.
> So I ran a debug on the rrdtool graph command wich shows:
> 
> /usr/bin/rrdtool graph - \
> --imgformat=PNG \
> --start=1181739864 \
> --end=1184331864 \
> --title="Foo - Traffic - Gi0/1" \
> --rigid \
> --base=1000 \
> --height=150 \
> --width=700 \
> --alt-autoscale-max \
> --lower-limit=0 \
> COMMENT:"From 2007/06/13 15\:04\:24 To 2007/07/13 15\:04\:24\c" \
> COMMENT:"  \n" \
> --vertical-label="bits per second" \
> --slope-mode \
> DEF:a="/var/www/cacti/rra/foo_traffic_in_224.rrd":traffic_in:MAX \
> DEF:b="/var/www/cacti/rra/foo_traffic_in_224.rrd":traffic_out:MAX \
> CDEF:cdefa=a,8,* \
> CDEF:cdefe=b,8,* \
> AREA:cdefa#00CF00:"Inbound"  \
> GPRINT:cdefa:LAST:" Current\:%8.2lf %s"  \
> GPRINT:cdefa:AVERAGE:"Average\:%8.2lf %s"  \
> GPRINT:cdefa:MAX:"Maximum\:%8.2lf %s\n"  \
> LINE1:cdefe#002A97:"Outbound"  \
> GPRINT:cdefe:LAST:"Current\:%8.2lf %s"  \
> GPRINT:cdefe:AVERAGE:"Average\:%8.2lf %s"  \
> GPRINT:cdefe:MAX:"Maximum\:%8.2lf %s"
> 
> The only difference from the debug output from that graph wich shows max 
> values and average values is the CF in bold. Wich on this debug display the 
> peak values of that port for a month. But i havent been able to find where 
> the scripts grab's the DEF values. But from your writing I dont think that 
> really matters since the data itself seems to be collected to a single data 
> point.
> 
> So It must be something else aswell, couse if I extend the width of the graph 
> so it has more room, the values in Zenoss become higher in the same manner as 
> if I where to zoom inn. So the data I want has been collected, stored and 
> read but not displayed acordingly  :?
> 
> But for future devices you think it will work fine if I remove the 
> "RRA:MAX:0.5:1:525600" since I already have the same data covered in the 
> "RRA:AVERAGE:0.5:1:525600" DS yes?
> 
> 
> Regards
> 
> ------------------------
>  Kai
> 
> 
> 
> 
> -------------------- m2f --------------------
> 
> Read this topic online here:
> http://community.zenoss.com/forums/viewtopic.php?p=8688#8688
> 
> -------------------- m2f --------------------
> 
> 
> 
> _______________________________________________
> zenoss-users mailing list
> [email protected]
> http://lists.zenoss.org/mailman/listinfo/zenoss-users
-- 
James D. Roman
IT Network Administration

Terranet Inc.On contract to:
Science Systems and Applications, Inc.

_______________________________________________
zenoss-users mailing list
[email protected]
http://lists.zenoss.org/mailman/listinfo/zenoss-users

Reply via email to