とりあえずPerlで。
mackerel-plugin-qmail
#!/usr/bin/perl
use strict;
use 5.10.0;
use JSON::XS qw(encode_json);
($ENV{MACKEREL_AGENT_PLUGIN_META})? meta() : scan();
sub meta {
say "# mackerel-agent-plugin";
say encode_json {
graphs => {
'qmail.qstat' => {
label => 'qmail-qstat',
unit => 'integer',
metrics => [
{
name => 'queue_preprocessed',
label => 'messages in queue but not yet preprocessed',
},
{
name => 'queue',
label => 'messages in queue',
},
{
name => 'queue_total',
label => 'total messages in queue',
},
]
}
}
};
}
sub scan {
my $time = time();
my $stat = `qmail-qstat`;
my %qstat = map {split /:\s/} split "\n", $stat;
my $queue = $qstat{'messages in queue'};
my $queue_preprocessed = $qstat{'messages in queue but not yet preprocessed'};
my $queue_total = $queue + $queue_preprocessed;
say join "\t", 'qmail.qstat.queue_total', $queue_total, $time;
say join "\t", 'qmail.qstat.queue', $queue, $time;
say join "\t", 'qmail.qstat.queue_preprocessed', $queue_preprocessed, $time;
}