<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hurlster.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Rrdtool</id>
	<title>Rrdtool - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://hurlster.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Rrdtool"/>
	<link rel="alternate" type="text/html" href="https://hurlster.com/wiki/index.php?title=Rrdtool&amp;action=history"/>
	<updated>2026-05-15T21:33:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://hurlster.com/wiki/index.php?title=Rrdtool&amp;diff=167&amp;oldid=prev</id>
		<title>Gqwill69: /* php script */</title>
		<link rel="alternate" type="text/html" href="https://hurlster.com/wiki/index.php?title=Rrdtool&amp;diff=167&amp;oldid=prev"/>
		<updated>2011-01-24T14:32:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;php script&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Compile Instrucations ==&lt;br /&gt;
 ./configure --prefix=/usr/local --enable-perl-site-install&lt;br /&gt;
 make &amp;amp;&amp;amp; make install&lt;br /&gt;
== Graph Generating Options ==&lt;br /&gt;
   rrdtool create test.rrd             \&lt;br /&gt;
            --start 920804400          \&lt;br /&gt;
            DS:speed:COUNTER:600:U:U   \&lt;br /&gt;
            RRA:AVERAGE:0.5:1:24       \&lt;br /&gt;
            RRA:AVERAGE:0.5:6:10&lt;br /&gt;
----&lt;br /&gt;
 rrdtool update test.rrd 920804700:12345 920805000:12357 920805300:12363 \&lt;br /&gt;
 rrdtool update test.rrd 920805600:12363 920805900:12363 920806200:12373 \&lt;br /&gt;
 rrdtool update test.rrd 920806500:12383 920806800:12393 920807100:12399 \&lt;br /&gt;
 rrdtool update test.rrd 920807400:12405 920807700:12411 920808000:12415 \&lt;br /&gt;
 rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423 \&lt;br /&gt;
----&lt;br /&gt;
 [[image:speed.png|left]]&lt;br /&gt;
 &amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
 rrdtool graph speed.png                                 \&lt;br /&gt;
         --start 920804400 --end 920808000               \&lt;br /&gt;
         DEF:myspeed=test.rrd:speed:AVERAGE              \&lt;br /&gt;
         LINE2:myspeed#FF0000&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
[[image:speed2.png|left]]&lt;br /&gt;
 &amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
 rrdtool graph speed2.png                                \&lt;br /&gt;
         --start 920804400 --end 920808000               \&lt;br /&gt;
         --vertical-label m/s                            \&lt;br /&gt;
         DEF:myspeed=test.rrd:speed:AVERAGE              \&lt;br /&gt;
         CDEF:realspeed=myspeed,1000,\*                  \&lt;br /&gt;
         LINE2:realspeed#FF0000&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
[[image:speed3.png|left]]&lt;br /&gt;
 &amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
 rrdtool graph speed3.png                             \&lt;br /&gt;
      --start 920804400 --end 920808000               \&lt;br /&gt;
      --vertical-label km/h                           \&lt;br /&gt;
      DEF:myspeed=test.rrd:speed:AVERAGE              \&lt;br /&gt;
      &amp;quot;CDEF:kmh=myspeed,3600,*&amp;quot;                       \&lt;br /&gt;
      CDEF:fast=kmh,100,GT,kmh,0,IF                   \&lt;br /&gt;
      CDEF:good=kmh,100,GT,0,kmh,IF                   \&lt;br /&gt;
      HRULE:100#0000FF:&amp;quot;Maximum allowed&amp;quot;              \&lt;br /&gt;
      AREA:good#00FF00:&amp;quot;Good speed&amp;quot;                   \&lt;br /&gt;
      AREA:fast#FF0000:&amp;quot;Too fast&amp;quot;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
[[image:speed4.png|left]]&lt;br /&gt;
 &amp;lt;div style=&amp;quot;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
 rrdtool graph speed4.png                             \&lt;br /&gt;
      --start 920804400 --end 920808000               \&lt;br /&gt;
      --vertical-label km/h                           \&lt;br /&gt;
      DEF:myspeed=test.rrd:speed:AVERAGE              \&lt;br /&gt;
      CDEF:nonans=myspeed,UN,0,myspeed,IF             \&lt;br /&gt;
      CDEF:kmh=nonans,3600,*                          \&lt;br /&gt;
      CDEF:fast=kmh,100,GT,100,0,IF                   \&lt;br /&gt;
      CDEF:over=kmh,100,GT,kmh,100,-,0,IF             \&lt;br /&gt;
      CDEF:good=kmh,100,GT,0,kmh,IF                   \&lt;br /&gt;
      HRULE:100#0000FF:&amp;quot;Maximum allowed&amp;quot;              \&lt;br /&gt;
      AREA:good#00FF00:&amp;quot;Good speed&amp;quot;                   \&lt;br /&gt;
      AREA:fast#550000:&amp;quot;Too fast&amp;quot;                     \&lt;br /&gt;
      STACK:over#FF0000:&amp;quot;Over speed&amp;quot;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
== PHP Graph Generation ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
  $opts = array( &amp;quot;–start&amp;quot;, &amp;quot;-1d&amp;quot;, &amp;quot;–vertical-label=B/s&amp;quot;,&lt;br /&gt;
                 &amp;quot;DEF:inoctets=net.rrd:input:AVERAGE&amp;quot;,&lt;br /&gt;
                 &amp;quot;DEF:outoctets=net.rrd:output:AVERAGE&amp;quot;,&lt;br /&gt;
                 &amp;quot;AREA:inoctets#00FF00:In traffic&amp;quot;,&lt;br /&gt;
                 &amp;quot;LINE1:outoctets#0000FF:Out traffic\\r&amp;quot;,&lt;br /&gt;
                 &amp;quot;CDEF:inbits=inoctets,8,*&amp;quot;,&lt;br /&gt;
                 &amp;quot;CDEF:outbits=outoctets,8,*&amp;quot;,&lt;br /&gt;
                 &amp;quot;COMMENT:\\n&amp;quot;,&lt;br /&gt;
                 &amp;quot;GPRINT:inbits:AVERAGE:Avg In traffic\: %6.2lf %Sbps&amp;quot;,&lt;br /&gt;
                 &amp;quot;COMMENT:  &amp;quot;,&lt;br /&gt;
                 &amp;quot;GPRINT:inbits:MAX:Max In traffic\: %6.2lf %Sbps\\r&amp;quot;,&lt;br /&gt;
                 &amp;quot;GPRINT:outbits:AVERAGE:Avg Out traffic\: %6.2lf %Sbps&amp;quot;,&lt;br /&gt;
                 &amp;quot;COMMENT: &amp;quot;,&lt;br /&gt;
                 &amp;quot;GPRINT:outbits:MAX:Max Out traffic\: %6.2lf %Sbps\\r&amp;quot;&lt;br /&gt;
               );&lt;br /&gt;
 &lt;br /&gt;
  $ret = rrd_graph(&amp;quot;net_1d.gif&amp;quot;, $opts, count($opts));&lt;br /&gt;
 &lt;br /&gt;
  if( !is_array($ret) )&lt;br /&gt;
  {&lt;br /&gt;
    $err = rrd_error();&lt;br /&gt;
    echo &amp;quot;rrd_graph() ERROR: $err\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  echo &amp;quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;\n&amp;quot;;&lt;br /&gt;
  echo &amp;quot;&amp;lt;img src=\&amp;quot;net_1d.gif\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;
  echo &amp;quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;\n&amp;quot;;&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
== String Formatting ==&lt;br /&gt;
The text printed below the actual graph can be formatted by appending special escape characters at the end of a text. When ever such a character occurs, all pending text is pushed onto the graph according to the character specified.&lt;br /&gt;
&lt;br /&gt;
Valid markers are: &amp;#039;&amp;#039;&amp;#039;\j&amp;#039;&amp;#039;&amp;#039; for justified, &amp;#039;&amp;#039;&amp;#039;\l&amp;#039;&amp;#039;&amp;#039; for left aligned, &amp;#039;&amp;#039;&amp;#039;\r&amp;#039;&amp;#039;&amp;#039; for right aligned, and &amp;#039;&amp;#039;&amp;#039;\c&amp;#039;&amp;#039;&amp;#039; for centered. In the next section there is an example showing how to use centered formatting.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;\n&amp;#039;&amp;#039;&amp;#039; is a valid alias for &amp;#039;&amp;#039;&amp;#039;\l&amp;#039;&amp;#039;&amp;#039; since incomplete parsing in earlier versions of RRDtool lead to this behavior and a number of people has been using it.&lt;br /&gt;
&lt;br /&gt;
Normally there are two space characters inserted between every two items printed into the graph. The space following a string can be suppressed by putting a &amp;#039;&amp;#039;&amp;#039;\g&amp;#039;&amp;#039;&amp;#039; at the end of the string. The &amp;#039;&amp;#039;&amp;#039;\g&amp;#039;&amp;#039;&amp;#039; also ignores any space inside the string if it is at the very end of the string. This can be used in connection with &amp;#039;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;#039; to suppress empty unit strings.&lt;br /&gt;
&lt;br /&gt;
 GPRINT:a:MAX:%lf%s\g&lt;br /&gt;
&lt;br /&gt;
A special case is COMMENT:\s which inserts some additional vertical space before placing the next row of legends.&lt;br /&gt;
&lt;br /&gt;
If you are using the proportional font in your graph, you can use tab characters or the sequence &amp;#039;&amp;#039;&amp;#039;\t&amp;#039;&amp;#039;&amp;#039; to line-up legend elements. Note that the tabs inserted are relative to the start of the current legend element!&lt;br /&gt;
&lt;br /&gt;
= More Info =&lt;br /&gt;
== php script ==&lt;br /&gt;
&lt;br /&gt;
The script below is that can generate the MRTG like pages on the fly to look like this.&lt;br /&gt;
[[image:Pngday.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pngweek.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pngmonth.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pngyear.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/*Variable initialization.*/&lt;br /&gt;
&lt;br /&gt;
$rrdname = &amp;quot;/var/www/mrtg/filename.rrd&amp;quot;;&lt;br /&gt;
$daygraph = &amp;quot;pngday.png&amp;quot;;&lt;br /&gt;
$weekgraph = &amp;quot;pngweek.png&amp;quot;;&lt;br /&gt;
$monthgraph= &amp;quot;pngmonth.png&amp;quot;;&lt;br /&gt;
$yeargraph = &amp;quot;pngyear.png&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
/* I dont suggest you to modify listing code below. */&lt;br /&gt;
&lt;br /&gt;
$daystart = &amp;quot;-2000m&amp;quot;;&lt;br /&gt;
$weekstart = &amp;quot;-12000m&amp;quot;;&lt;br /&gt;
$monthstart = &amp;quot;-2880000&amp;quot;;&lt;br /&gt;
$yearstart = &amp;quot;-34560000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;lt;&amp;lt;&amp;lt;END&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Graphs&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
END;&lt;br /&gt;
gambar($daygraph, $rrdname, $daystart);&lt;br /&gt;
echo &amp;quot;&amp;lt;div align=&amp;#039;center&amp;#039;&amp;gt;&amp;lt;font face=&amp;#039;verdana&amp;#039; size=&amp;#039;2&amp;#039;&amp;gt;&amp;lt;b&amp;gt;Daily graph&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;&amp;lt;center&amp;gt;&amp;lt;img src=images/$daygraph name=&amp;#039;Day Graph&amp;#039; alt=&amp;#039;Day Graph&amp;#039;&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br /&gt;
gambar($weekgraph, $rrdname, $weekstart);&lt;br /&gt;
echo &amp;quot;&amp;lt;div align=&amp;#039;center&amp;#039;&amp;gt;&amp;lt;font face=&amp;#039;verdana&amp;#039; size=&amp;#039;2&amp;#039;&amp;gt;&amp;lt;b&amp;gt;Weekly graph&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;&amp;lt;center&amp;gt;&amp;lt;img src=images/$weekgraph name=&amp;#039;Week Graph&amp;#039; alt=&amp;#039;Week Graph&amp;#039;&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br /&gt;
gambar($monthgraph, $rrdname, $monthstart);&lt;br /&gt;
echo &amp;quot;&amp;lt;div align=&amp;#039;center&amp;#039;&amp;gt;&amp;lt;font face=&amp;#039;verdana&amp;#039; size=&amp;#039;2&amp;#039;&amp;gt;&amp;lt;b&amp;gt;Monthly graph&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;&amp;lt;center&amp;gt;&amp;lt;img src=images/$monthgraph name=&amp;#039;Month Graph&amp;#039; alt=&amp;#039;Month Graph&amp;#039;&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br /&gt;
gambar($yeargraph,$rrdname,$yearstart);&lt;br /&gt;
echo &amp;quot;&amp;lt;div align=&amp;#039;center&amp;#039;&amp;gt;&amp;lt;font face=&amp;#039;verdana&amp;#039; size=&amp;#039;2&amp;#039;&amp;gt;&amp;lt;b&amp;gt;Yearly graph&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;&amp;lt;center&amp;gt;&amp;lt;img src=images/$yeargraph name=&amp;#039;Year Graph&amp;#039; alt=&amp;#039;Year Graph&amp;#039;&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;lt;&amp;lt;&amp;lt;END&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
function gambar($png,$rrd, $start)&lt;br /&gt;
{&lt;br /&gt;
$comm=&amp;quot;rrdtool graph images/$png \-c MGRID#ee0000 \-c GRID#000000 --start $start --end now \&lt;br /&gt;
--font-render-mode=mono \&lt;br /&gt;
DEF:data0=$rrd:ds0:AVERAGE \&lt;br /&gt;
DEF:data1=$rrd:ds1:AVERAGE \&lt;br /&gt;
CDEF:input=data0,8,* \&lt;br /&gt;
CDEF:output=data1,8,* \&lt;br /&gt;
CDEF:shading15=input,0.85,* \&lt;br /&gt;
CDEF:shading30=input,0.70,* \&lt;br /&gt;
CDEF:shading45=input,0.55,* \&lt;br /&gt;
CDEF:shading60=input,0.40,* \&lt;br /&gt;
CDEF:shading75=input,0.25,* \&lt;br /&gt;
CDEF:drn1=LTIME,86400,%,10800,72000,LIMIT,UN,0,input,IF \&lt;br /&gt;
CDEF:nightshade=LTIME,86400,%,28800,LT,INF,LTIME,86400,%,61200,GT,INF,UNKN,input,*,IF,IF \&lt;br /&gt;
CDEF:ijo=input,100,GT,input,0,IF \&lt;br /&gt;
VDEF:ds0pct=input,95,PERCENT \&lt;br /&gt;
AREA:ijo#00aF00:\&amp;quot;Incoming traffic in Bits per second\&amp;quot; \&lt;br /&gt;
AREA:nightshade#CCCCCCAA::STACK \&lt;br /&gt;
AREA:shading15#00bF00 \&lt;br /&gt;
AREA:shading30#00cF00 \&lt;br /&gt;
AREA:shading45#00dF00 \&lt;br /&gt;
AREA:shading60#00eF00 \&lt;br /&gt;
AREA:shading75#00fF00 \&lt;br /&gt;
LINE1:output#0000FF:\&amp;quot;Outgoing traffic in Bits per second\&amp;quot; \&lt;br /&gt;
LINE1:ds0pct#990033:95th \&lt;br /&gt;
GPRINT:input:MAX:\&amp;quot;Maximal In\: %6.2lf %Sbps\&amp;quot; \&lt;br /&gt;
GPRINT:output:MAX:\&amp;quot;Maximal Out\: %6.2lf %Sbps\l\&amp;quot; \&lt;br /&gt;
GPRINT:input:AVERAGE:\&amp;quot;Average In\: %6.2lf %Sbps\&amp;quot; \&lt;br /&gt;
GPRINT:output:AVERAGE:\&amp;quot;Average Out\: %6.2lf %Sbps\l\&amp;quot; \&lt;br /&gt;
GPRINT:input:LAST:\&amp;quot;Current In\: %6.2lf %Sbps\&amp;quot; \&lt;br /&gt;
GPRINT:output:LAST:\&amp;quot;Current Out\: %6.2lf %Sbps\l\&amp;quot; \&lt;br /&gt;
&amp;quot;;&lt;br /&gt;
exec($comm);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Gqwill69</name></author>
	</entry>
</feed>