#!/usr/bin/perl # # Graph agesinceseen range counts from SiteSummary # # Based on bourne shell module written by Snorre Jensen. Rewritten to # perl to be able to use the SiteSummary perl module by Petter # Reinholdtsen. # License: GNU General Public License # # Magick markers (optional): #%# family=auto #%# capabilities=autoconf use strict; use warnings; use SiteSummary; my %counts; my %agegroups = get_age_groups(); my @order = map { $agegroups{$_}; } sort { $a <=> $b } keys %agegroups; sub label2key { my $label = shift; # Clean using method described on # http://munin-monitoring.org/wiki/notes_on_datasource_names $label =~ s/^[^A-Za-z_]/_/; $label =~ s/[^A-Za-z0-9_]/_/g; return "$label"; } if (!$ARGV[0]) { for_all_hosts(\&handle_host); for my $label (@order) { my $key = label2key($label); print "$key.value ", defined $counts{$label} ? $counts{$label} : 0 , "\n"; } } elsif ($ARGV[0] eq "config") { print "graph_title SiteSummary AgeSinceSeen\n"; print "graph_order ", join(" ", map { label2key($_); } @order), "\n"; print "graph_vlabel count\n"; print "graph_scale yes\n"; print "graph_args --base 1000 -l 0\n"; print "graph_height 400\n"; print "graph_category SiteSummary\n"; my $first = 1; for my $label (@order) { my $key = label2key($label); if ($first) { print "$key.draw AREA\n"; $first = 0; } else { print "$key.draw STACK\n"; } print "$key.label $label\n"; } } elsif ($ARGV[0] eq "autoconf") { # This module is only available when the sitesummary collector is # installed too, thus we always answer yes. print "yes\n"; exit 0; } sub handle_host { my $hostid = shift; my %agegroups = get_age_groups(); my $agegroup = get_age_group($hostid); $counts{$agegroups{$agegroup}}++; } exit 0;