<br><font size=2 face="Arial">Hi Sam,</font>
<br>
<br><font size=2 face="Arial">thank you for your answer.</font>
<br>
<br><font size=2 face="Arial">Hereunder you'll find the output of rrdinfo.</font>
<br>
<br><font size=2 face="Arial">Concerning your script, yes please send it
to me; I'm planning to write a script that'll automatically export *all*
data from a RRD file into several XML files, each of them having the best
resolution possible within the largest time window possible. So, maybe
your tool will help me in that goal.</font>
<br>
<br><font size=2 face="Arial">Cyrille</font>
<br>
<br><font size=2 face="Arial">[root@srv-fhq-mgt test-rrd]# rrdtool info
10.0.1.254_con.rrd | sort</font>
<br><font size=2 face="Arial">ds[ds0].last_ds = &quot;1495&quot;</font>
<br><font size=2 face="Arial">ds[ds0].max = 1.0000000000e+05</font>
<br><font size=2 face="Arial">ds[ds0].min = 0.0000000000e+00</font>
<br><font size=2 face="Arial">ds[ds0].minimal_heartbeat = 600</font>
<br><font size=2 face="Arial">ds[ds0].type = &quot;GAUGE&quot;</font>
<br><font size=2 face="Arial">ds[ds0].unknown_sec = 0</font>
<br><font size=2 face="Arial">ds[ds0].value = 3.4833500000e+05</font>
<br><font size=2 face="Arial">ds[ds1].last_ds = &quot;1495&quot;</font>
<br><font size=2 face="Arial">ds[ds1].max = 1.0000000000e+05</font>
<br><font size=2 face="Arial">ds[ds1].min = 0.0000000000e+00</font>
<br><font size=2 face="Arial">ds[ds1].minimal_heartbeat = 600</font>
<br><font size=2 face="Arial">ds[ds1].type = &quot;GAUGE&quot;</font>
<br><font size=2 face="Arial">ds[ds1].unknown_sec = 0</font>
<br><font size=2 face="Arial">ds[ds1].value = 3.4833500000e+05</font>
<br><font size=2 face="Arial">filename = &quot;10.0.1.254_con.rrd&quot;</font>
<br><font size=2 face="Arial">last_update = 1219224533</font>
<br><font size=2 face="Arial">rra[0].cdp_prep[0].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[0].cdp_prep[0].value = 1.6240000000e+03</font>
<br><font size=2 face="Arial">rra[0].cdp_prep[1].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[0].cdp_prep[1].value = 1.6240000000e+03</font>
<br><font size=2 face="Arial">rra[0].cf = &quot;AVERAGE&quot;</font>
<br><font size=2 face="Arial">rra[0].pdp_per_row = 1</font>
<br><font size=2 face="Arial">rra[0].rows = 8656</font>
<br><font size=2 face="Arial">rra[0].xff = 5.0000000000e-01</font>
<br><font size=2 face="Arial">rra[1].cdp_prep[0].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[1].cdp_prep[0].value = 1.6780000000e+03</font>
<br><font size=2 face="Arial">rra[1].cdp_prep[1].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[1].cdp_prep[1].value = 1.6780000000e+03</font>
<br><font size=2 face="Arial">rra[1].cf = &quot;AVERAGE&quot;</font>
<br><font size=2 face="Arial">rra[1].pdp_per_row = 3</font>
<br><font size=2 face="Arial">rra[1].rows = 35077</font>
<br><font size=2 face="Arial">rra[1].xff = 5.0000000000e-01</font>
<br><font size=2 face="Arial">rra[2].cdp_prep[0].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[2].cdp_prep[0].value = 1.6260000000e+03</font>
<br><font size=2 face="Arial">rra[2].cdp_prep[1].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[2].cdp_prep[1].value = 1.6260000000e+03</font>
<br><font size=2 face="Arial">rra[2].cf = &quot;AVERAGE&quot;</font>
<br><font size=2 face="Arial">rra[2].pdp_per_row = 12</font>
<br><font size=2 face="Arial">rra[2].rows = 19113</font>
<br><font size=2 face="Arial">rra[2].xff = 5.0000000000e-01</font>
<br><font size=2 face="Arial">rra[3].cdp_prep[0].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[3].cdp_prep[0].value = 1.6240000000e+03</font>
<br><font size=2 face="Arial">rra[3].cdp_prep[1].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[3].cdp_prep[1].value = 1.6240000000e+03</font>
<br><font size=2 face="Arial">rra[3].cf = &quot;MAX&quot;</font>
<br><font size=2 face="Arial">rra[3].pdp_per_row = 1</font>
<br><font size=2 face="Arial">rra[3].rows = 8657</font>
<br><font size=2 face="Arial">rra[3].xff = 5.0000000000e-01</font>
<br><font size=2 face="Arial">rra[4].cdp_prep[0].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[4].cdp_prep[0].value = 1.7870000000e+03</font>
<br><font size=2 face="Arial">rra[4].cdp_prep[1].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[4].cdp_prep[1].value = 1.7870000000e+03</font>
<br><font size=2 face="Arial">rra[4].cf = &quot;MAX&quot;</font>
<br><font size=2 face="Arial">rra[4].pdp_per_row = 3</font>
<br><font size=2 face="Arial">rra[4].rows = 35077</font>
<br><font size=2 face="Arial">rra[4].xff = 5.0000000000e-01</font>
<br><font size=2 face="Arial">rra[5].cdp_prep[0].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[5].cdp_prep[0].value = 1.7870000000e+03</font>
<br><font size=2 face="Arial">rra[5].cdp_prep[1].unknown_datapoints = 0</font>
<br><font size=2 face="Arial">rra[5].cdp_prep[1].value = 1.7870000000e+03</font>
<br><font size=2 face="Arial">rra[5].cf = &quot;MAX&quot;</font>
<br><font size=2 face="Arial">rra[5].pdp_per_row = 12</font>
<br><font size=2 face="Arial">rra[5].rows = 19113</font>
<br><font size=2 face="Arial">rra[5].xff = 5.0000000000e-01</font>
<br><font size=2 face="Arial">rrd_version = &quot;0003&quot;</font>
<br><font size=2 face="Arial">step = 300</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Sam Stickland &lt;sam_mailinglists@spacething.org&gt;</b>
</font>
<p><font size=1 face="sans-serif">20/08/2008 13:04</font>
<td width=59%>
<table width=100%>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">A</font></div>
<td valign=top><font size=1 face="sans-serif">Cyrille Bollu &lt;Cyrille.Bollu@fedasil.be&gt;</font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td valign=top><font size=1 face="sans-serif">rrd-users@lists.oetiker.ch</font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">Objet</font></div>
<td valign=top><font size=1 face="sans-serif">Re: [rrd-users] RE rrdupdate
behaviour when data already exist</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>Hi,<br>
<br>
I have a working script that can replay MRTG style RRD files into <br>
another RRD file (with differing RRA definations). It preserves the <br>
average and max DS's by extrapolating the minimum required data for the
<br>
rrd updates.<br>
<br>
I wrote it for converting MRTG RRD files to Torrus, but it's pretty <br>
general, if a little rough and ready. It uses an RRD file as a template
<br>
to produce a new file containing the MRTG data:<br>
<br>
# ./convert-to-torrus.pl mrtg.rrd template.rrd out.rrd<br>
<br>
If template.rrd file contained data then you can use the merged-rrd.py
<br>
script (in contrib/) to combine it with 'out.rrd'.<br>
<br>
Let me know if you want a copy now - when I have a little more time it
<br>
will be available from the Torrus Wiki.<br>
<br>
In answer to your question about growing the RRA - it depends on how you
<br>
created the file. If you post the output of &quot;rrdtool info my.rrd |
sort&quot; <br>
I can have a look.<br>
<br>
Sam<br>
<br>
Cyrille Bollu wrote:<br>
&gt;<br>
&gt; Alex,<br>
&gt; Other rrdtool gurus,<br>
&gt;<br>
&gt; I gave a try to my modifications and it's working (almost :-) ) great.<br>
&gt;<br>
&gt; However I still have a concern:<br>
&gt;<br>
&gt; The RRA created don't contain the *exact* amount of rows specified;
<br>
&gt; They have 8656 instead of 8640 (1 point per row), 35077 instead of
<br>
&gt; 35040 (3 points per row), and, what's ennoying me, 19113 instead of
<br>
&gt; 43800 (12 points per row). I understand that this is due to the lack
<br>
&gt; of data in the original MRTG log files. But, in the future, I want
to <br>
&gt; use the RRD files created to store data in a RRA with 43800 rows/12
<br>
&gt; point per row.<br>
&gt;<br>
&gt; So my question is: Will subsequent calls to rrdupdate make the 12
<br>
&gt; points/row RRA grow or is it definitivelly limited to 19113 rows?<br>
&gt;<br>
&gt; And, if it is limited, will rrdresize help me?<br>
&gt;<br>
&gt; Side question: Is it possible to add an RRA to a RRD file (using <br>
&gt; rrdtool-1.2)?<br>
&gt;<br>
&gt; Best regards,<br>
&gt;<br>
&gt; Cyrille<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; *Cyrille Bollu/FHQ/USERS/FEDASIL*<br>
&gt;<br>
&gt; 09/07/2008 17:30<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
&gt; A<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Cyrille
Bollu &lt;Cyrille.Bollu@fedasil.be&gt;<br>
&gt; cc<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Alex
van den Bogaerdt &lt;alex@ergens.op.het.net&gt;, <br>
&gt; rrd-users@lists.oetiker.ch, rrd-users-bounces@lists.oetiker.ch<br>
&gt; Objet<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rrdupdate
behaviour when data already exist (was: Tips and thoughts <br>
&gt; on how to optimally import data points from MRTG .log files into new
<br>
&gt; RRD databases)Link <br>
&gt; &lt;Notes://FHQMAIL01/C1256FB30037352A/E8700555BBB69B0380256C3F003DA467/C65863980A382D55C1257481002F23CC&gt;
<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Great Alex,<br>
&gt;<br>
&gt; It was almost as simple as I thought.<br>
&gt;<br>
&gt; For the record, I modified function &quot;log2rrd&quot; in file MRTG_lib.pm
as <br>
&gt; follow:<br>
&gt;<br>
&gt; sub log2rrd ($$$) {<br>
&gt; &nbsp; &nbsp; ...<br>
&gt; &nbsp; &nbsp; my %next;<br>
&gt; &nbsp; &nbsp; my $rrd;<br>
&gt; # CBU 2008.07.09: Change the way MRTG l.log files are converted into
<br>
&gt; RRD databases<br>
&gt; # &nbsp; &nbsp;my @steps = qw(300 1800 7200 86400);<br>
&gt; # &nbsp; &nbsp;my %sizes = ( 300 =&gt; 600, 1800 =&gt; 700, 7200 =&gt;
775, 86400 =&gt; 797);<br>
&gt; &nbsp; &nbsp; my @steps = qw(300 900 3600);<br>
&gt; &nbsp; &nbsp; my %sizes = ( 300 =&gt; 8640, 900 =&gt; 35040, 3600
=&gt; 43800);<br>
&gt; &nbsp; &nbsp; open R, &quot;&lt;$$cfg{logdir}$$rcfg{'directory'}{$router}$router.log&quot;
or<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; die &quot;ERROR: opening <br>
&gt; $$cfg{logdir}$$rcfg{'directory'}{$router}$router.log: $!&quot;;<br>
&gt; &nbsp; &nbsp; debug('rrd',&quot;converting <br>
&gt; $$cfg{logdir}$$rcfg{'directory'}{$router}$router.log&quot;);<br>
&gt; ...<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/ds&gt;<br>
&gt; RRD &nbsp; &nbsp;$first_step{300} = 0; # invalidate<br>
&gt; # CBU 2008.07.09: Change the way MRTG l.log files are converted into
<br>
&gt; RRD databases<br>
&gt; &nbsp; &nbsp; addarch(1,'AVERAGE','in','out',\%store,\%first_step,\$rrd);<br>
&gt; &nbsp; &nbsp; addarch(3,'AVERAGE','in','out',\%store,\%first_step,\$rrd);<br>
&gt; &nbsp; &nbsp; addarch(12,'AVERAGE','in','out',\%store,\%first_step,\$rrd);<br>
&gt; &nbsp; &nbsp; addarch(1,'MAX','maxin','maxout',\%store,\%first_step,\$rrd);<br>
&gt; &nbsp; &nbsp; addarch(3,'MAX','maxin','maxout',\%store,\%first_step,\$rrd);<br>
&gt; &nbsp; &nbsp; addarch(12,'MAX','maxin','maxout',\%store,\%first_step,\$rrd);<br>
&gt; # &nbsp; &nbsp;addarch(1,'AVERAGE','in','out',\%store,\%first_step,\$rrd);<br>
&gt; # &nbsp; &nbsp;addarch(6,'AVERAGE','in','out',\%store,\%first_step,\$rrd);<br>
&gt; # &nbsp; &nbsp;addarch(24,'AVERAGE','in','out',\%store,\%first_step,\$rrd);<br>
&gt; # &nbsp; &nbsp;addarch(288,'AVERAGE','in','out',\%store,\%first_step,\$rrd);<br>
&gt; # &nbsp; &nbsp;addarch(6,'MAX','maxin','maxout',\%store,\%first_step,\$rrd);<br>
&gt; # &nbsp; &nbsp;addarch(24,'MAX','maxin','maxout',\%store,\%first_step,\$rrd);<br>
&gt; # &nbsp; &nbsp;addarch(288,'MAX','maxin','maxout',\%store,\%first_step,\$rrd);<br>
&gt; &nbsp; &nbsp; $rrd .= &lt;&lt;RRD;<br>
&gt; &lt;/rrd&gt;<br>
&gt; RRD<br>
&gt;<br>
&gt; &nbsp; &nbsp; if ( $OS eq 'NT' ) {<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp;open (R, &quot;|$$cfg{rrdtool} restore
- <br>
&gt; $$cfg{logdir}$$rcfg{'directory'}{$router}$router.rrd&quot;);<br>
&gt; ...<br>
&gt; }<br>
&gt;<br>
&gt; Now, I have one additionnal question:<br>
&gt;<br>
&gt; For a few months, we are also collecting data from these sensors via
<br>
&gt; another monitoring system using rrdtools.<br>
&gt;<br>
&gt; So, I would like to import data from this other monitoring system
into <br>
&gt; the .RRD that I will generate from MRTG (ie: using &quot;rrdtools
update&quot;).<br>
&gt;<br>
&gt; But, since there will already be some data, I'm wondering what will
be <br>
&gt; the behaviour of rrdtools in this case (ie: when one inserts values
at <br>
&gt; times when there are already data).<br>
&gt;<br>
&gt; Can you enlighten me?<br>
&gt;<br>
&gt; Best regards,<br>
&gt;<br>
&gt; Cyrille<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; *Cyrille Bollu &lt;Cyrille.Bollu@fedasil.be&gt;*<br>
&gt; Envoyé par : rrd-users-bounces@lists.oetiker.ch<br>
&gt;<br>
&gt; 09/07/2008 10:32<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
&gt; A<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Alex
van den Bogaerdt &lt;alex@ergens.op.het.net&gt;<br>
&gt; cc<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rrd-users@lists.oetiker.ch,
rrd-users-bounces@lists.oetiker.ch<br>
&gt; Objet<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Re:
[rrd-users] Tips and thoughts on how to optimally import data &nbsp; &nbsp;
<br>
&gt; &nbsp; &nbsp;points from MRTG .log files into new RRD databases<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; rrd-users-bounces@lists.oetiker.ch wrote on 09/07/2008 02:25:35:<br>
&gt;<br>
&gt; &gt; &gt; I know that I can convert my MRTG .log file to RRD databases
by <br>
&gt; adding the<br>
&gt; &gt; &gt; &quot;LogFormat: rrdtool&quot; line in MRTG's configuration
files. However, <br>
&gt; the RRA<br>
&gt; &gt; &gt; generated by doing this don't satisfy me.<br>
&gt; &gt;<br>
&gt; &gt; I don't remember when/where/what, but I'm almost 100% sure I've
seen<br>
&gt; &gt; a solution for this. &nbsp;Try google.<br>
&gt; &gt;<br>
&gt;<br>
&gt; I'm pretty sure also but you already gave me a very good tip hereunder
<br>
&gt; :-)<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; I suggest looking in MRTG or RateUp, find the part where it creates
the<br>
&gt; &gt; new database and modify that part.<br>
&gt; &gt;<br>
&gt;<br>
&gt; Great! I didn't realized MRTG was written in Perl.<br>
&gt;<br>
&gt; Actually, I think I'll have to modify function &quot;log2rrd&quot;
in file <br>
&gt; MRTG_lib.pm:<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp;sub log2rrd ($$$) {<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;my @steps = qw(300 1800 7200
86400);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;my %sizes = ( 300 =&gt; 600,
1800 =&gt; 700, 7200 =&gt; 775, 86400 <br>
&gt; =&gt; 797);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...<br>
&gt;<br>
&gt; Am I dreaming? Could it be so simple? :-)<br>
&gt;<br>
&gt; Thanks Alex<br>
&gt;<br>
&gt; Cyrille_______________________________________________<br>
&gt; rrd-users mailing list<br>
&gt; rrd-users@lists.oetiker.ch<br>
&gt; https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users<br>
&gt;<br>
&gt;<br>
&gt; ------------------------------------------------------------------------<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; rrd-users mailing list<br>
&gt; rrd-users@lists.oetiker.ch<br>
&gt; https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users<br>
&gt; &nbsp; <br>
<br>
</font></tt>
<br>