1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-24 18:07:20 +00:00

- have some dirs

This commit is contained in:
Steve Schnepp 2012-02-13 18:24:46 +01:00
parent 0b089ea777
commit 08346aac58
687 changed files with 0 additions and 0 deletions

119
plugins/tor/tor-connections Executable file
View file

@ -0,0 +1,119 @@
#!/usr/bin/php
<?php
$cookiepath = "/etc/tor/control_auth_cookie";
$controlport = 9051;
// Nothing to change down here...
$cmd = $argv['1'];
$cookie = file_get_contents($cookiepath);
if ($cmd == "config") {
print "graph_title Connections\n";
print "graph_args -l 0 --base 1000\n";
print "graph_vlabel connections\n";
print "graph_category Tor\n";
print "graph_info This graph shows the number of Tor OR connections.\n";
print "graph_period second\n";
print "new.label new\n";
print "new.type GAUGE\n";
print "new.max 50000\n";
print "new.min 0\n";
print "launched.label launched\n";
print "launched.type GAUGE\n";
print "launched.max 50000\n";
print "launched.min 0\n";
print "connected.label connected\n";
print "connected.type GAUGE\n";
print "connected.max 50000\n";
print "connected.min 0\n";
print "failed.label failed\n";
print "failed.type GAUGE\n";
print "failed.max 50000\n";
print "failed.min 0\n";
print "closed.label closed\n";
print "closed.type GAUGE\n";
print "closed.max 50000\n";
print "closed.min 0\n";
exit;
} elseif ($cmd == "autoconf") {
$socket = fsockopen("tcp://127.0.0.1", $controlport);
fputs($socket, "AUTHENTICATE \"".$cookie."\"\n");
$buffer = fgets($socket, 1024);
if (ereg("250", $buffer)) echo "Yes";
else echo "No (".trim($buffer).")";
fclose($socket);
exit;
}
$socket = fsockopen("tcp://127.0.0.1", $controlport);
fputs($socket, "AUTHENTICATE \"".$cookie."\"\n");
$buffer .= fgets($socket, 4096);
if (!ereg("250", $buffer)) {
echo "Unable to connect to Tor ControlPort (".$buffer.")";
fclose($socket);
exit;
} else {
$buffer = fputs($socket, "GETINFO orconn-status\n");
$buffer = fgets($socket, 1024);
$buffer = fgets($socket, 1024);
while (strlen($buffer) > 3) {
$bits = explode(" ", $buffer);
$connections[trim($bits['1'])]++;
$buffer = fgets($socket, 1024);
}
if (!empty($connections['NEW'])) echo "new.value ".$connections['NEW']."\n";
else echo "new.value 0\n";
if (!empty($connections['LAUNCHED'])) echo "launched.value ".$connections['LAUNCHED']."\n";
else echo "launched.value 0\n";
if (!empty($connections['CONNECTED'])) echo "connected.value ".$connections['CONNECTED']."\n";
else echo "connected.value 0\n";
if (!empty($connections['FAILED'])) echo "failed.value ".$connections['FAILED']."\n";
else echo "failed.value 0\n";
if (!empty($connections['CLOSED'])) echo "closed.value ".$connections['CLOSED']."\n";
else echo "closed.value 0\n";
}
fclose($socket);
?>

76
plugins/tor/tor-traffic Executable file
View file

@ -0,0 +1,76 @@
#!/usr/bin/php
<?php
$cookiepath = "/etc/tor/control_auth_cookie";
$controlport = 9051;
// Nothing to change down here...
$cmd = $argv['1'];
$cookie = file_get_contents($cookiepath);
if ($cmd == "config") {
echo "graph_title Traffic\n";
echo "graph_args --base 1000 \n";
echo "graph_vlabel bits in (-) / out (+) per ${graph_period}\n";
echo "graph_category Tor\n";
echo "down.label Download\n";
echo "down.type GAUGE\n";
echo "up.label Upload\n";
echo "up.type GAUGE\n";
exit;
} elseif ($cmd == "autoconf") {
$socket = fsockopen("tcp://127.0.0.1", $controlport);
fputs($socket, "AUTHENTICATE \"".$cookie."\"\n");
$buffer = fgets($socket, 1024);
if (ereg("250", $buffer)) echo "Yes";
else echo "No (".trim($buffer).")";
fclose($socket);
exit;
}
$socket = fsockopen("tcp://127.0.0.1", $controlport);
fputs($socket, "AUTHENTICATE \"".$cookie."\"\n");
$buffer .= fgets($socket, 4096);
if (!ereg("250", $buffer)) {
echo "Unable to connect to Tor ControlPort (".$buffer.")";
fclose($socket);
exit;
} else {
fputs($socket, "SETEVENTS bw\n");
$buffer = fgets($socket, 1024);
$buffer = fgets($socket, 1024);
$bits = explode(" ", $buffer);
echo "down.value ".($bits['2'] / 1024)."\n";
echo "up.value ".($bits['3'] / 1024)."\n";
}
fclose($socket);
?>

151
plugins/tor/tor_routers Executable file
View file

@ -0,0 +1,151 @@
#!/usr/bin/perl -w
#
# Munin plugin to monitor Tor routers
#
# Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>, based on a plugin by Ge van Geldorp <ge@gse.nl>
#
# Parameters understood:
#
# host - Change which host to graph (default localhost)
# port - Change which port to connect to (default 9051)
# password - Plain-text control channel password (see torrc
# HashedControlPassword parameter)
# cookiefile - Name of the file containing the control channel cookie
# (see torrc CookieAuthentication parameter)
#
# Using HashedControlPassword authentication has the problem that you must
# include the plain-text password in the munin config file. To have any
# effect, that file shouldn't be world-readable.
# If you're using CookieAuthentication, you should run this plugin as a user
# which has read access to the tor datafiles. Also note that bugs in versions
# upto and including 0.1.1.20 prevent CookieAuthentication from working.
#
# Usage: place in /etc/munin/node.d/ (or link it there using ln -s)
#
# Parameters understood:
# config (required)
# autoconf (optional - used by munin-config)
#
#
# Magic markers - optional - used by installation scripts and
# munin-config:
#
#%# family=contrib
#%# capabilities=autoconf
use strict;
use IO::Socket::INET;
# Config
our $address = $ENV{host} || "localhost"; # Default: localhost
our $port = $ENV{port} || 9051; # Default: 9051
# Don't edit below this line
sub Authenticate
{
my ($socket) = @_;
my $authline = "AUTHENTICATE";
if (defined($ENV{cookiefile})) {
if (open(COOKIE, "<$ENV{cookiefile}")) {
binmode COOKIE;
my $cookie;
$authline .= " ";
while (read(COOKIE, $cookie, 32)) {
foreach my $byte (unpack "C*", $cookie) {
$authline .= sprintf "%02x", $byte;
}
}
close COOKIE;
}
} elsif (defined($ENV{password})) {
$authline .= ' "' . $ENV{password} . '"';
}
print $socket "$authline\r\n";
my $replyline = <$socket>;
if (substr($replyline, 0, 1) != '2') {
$replyline =~ s/\s*$//;
return "Failed to authenticate: $replyline";
}
return;
}
if ($ARGV[0] and $ARGV[0] eq "autoconf") {
# Try to connect to the daemon
my $socket = IO::Socket::INET->new("$address:$port")
or my $failed = 1;
if ($failed) {
print "no (failed to connect to $address port $port)\n";
exit 1;
}
my $msg = Authenticate($socket);
if (defined($msg)) {
print $socket "QUIT\r\n";
close($socket);
print "no ($msg)\n";
exit 1;
}
print $socket "QUIT\r\n";
close($socket);
print "yes\n";
exit 0;
}
if ($ARGV[0] and $ARGV[0] eq "config") {
print "graph_title Routers\n";
print "graph_args -l 0\n";
print "graph_vlabel routers\n";
print "graph_category Tor\n";
print "graph_info This graph shows the number of known Tor ORs.\n";
print "ors.label routers\n";
print "ors.type GAUGE\n";
print "ors.info The number of known Tor ORs (onion routers)\n";
exit 0;
}
my $socket = IO::Socket::INET->new("$address:$port")
or die("Couldn't connect to $address port $port: $!");
my $msg = Authenticate($socket);
if (defined($msg)) {
print $socket "QUIT\r\n";
close($socket);
die "$msg\n";
}
print $socket "GETINFO ns/all\r\n";
my $replyline = <$socket>;
if (substr($replyline, 0, 1) != '2') {
print $socket "QUIT\r\n";
close($socket);
$replyline =~ s/\s*$//;
die "Failed to get orconn-status info: $replyline\n";
}
my $count;
while (! (($replyline = <$socket>) =~ /^\.\s*$/)) {
my @reply = split(/\s+/, $replyline);
$count++ if $reply[0] eq 'r';
}
$replyline = <$socket>;
if (substr($replyline, 0, 1) != '2') {
print $socket "QUIT\r\n";
close($socket);
$replyline =~ s/\s*$//;
die "Failed to authenticate: $replyline\n";
}
print $socket "QUIT\r\n";
close($socket);
print "ors.value $count\n";
exit 0;
# vim:syntax=perl