mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
01f45be5df
commit
b847893ca1
1 changed files with 151 additions and 0 deletions
151
plugins/other/mogilefsd_activity
Executable file
151
plugins/other/mogilefsd_activity
Executable file
|
@ -0,0 +1,151 @@
|
||||||
|
#!/usr/bin/perl -w
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007 Guillaume Blairon
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; version 2 dated June,
|
||||||
|
# 1991.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Script to monitor MogileFS tracker activity.
|
||||||
|
# Mostly an adaptation of Jimmy Olsen's squid_cache script.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# ln -s /usr/share/munin/plugins/mogilefsd_activity \
|
||||||
|
# /etc/munin/plugins/
|
||||||
|
#
|
||||||
|
# Configuration variables:
|
||||||
|
#
|
||||||
|
# host (default: '127.0.0.1')
|
||||||
|
# port (default: '6001')
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# config (required)
|
||||||
|
# autoconf (optional - only used by munin-config)
|
||||||
|
#
|
||||||
|
#%# family=auto
|
||||||
|
#%# capabilities=autoconf
|
||||||
|
|
||||||
|
my $ret = undef;
|
||||||
|
|
||||||
|
my $DEBUG = 0;
|
||||||
|
my @known_states=qw(pending_queries processing_queries bored_queryworkers);
|
||||||
|
|
||||||
|
if (! eval "require IO::Socket;")
|
||||||
|
{
|
||||||
|
$ret = "IO::Socket not found";
|
||||||
|
}
|
||||||
|
|
||||||
|
$mogilefsd_host = $ENV{host} || "127.0.0.1";
|
||||||
|
$mogilefsd_port = $ENV{port} || 6001;
|
||||||
|
|
||||||
|
if($ARGV[0] and $ARGV[0] eq "autoconf") {
|
||||||
|
&autoconf($mogilefsd_host, $mogilefsd_port);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub autoconf {
|
||||||
|
my ($host, $port) = @_;
|
||||||
|
|
||||||
|
if ($ret)
|
||||||
|
{
|
||||||
|
print "no ($ret)\n";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $conn = IO::Socket::INET->new(PeerAddr => $host,
|
||||||
|
PeerPort => $port,
|
||||||
|
Proto => 'tcp',
|
||||||
|
Timeout => 5) or die($!);
|
||||||
|
|
||||||
|
if (!$conn)
|
||||||
|
{
|
||||||
|
print "no (could not connect: $!)\n";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $request = "!stats\n";
|
||||||
|
|
||||||
|
$conn->syswrite($request, length($request));
|
||||||
|
|
||||||
|
my @lines = qw();
|
||||||
|
while (my $line = $conn->getline) {
|
||||||
|
if ($line =~ /^\./) {
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
push(@lines, $line);
|
||||||
|
}
|
||||||
|
close($conn);
|
||||||
|
|
||||||
|
print "yes\n";
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub query_mogilefsd {
|
||||||
|
my ($host, $port) = @_;
|
||||||
|
|
||||||
|
my $conn = IO::Socket::INET->new(PeerAddr => $host,
|
||||||
|
PeerPort => $port,
|
||||||
|
Proto => 'tcp') or die($!);
|
||||||
|
|
||||||
|
my $request = "!stats\n";
|
||||||
|
|
||||||
|
$conn->syswrite("$request", length("$request"));
|
||||||
|
|
||||||
|
my @lines = qw();
|
||||||
|
while (my $line = $conn->getline) {
|
||||||
|
if ($line =~ /^\./) {
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
push(@lines, $line);
|
||||||
|
}
|
||||||
|
close($conn);
|
||||||
|
|
||||||
|
for(my $i = 0; $i <= $#lines; $i++) {
|
||||||
|
if($lines[$i] =~ /^([^\s]*)\s(\d+)/) {
|
||||||
|
$states{"$1"} = "$2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keys %states;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($ARGV[0] and $ARGV[0] eq "config") {
|
||||||
|
|
||||||
|
print "graph_title MogileFS tracker activity\n";
|
||||||
|
print "graph_vlabel processes\n";
|
||||||
|
print "graph_args -l 0\n";
|
||||||
|
print "graph_category MogileFS\n";
|
||||||
|
print "bored_queryworkers.label bored_queryworkers\n";
|
||||||
|
print "bored_queryworkers.draw AREA\n";
|
||||||
|
print "processing_queries.label processing_queries\n";
|
||||||
|
print "processing_queries.draw STACK\n";
|
||||||
|
print "pending_queries.label pending_queries\n";
|
||||||
|
print "pending_queries.draw STACK\n";
|
||||||
|
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
print %states;
|
||||||
|
|
||||||
|
&query_mogilefsd($mogilefsd_host, $mogilefsd_port);
|
||||||
|
|
||||||
|
foreach $key (@known_states) {
|
||||||
|
print "$key.value ";
|
||||||
|
if (exists $states{$key}) {
|
||||||
|
print $states{$key}, "\n";
|
||||||
|
} else {
|
||||||
|
print "0\n";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue