1 #!/usr/bin/perl
2 #$ENV{PATH}='/scratch/rrd4/bin';
3 $ENV{PATH}=$ENV{HOME}.'/checkouts/rrdtool/branches/1.3/program/src:'.$ENV{PATH};
4 my $R=rrdtool;
5 my $w=320 ;
6 my $h=200 ;
7 my $start = 1199999700;
8 if (not -f 'x.rrd'){
9 system $R,'create','x.rrd',
10 '--step' => 300,
11 '--start' => ($start-1),
12 'DS:a:GAUGE:600:-40:2100',
13 'DS:b:GAUGE:600:-40:2100',
14 'DS:r:GAUGE:600:-40:2100',
15 'RRA:AVERAGE:0.4:1:2100',
16 # 'RRA:AVERAGE:0.4:3:100',
17 'RRA:MIN:0.4:3:2100',
18 'RRA:MAX:0.4:3:2100';
20 my @updates;
21 for (my $i = 1; $i < 100;$i++){
22 push @updates, ($i*300+$start).':'.(sin($i/10)*40+sin($i/19)*10+50).':'.(cos($i/10)*40+cos($i/33)*15+70).':'.(cos($i/10)*10+sin($i/3)*35+70+rand(40));
23 }
24 system $R,'update','x.rrd',@updates;
25 }
27 sub rg {
28 my $file = shift;
29 print STDERR $file,"\t";
30 if (-f $file){
31 print STDERR " skip\n";
32 return;
33 }
34 my @G = ( '--start' => $start+3600,
35 '--end' => $start + 100 * 280,
36 # '--full-size-mode',
37 '--color=BACK#ffff',
38 '--color=CANVAS#ffff',
39 '--color=SHADEA#ffff',
40 '--color=SHADEB#ffff',
41 '--lower-limit' => 0,
42 '--pango-markup',
43 '--height' => $h, '--width' => $w,
44 '--imgformat' => 'PDF',
45 'DEF:a=x.rrd:a:AVERAGE',
46 'DEF:r=x.rrd:r:AVERAGE',
47 'DEF:b=x.rrd:b:AVERAGE');
48 system $R, 'graph', $file, @G, @_;
49 }
51 rg 'LINE.pdf',
52 '--lower-limit' => 1000,
53 'LINE:a#11a03b:DEF\:a=x.rrd\:a\:AVERAGE',
54 'LINE:b#a1003b:DEF\:b=x.rrd\:b\:AVERAGE\l';
56 rg 'LINE-lower.pdf',
57 'LINE:a#11a03b',
58 'LINE:b#a1003b',
59 'COMMENT:--lower-limit=<b>0</b>';
61 rg 'LINE-slope.pdf',
62 '--slope-mode',
63 'LINE:a#11a03b',
64 'LINE:b#a1003b',
65 'COMMENT:<b>--slope-mode</b>';
67 rg 'LINE-graph-monos.png',
68 '--graph-render-mode' => 'mono',
69 '--imgformat' => 'PNG',
70 '--zoom'=>1,
71 'LINE:a#11a03b',
72 'LINE3:b#a1003b',
73 'COMMENT:--graph-render-mode=<b>mono</b>';
75 system "convert -scale 800% LINE-graph-monos.png LINE-graph-mono.png" unless -f "LINE-graph-mono.png";
77 rg 'LINE-font-monos.png',
78 '--font-render-mode' => 'mono',
79 '--zoom'=>1,
80 '--imgformat' => 'PNG',
81 'LINE:a#11a03b',
82 'LINE3:b#a1003b',
83 'COMMENT:--font-render-mode=<b>mono</b>';
85 system "convert -scale 800% LINE-font-monos.png LINE-font-mono.png" unless -f "LINE-font-mono.png";
87 rg "LINE-width.pdf",
88 'LINE1:b#ff00ff:LINE<b>1</b>\:b#ff00ff',
89 'LINE4:a#ffaa00:LINE<b>4</b>\:a#ffaa00\l';
91 rg "LINE-dash.pdf",
92 'LINE1:a#ff00ff:LINE1\:a#ff00ff\:\:<b>dashes=10,10,80,10</b>\n:dashes=10,20,80,20',
93 'LINE2:b#ffaa00:LINE2\:b#ffaa00\:\:<b>dashes=1,3</b>\:<b>dash-offset=10</b>:dashes=1,3:dash-offset=3';
96 rg "DEF-step.pdf",
97 'DEF:c=x.rrd:a:AVERAGE:step=1800',
98 'LINE3:a#ccc:DEF\:a=x.rrd\:a\:AVERAGE\n',
99 'LINE1:c#f00:DEF\:b=x.rrd\:a\:AVERAGE\:<b>step=1800</b>';
101 rg "DEF-reduce.pdf",
102 'DEF:c=x.rrd:a:AVERAGE:step=1800:reduce=MIN',
103 "DEF:d=x.rrd:a:AVERAGE:step=1800:reduce=MAX",
104 'LINE1:c#f00:DEF\:b=x.rrd\:a\:AVERAGE\:step=1800\:<b>reduce=MIN</b>\n',
105 'LINE1:d#0a0:DEF\:c=x.rrd\:a\:AVERAGE\:step=1800\:<b>reduce=MAX</b>\n',
106 'LINE1:a#888:DEF\:a=x.rrd\:a\:AVERAGE';
108 my $newstart = $start + 40*300;
109 rg "DEF-start.pdf",
110 'DEF:c=x.rrd:a:AVERAGE:start='.$newstart,
111 'LINE5:a#ccc:DEF\:a=x.rrd\:a\:AVERAGE\n',
112 'LINE1:c#f00:DEF\:b=x.rrd\:a\:AVERAGE\:<b>start='.$newstart.'</b>';
114 rg 'AREA-simple.pdf',
115 'AREA:a#f1805b:<b>AREA</b>\:a#a1003b',
116 'LINE2:b#1180fb:LINE\:b#11a03b\l';
118 rg 'AREA-two.pdf',
119 'AREA:a#f1805b:<b>AREA</b>\:a#a1003b',
120 'AREA:b#1180fb:<b>AREA</b>\:b#11a03b\l';
122 rg 'AREA-trans.pdf',
123 'AREA:a#f1805bff:AREA\:a#a1003b<b>ff</b>',
124 'AREA:b#1180fb60:AREA\:b#11a03b<b>60</b>\l';
126 rg 'AREA-stack.pdf',
127 'AREA:a#f1805b:AREA\:a#a1003b',
128 'AREA:b#1180fb:AREA\:b#11a03b\:...\:<b>STACK</b>\l:STACK';
130 rg 'SHIFT-simple.pdf',
131 'DEF:c=x.rrd:a:AVERAGE',
132 'CDEF:d=c',
133 'SHIFT:d:3600',
134 'LINE:c#1f9',
135 'LINE:d#417:CDEF\:b=a <b>SHIFT</b>\:b\:3600\l';
138 rg 'SHIFT-startdef.pdf',
139 'DEF:c=x.rrd:a:AVERAGE:start='.($start-3600),
140 'CDEF:d=c',
141 'SHIFT:d:3600',
142 'LINE:c#1f9',
143 'LINE:d#417:CDEF\:b=a <b>SHIFT</b>\:b\:3600\l',
144 'COMMENT:DEF\:a=x.rrd\:a\:AVERAGE\:<b>start='.($start-3600).'</b>\l';
146 rg 'RPN-simple.pdf',
147 'CDEF:c=a,20,+',
148 'LINE:a#1f9',
149 'LINE:c#417:<b>CDEF</b>\:b=a,20,+\l';
151 rg 'RPN-max.pdf',
152 'CDEF:c=a,b,MAX',
153 'AREA:a#1f9:a',
154 'AREA:b#41f:b',
155 'LINE2:c#f00:c',
156 'COMMENT:c=a,b,<b>MAX</b>\l';
158 rg 'RPN-limit.pdf',
159 'CDEF:c=a,30,70,LIMIT',
160 'LINE4:a#1f9:a',
161 'LINE2:c#41f:b',
162 'COMMENT:b=a,30,70,<b>LIMIT</b>\l';
164 rg 'RPN-trend.pdf',
165 'CDEF:k=r,3600,TREND',
166 'LINE1:r#3a1:a',
167 'LINE1:k#21f:b',
168 'COMMENT:b=a,3600,<b>TREND</b>\l';
170 rg 'RPN-trend-start.pdf',
171 'DEF:rr=x.rrd:r:AVERAGE:start='.($start-3600),
172 'CDEF:k=rr,3600,TREND',
173 'COMMENT:DEF\:a=x.rrd\:a\:AVERAGE\:<b>start='.($start-3600).'</b>\l',
174 'LINE1:r#3a1:a',
175 'LINE1:k#21f:b',
176 'COMMENT:b=a,3600,TREND\l';
178 rg 'RPN-trend-shift.pdf',
179 'DEF:rr=x.rrd:r:AVERAGE:start='.($start-3600),
180 'CDEF:k=rr,3600,TREND',
181 'SHIFT:k:-1800',
182 'LINE1:r#3a1:a',
183 'COMMENT:CDEF\:b=a,3600,TREND <b>SHIFT</b>\:b\:-1800',
184 'LINE1:k#21f:b\l';
186 if ( ! -f '1.rrd'){
187 system $R,'create','1.rrd',
188 '--step' => 1,
189 '--start' => ($start-1),
190 'DS:a:GAUGE:2:U:U',
191 'RRA:AVERAGE:0.4:1:1' };
194 rg 'RPN-if.pdf',
195 'CDEF:c=a,b,LT,a,b,IF,4,-',
196 'LINE1:a#3a1:a',
197 'LINE1:b#21f:b',
198 'AREA:c#f00a:c=a,b,<b>LT</b>,a,b,<b>IF</b>,4,-\l';
200 rg 'RPN-UNKN.pdf',
201 'CDEF:c=a,b,GT,a,UNKN,IF',
202 'CDEF:d=a,b,LT,b,UNKN,IF',
203 'AREA:c#8a1:c=a,b,GT,a,<b>UNKN</b>,IF',
204 'AREA:d#91f:d=a,b,LT,b,<b>UNKN</b>,IF\l';
206 rg 'RPN-count.pdf',
207 'CDEF:c=COUNT,3,%,0,EQ,a,UNKN,IF',
208 'AREA:c#8a1:c=<b>COUNT</b>,3,%,0,EQ,a,UNKN,IF';
210 rg 'RPN-time.pdf',
211 'CDEF:c=TIME,1800,%,900,GE,a,UNKN,IF',
212 'AREA:c#8a1:c=<b>TIME</b>,1800,%,900,GE,a,UNKN,IF';
214 rg 'RPN-time-minus.pdf',
215 'CDEF:c=TIME,1,-,1800,%,900,GE,a,UNKN,IF',
216 'AREA:c#8a1:c=TIME,<b>1,-</b>,1800,%,900,GE,a,UNKN,IF';
218 if ( ! -f '1.rrd'){
219 system $R,'create','1.rrd',
220 '--step' => 1,
221 '--start' => ($start-1),
222 'DS:a:GAUGE:2:U:U',
223 'RRA:AVERAGE:0.4:1:1' };
225 rg 'RPN-time-odd.pdf',
226 'CDEF:c=TIME,1756,%,180,GE,a,UNKN,IF',
227 'AREA:c#8a1:c=TIME,1756,%,180,GE,a,UNKN,IF';
229 rg 'RPN-time-odd-hires.pdf',
230 'DEF:s=1.rrd:a:AVERAGE',
231 'CDEF:c=s,POP,TIME,1756,%,180,GE,a,UNKN,IF',
232 'COMMENT:DEF\:one=1.rrd\:one\:AVERAGE',
233 'AREA:c#8a1:c=one,POP,TIME,1756,%,180,GE,a,UNKN,IF';
235 rg 'RPN-prev.pdf',
236 'CDEF:c=COUNT,3,%,0,EQ,a,UNKN,IF',
237 'CDEF:d=COUNT,3,%,1,EQ,PREV,c,IF',
238 'COMMENT:CDEF\:c=COUNT,3,%,0,EQ,a,UNKN,IF',
239 'AREA:d#8a1:d=COUNT,3,%,1,EQ,<b>PREV</b>,c,IF';
241 rg 'VDEF-average.pdf',
242 'VDEF:aavg=a,AVERAGE',
243 'LINE2:a#11a03b88',
244 'LINE:aavg#01902b:b',
245 'GPRINT:aavg:avg %.1lf',
246 'COMMENT:<b>VDEF</b>\:b=a,AVERAGE <b>GPRINT</b>\:b\:avg %.1lf\l';
248 rg 'VDEF-minmax.pdf',
249 'LINE2:a#4f4',
250 'VDEF:amax=a,MAXIMUM',
251 'LINE:amax#123',
252 'VRULE:amax#123:max',
253 'GPRINT:amax:%.1lf',
254 'GPRINT:amax:%H\:%M:strftime',
255 'COMMENT:VDEF\:max=a,MAXIMUM\l',
256 'VDEF:amin=a,MINIMUM',
257 'LINE:amin#48f',
258 'VRULE:amin#48f:min',
259 'GPRINT:amin:%.1lf',
260 'GPRINT:amin:%H\:%M:strftime',
261 'COMMENT:VDEF\:min=a,MINIMUM\l';
263 rg 'VDEF-lsl.pdf',
264 'VDEF:slope=a,LSLSLOPE',
265 'VDEF:int=a,LSLINT',
266 'CDEF:lsl=a,POP,COUNT,slope,*,int,+',
267 'GPRINT:slope:VDEF\:slope=a,LSLSLOPE (%.3lf)\l',
268 'GPRINT:int:VDEF\:int=a,LSLINT (%.1lf)\l',
269 'LINE2:a#8f1:a',
270 'LINE2:lsl#f71:lsl=a,POP,COUNT,slope,*,int,+\l';