From 9ab40d7eaf361ea1be55e7df3654bf8484b9c408 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 1 Feb 2009 21:16:57 +0100 Subject: [PATCH] Initial version --- plugins/other/s3_items | 100 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 plugins/other/s3_items diff --git a/plugins/other/s3_items b/plugins/other/s3_items new file mode 100755 index 00000000..2c7277d3 --- /dev/null +++ b/plugins/other/s3_items @@ -0,0 +1,100 @@ +#!/usr/bin/perl + +use strict; + + +my $s3_id = exists $ENV{'s3_id'} ? $ENV{'s3_id'} : "user"; +my $s3cmd = 's3curl.pl --id ' . $s3_id . ' http://s3.amazonaws.com/'; + + + +if ( $ARGV[0] eq "autoconf" ) { + if (`/usr/bin/perl $0` eq "" ) { + print "no\n"; + exit 1; + } else { + print "yes\n"; + exit 0; + } +} + + + +sub get_bucket_list() { + + + my $buckets = `$s3cmd`; + + my $str = $buckets; + + my @bucket_list = (); + my $pos = 0; + + while ($str =~ /.([\w._-]+)<\/Name>/) { + + $bucket_list[$pos++] = $1; + $str = $'; + } + + return @bucket_list; +} + + +sub get_bucket_stats { +my ($name) = @_; + + my $s3cmd_local = $s3cmd . $name; + my $stats = `$s3cmd_local`; + + my %res; + + $res{'size'} = 0; + $res{'count'} = 0; + + while ($stats =~ /.([\w._-]+)<\/Size>/) { + $stats = $'; + + $res{'size'} += $1; + $res{'count'}++; + } + return %res; +} + + + +if ( $ARGV[0] eq "config" ) { + + # The headers + print "graph_title S3 Items\n"; + print "graph_category s3\n"; + print "graph_vlabel items\n"; + print 'graph_info Plugin available at http://www.ohardt.com/dev/munin/' . "\n"; + + my @bucket_list = get_bucket_list(); + + my $bucket_name; + + foreach $bucket_name ( @bucket_list ) { + + print $bucket_name . ".label Bucket " . $bucket_name . "\n"; + + } + + exit; + + +} + + +my @bucket_list = get_bucket_list(); + +my $bucket_name; + +foreach $bucket_name ( @bucket_list ) { + + my %stats = get_bucket_stats( $bucket_name ); + + print $bucket_name . ".value " . $stats{'count'} . "\n"; +} + + \ No newline at end of file