}
our $R= '/var/lib/collectd/rrd/chiark.greenend.org.uk';
+our $SELF= '/home/ijackson/things/rrd-graphs';
my $self= url(-relative=>1);
]);
}
+foreach my $src (<$SELF/news-stats/*.rrd>) {
+ my $site= $src;
+ $site =~ s,.*/,,;
+ $site =~ s,\.rrd$,,;
+ $site =~ s,_(in|out)$,,;
+ my $inout= $1;
+ $site =~ s/^([-.0-9a-z]+)_//;
+ my $us= $1;
+ graph('News',
+ $inout eq 'out' ? "$us -> $site" : "$site -> $us",
+ {
+ Slower => 1,
+ }, $inout eq 'out' ?
+ [
+ (map { "DEF:$_=$src:$_:AVERAGE" }
+ qw(missing offered deferred unwanted accepted
+ rejected body_missing)),
+ "AREA:accepted#00f:ok",
+ "AREA:body_missing#ff0:missing:STACK",
+ "AREA:rejected#f00:rejected:STACK",
+ "AREA:unwanted#bbb:unwanted:STACK",
+ "AREA:deferred#eee:deferred:STACK",
+ "LINE:offered#080:",
+ ] :
+ [
+ (map { "DEF:$_=$src:$_:AVERAGE" }
+ qw(accepted refused rejected duplicate)),
+ (map { ("DEF:bytes_$_=$src:${_}_size:AVERAGE",
+ "CDEF:kb_$_=bytes_$_,1024,/")
+ } qw(accepted duplicate)),
+ "AREA:accepted#00f:ok:STACK",
+ "AREA:rejected#f00:rej:STACK",
+ "AREA:duplicate#000:dupe:STACK",
+ "AREA:refused#bbb:unw:STACK",
+ "LINE:kb_duplicate#ff0:kb dupe",
+ "LINE:kb_accepted#008:kb",
+ ]);
+}
+
if (param('debug')) {
print "Content-Type: text/plain\n\n";
}