diff --git a/plugins/s3/s3_storage b/plugins/s3/s3_storage index f9c12fef..e579dba3 100755 --- a/plugins/s3/s3_storage +++ b/plugins/s3/s3_storage @@ -1,100 +1,83 @@ -#!/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 Storage Usage\n"; - print "graph_category s3\n"; - print "graph_args --base 1024 -l 0\n"; - print "graph_vlabel bytes\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{'size'} . "\n"; -} - \ No newline at end of file +#!/usr/bin/perl + +use strict; +use warnings; + +my $s3_id = exists $ENV{'s3_id'} ? $ENV{'s3_id'} : "user"; +my $s3curl = "perl s3-curl/s3curl.pl --id $s3_id -- -s -S"; + +sub get_bucket_list() +{ + my $buckets = `$s3curl http://s3.amazonaws.com`; + my $str = $buckets; + my @bucket_list; + + while ($buckets =~ s/.([\w._-]+)<\/Name>//) + { + push @bucket_list, $1; + } + + return @bucket_list; +} + +my @bucket_list = split /\s+/, ($ENV{'buckets'} || ''); +if (not @bucket_list) +{ + @bucket_list = get_bucket_list(); +} + +if ($ARGV[0] and $ARGV[0] eq "autoconf") +{ + if (@bucket_list) + { + print "yes\n"; + exit 0; + } + else + { + print "no\n"; + exit 1; + } +} + +sub get_bucket_stats +{ + my ($name) = @_; + my $stats = `$s3curl http://$name.s3.amazonaws.com`; + my %res; + + $res{'size'} = 0; + + while ($stats =~ s/.([\w._-]+)<\/Size>//) + { + $res{'size'} += $1; + $res{'count'}++; + } + + return %res; +} + +if ($ARGV[0] and $ARGV[0] eq "config") +{ + # The headers + print "graph_title S3 Storage Usage\n"; + print "graph_category s3\n"; + print "graph_args --base 1024 -l 0\n"; + print "graph_vlabel bytes\n"; + print "graph_info Plugin available at https://github.com/aptivate/munin-contrib/blob/master/plugins/s3/s3_storage\n"; + + foreach my $bucket_name (@bucket_list) + { + print "$bucket_name.label Bucket $bucket_name\n"; + } + + exit; +} + +foreach my $bucket_name (@bucket_list) +{ + my %stats = get_bucket_stats($bucket_name); + print "$bucket_name.value " . $stats{'size'} . "\n"; +} + +exit 0;