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
b847893ca1
commit
ed606750df
149
plugins/other/mogilefsd_queries
Executable file
149
plugins/other/mogilefsd_queries
Executable file
@ -0,0 +1,149 @@
|
||||
#!/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 queries.
|
||||
# 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(queries);
|
||||
|
||||
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 queries\n";
|
||||
print "graph_vlabel queries/sec\n";
|
||||
print "graph_args -l 0\n";
|
||||
print "graph_category MogileFS\n";
|
||||
print "queries.label queries\n";
|
||||
print "queries.type DERIVE\n";
|
||||
print "queries.draw AREA\n";
|
||||
print "queries.min 0\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 New Issue
Block a user