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