1#!/usr/local/bin/perl 2 3use strict; 4use warnings; 5 6my $HOST = exists $ENV{'host'} ? $ENV{'host'} : "localhost"; 7my $PORT = exists $ENV{'port'} ? $ENV{'port'} : "4730"; 8my $ADMIN = exists $ENV{'admin'} ? $ENV{'admin'} : "gearadmin"; 9 10my @result = `$ADMIN -h$HOST -p$PORT --status 2>&1`; 11 12my $gearman = {}; 13my $keys = ["queue", "running", "total"]; 14 15foreach my $line (@result) { 16 last if ($line =~ /\./); 17 my @array = split(/\s+/, $line); 18 chomp @array; 19 my $string_name = shift @array; 20 my %hash; 21 @hash{@$keys} = @array; 22 23 $gearman->{$string_name}=\%hash; 24}; 25 26if (defined $ARGV[0] and $ARGV[0] eq 'config') { 27 print "graph_title Gearman queue\n"; 28 print "graph_args --base 1000\n"; 29 print "graph_vlabel jobs\n"; 30 print "graph_category cloud\n"; 31 while ( my ($key, $value) = each(%$gearman) ) { 32 my $param = $key."_"."queue"; 33 print "$param.type GAUGE\n"; 34 print "$param.label $param\n"; 35 print "$param.draw LINE\n"; 36 print "$param.min 0\n"; 37 } 38 exit 0; 39} 40 41while ( my ($key, $value) = each(%$gearman) ) { 42 my $param = $key."_"."queue"; 43 print "$param.value ".$value->{"queue"}."\n"; 44} 45