Category Tree: reduce number of categories
This commit is contained in:
parent
84c28707eb
commit
c4b2d9a8e3
|
@ -208,7 +208,7 @@ multigraph 2wire_dsl_bandwidth_daily
|
||||||
graph_title 2wire DSL bandwidth usage (daily)
|
graph_title 2wire DSL bandwidth usage (daily)
|
||||||
graph_args --base 1024 -l 0 -M
|
graph_args --base 1024 -l 0 -M
|
||||||
graph_vlabel Bytes
|
graph_vlabel Bytes
|
||||||
graph_category 2wire
|
graph_category network
|
||||||
|
|
||||||
down.label Down
|
down.label Down
|
||||||
up.label Up
|
up.label Up
|
||||||
|
|
|
@ -156,7 +156,7 @@ multigraph asterisk_channels
|
||||||
graph_title Asterisk active channels
|
graph_title Asterisk active channels
|
||||||
graph_args --base 1000 -l 0
|
graph_args --base 1000 -l 0
|
||||||
graph_vlabel channels
|
graph_vlabel channels
|
||||||
graph_category asterisk
|
graph_category voip
|
||||||
total.label channels
|
total.label channels
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ multigraph asterisk_voicemail
|
||||||
graph_title Asterisk voicemail messages
|
graph_title Asterisk voicemail messages
|
||||||
graph_args --base 1000 -l 0
|
graph_args --base 1000 -l 0
|
||||||
graph_vlabel messages
|
graph_vlabel messages
|
||||||
graph_category asterisk
|
graph_category voip
|
||||||
total.label Total messages
|
total.label Total messages
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ print <<END;
|
||||||
multigraph asterisk_meetme
|
multigraph asterisk_meetme
|
||||||
graph_title Asterisk meetme statistics
|
graph_title Asterisk meetme statistics
|
||||||
graph_args --base 1000 -l 0
|
graph_args --base 1000 -l 0
|
||||||
graph_category asterisk
|
graph_category voip
|
||||||
users.label Connected users
|
users.label Connected users
|
||||||
conferences.label Active conferences
|
conferences.label Active conferences
|
||||||
END
|
END
|
||||||
|
@ -193,7 +193,7 @@ multigraph asterisk_codecs
|
||||||
graphs_title Asterisk channels per codec
|
graphs_title Asterisk channels per codec
|
||||||
graph_args --base 1000 -l 0
|
graph_args --base 1000 -l 0
|
||||||
graph_vlabel channels
|
graph_vlabel channels
|
||||||
graph_category asterisk
|
graph_category voip
|
||||||
END
|
END
|
||||||
|
|
||||||
foreach my $codec (@CODECS) {
|
foreach my $codec (@CODECS) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ if [ "$1" = "config" ]; then
|
||||||
echo "graph_title Asterisk Channels"
|
echo "graph_title Asterisk Channels"
|
||||||
echo "graph_args --base 1000 -l 0"
|
echo "graph_args --base 1000 -l 0"
|
||||||
echo "graph_vlabel Channels"
|
echo "graph_vlabel Channels"
|
||||||
echo "graph_category asterisk"
|
echo "graph_category voip"
|
||||||
echo "channels.label Channels"
|
echo "channels.label Channels"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -28,7 +28,7 @@ if [ "$1" = "config" ]; then
|
||||||
echo 'graph_vlabel line use and connected users states'
|
echo 'graph_vlabel line use and connected users states'
|
||||||
echo 'graph_noscale true'
|
echo 'graph_noscale true'
|
||||||
echo 'graph_info will be info'
|
echo 'graph_info will be info'
|
||||||
echo 'graph_category asterisk'
|
echo 'graph_category voip'
|
||||||
echo 'inuse.label inuse'
|
echo 'inuse.label inuse'
|
||||||
echo 'inuse.type GAUGE'
|
echo 'inuse.type GAUGE'
|
||||||
echo 'inuse.info sip show inuse'
|
echo 'inuse.info sip show inuse'
|
||||||
|
|
|
@ -70,7 +70,7 @@ def main():
|
||||||
return
|
return
|
||||||
|
|
||||||
if command == 'config':
|
if command == 'config':
|
||||||
print 'graph_category bitcoin'
|
print 'graph_category htc'
|
||||||
print 'graph_title Bitcoin %s' % labels[0]
|
print 'graph_title Bitcoin %s' % labels[0]
|
||||||
print 'graph_vlabel %s' % labels[1]
|
print 'graph_vlabel %s' % labels[1]
|
||||||
for label in line_labels:
|
for label in line_labels:
|
|
@ -1,242 +1,126 @@
|
||||||
#!/usr/bin/perl
|
#! /bin/bash
|
||||||
|
#
|
||||||
|
# Munin Plugin
|
||||||
|
# to count logins to your dovecot mailserver
|
||||||
|
#
|
||||||
|
# Created by Dominik Schulz <lkml@ds.gauner.org>
|
||||||
|
# http://developer.gauner.org/munin/
|
||||||
|
# Contributions by:
|
||||||
|
# - Stephane Enten <tuf@delyth.net>
|
||||||
|
# - Steve Schnepp <steve.schnepp@pwkf.org>
|
||||||
|
#
|
||||||
|
# Parameters understood:
|
||||||
|
#
|
||||||
|
# config (required)
|
||||||
|
# autoconf (optional - used by munin-config)
|
||||||
|
#
|
||||||
|
# Config variables:
|
||||||
|
#
|
||||||
|
# logfile - Where to find the syslog file
|
||||||
|
#
|
||||||
|
# Add the following line to a file in /etc/munin/plugin-conf.d:
|
||||||
|
# env.logfile /var/log/your/logfile.log
|
||||||
|
#
|
||||||
|
# Magic markers (optional - used by munin-config and installation scripts):
|
||||||
|
#
|
||||||
#%# family=auto
|
#%# family=auto
|
||||||
#%# capabilities=autoconf
|
#%# capabilities=autoconf
|
||||||
|
|
||||||
use Munin::Plugin;
|
######################
|
||||||
|
# Configuration
|
||||||
|
######################
|
||||||
|
EXPR_BIN=/usr/bin/expr
|
||||||
|
LOGFILE=${logfile:-/var/log/mail.log}
|
||||||
|
######################
|
||||||
|
|
||||||
$pos = undef;
|
if [ "$1" = "autoconf" ]; then
|
||||||
$connected = 0;
|
echo yes
|
||||||
$connectedimap = 0;
|
exit 0
|
||||||
$connectedpop3 = 0;
|
fi
|
||||||
$connections = 0;
|
|
||||||
$connectionsimap = 0;
|
|
||||||
$connectionspop3 = 0;
|
|
||||||
$login = 0;
|
|
||||||
$pop3login = 0;
|
|
||||||
$imaplogin = 0;
|
|
||||||
$tls = 0;
|
|
||||||
$ssl = 0;
|
|
||||||
$aborted = 0;
|
|
||||||
|
|
||||||
($dirname = $0) =~ s/[^\/]+$//;
|
if [ "$1" = "config" ]; then
|
||||||
|
echo 'graph_title Dovecot Logins'
|
||||||
|
echo 'graph_category mail'
|
||||||
|
echo 'graph_args --base 1000 -l 0'
|
||||||
|
echo 'graph_vlabel Login Counters'
|
||||||
|
|
||||||
$dovelogfile = 0 ;
|
for t in Total TLS SSL IMAP POP3
|
||||||
|
do
|
||||||
|
field=$(echo $t | tr '[:upper:]' '[:lower:]')
|
||||||
|
echo "login_$field.label $t Logins"
|
||||||
|
echo "login_$field.type DERIVE"
|
||||||
|
echo "login_$field.min 0"
|
||||||
|
done
|
||||||
|
|
||||||
$logfile = $ENV{'LOGFILE'} || '/var/log/mail.log';
|
echo 'connected.label Connected Users'
|
||||||
|
|
||||||
if ( $logfile =~ /dovecot/ ) {
|
exit 0
|
||||||
$dovelogfile = 1 ;
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
# Use an overrided $PATH for all external programs if needed
|
######################
|
||||||
$DOVEADM = "doveadm";
|
# Total Logins
|
||||||
|
######################
|
||||||
if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) {
|
echo -en "login_total.value "
|
||||||
|
VALUE=$(egrep -c '[dovecot]?.*Login' $LOGFILE)
|
||||||
if (! -x $DOVEADM) {
|
if [ ! -z "$VALUE" ]; then
|
||||||
print "no (no doveadm)\n";
|
echo "$VALUE"
|
||||||
exit(1);
|
else
|
||||||
}
|
echo "0"
|
||||||
|
fi
|
||||||
if (! -f $logfile) {
|
echo -n
|
||||||
print "no (logfile $logfile does not exist)\n";
|
######################
|
||||||
exit(1);
|
# Connected Users
|
||||||
}
|
######################
|
||||||
|
DISCONNECTS=$(egrep -c '[dovecot]?.*Disconnected' $LOGFILE)
|
||||||
if (-r "$logfile") {
|
CONNECTS=$(egrep -c '[dovecot]?.*Login' $LOGFILE)
|
||||||
print "yes\n";
|
VALUE=$($EXPR_BIN $CONNECTS - $DISCONNECTS)
|
||||||
exit 0;
|
if [ -z "$VALUE" ] || [ "$VALUE" -lt 0 ]; then
|
||||||
} else {
|
VALUE=0
|
||||||
print "no (logfile not readable)\n";
|
fi
|
||||||
}
|
echo -en "connected.value "
|
||||||
exit 1;
|
echo $VALUE
|
||||||
}
|
echo -n
|
||||||
|
######################
|
||||||
if (-f "$logfile.0") {
|
# TLS Logins
|
||||||
$rotlogfile = $logfile . ".0";
|
######################
|
||||||
} elsif (-f "$logfile.1") {
|
echo -en "login_tls.value "
|
||||||
$rotlogfile = $logfile . ".1";
|
VALUE=$(egrep -c '[dovecot]?.*Login.*TLS' $LOGFILE)
|
||||||
} elsif (-f "$logfile.01") {
|
if [ ! -z "$VALUE" ]; then
|
||||||
$rotlogfile = $logfile . ".01";
|
echo "$VALUE"
|
||||||
} else {
|
else
|
||||||
$rotlogfile = $logfile . ".0";
|
echo "0"
|
||||||
}
|
fi
|
||||||
|
echo -n
|
||||||
if ( $ARGV[0] and $ARGV[0] eq "config" ) {
|
######################
|
||||||
print "multigraph dovecot_connections\n";
|
# SSL Logins
|
||||||
print "graph_title Dovecot connections\n";
|
######################
|
||||||
print "graph_args --base 1000 -l 0 --no-gridfit --slope-mode\n";
|
echo -en "login_ssl.value "
|
||||||
print "graph_vlabel connections\n";
|
VALUE=$(egrep -c '[dovecot]?.*Login.*SSL' $LOGFILE)
|
||||||
print "graph_category mail\n";
|
if [ ! -z "$VALUE" ]; then
|
||||||
print "connections.label Connections open\n";
|
echo "$VALUE"
|
||||||
print "connections.type GAUGE\n";
|
else
|
||||||
print "connections.draw LINE1\n";
|
echo "0"
|
||||||
print "connections.min 0\n";
|
fi
|
||||||
print "connectionsimap.label IMAP\n";
|
echo -n
|
||||||
print "connectionsimap.type GAUGE\n";
|
######################
|
||||||
print "connectionsimap.draw AREA\n";
|
# IMAP Logins
|
||||||
print "connectionsimap.min 0\n";
|
######################
|
||||||
print "connectionspop3.label POP3\n";
|
echo -en "login_imap.value "
|
||||||
print "connectionspop3.type GAUGE\n";
|
VALUE=$(egrep -c '[dovecot]?.*imap.*Login' $LOGFILE)
|
||||||
print "connectionspop3.draw STACK\n";
|
if [ ! -z "$VALUE" ]; then
|
||||||
print "connectionspop3.min 0\n";
|
echo "$VALUE"
|
||||||
|
else
|
||||||
print "multigraph dovecot_connected\n";
|
echo "0"
|
||||||
print "graph_title Dovecot connected users\n";
|
fi
|
||||||
print "graph_args --base 1000 -l 0 --no-gridfit --slope-mode\n";
|
echo -n
|
||||||
print "graph_vlabel connections\n";
|
######################
|
||||||
print "graph_category mail\n";
|
# POP3 Logins
|
||||||
print "connected.label Connected users\n";
|
######################
|
||||||
print "connected.type GAUGE\n";
|
echo -en "login_pop3.value "
|
||||||
print "connected.draw LINE1\n";
|
VALUE=$(egrep -c '[dovecot]?.*pop3.*Login' $LOGFILE)
|
||||||
print "connected.min 0\n";
|
if [ ! -z "$VALUE" ]; then
|
||||||
print "connectedimap.label IMAP\n";
|
echo "$VALUE"
|
||||||
print "connectedimap.type GAUGE\n";
|
else
|
||||||
print "connectedimap.draw AREA\n";
|
echo "0"
|
||||||
print "connectedimap.min 0\n";
|
fi
|
||||||
print "connectedpop3.label POP3\n";
|
echo -n
|
||||||
print "connectedpop3.type GAUGE\n";
|
|
||||||
print "connectedpop3.draw STACK\n";
|
|
||||||
print "connectedpop3.min 0\n";
|
|
||||||
|
|
||||||
print "multigraph dovecot_logins\n";
|
|
||||||
print "graph_title Dovecot logins\n";
|
|
||||||
print "graph_args --base 1000 -l 0 --no-gridfit --slope-mode\n";
|
|
||||||
print "graph_vlabel logins/5 minute\n";
|
|
||||||
print "graph_category mail\n";
|
|
||||||
print "login.label Logins\n";
|
|
||||||
print "login.type GAUGE\n";
|
|
||||||
print "login.draw LINE1\n";
|
|
||||||
print "login.min 0\n";
|
|
||||||
print "imaplogin.label IMAP logins\n";
|
|
||||||
print "imaplogin.type GAUGE\n";
|
|
||||||
print "imaplogin.draw LINE1\n";
|
|
||||||
print "imaplogin.min 0\n";
|
|
||||||
print "pop3login.label POP3 logins\n";
|
|
||||||
print "pop3login.type GAUGE\n";
|
|
||||||
print "pop3login.draw LINE1\n";
|
|
||||||
print "pop3login.min 0\n";
|
|
||||||
print "tls.label TLS\n";
|
|
||||||
print "tls.type GAUGE\n";
|
|
||||||
print "tls.draw LINE1\n";
|
|
||||||
print "tls.min 0\n";
|
|
||||||
print "ssl.label SSL\n";
|
|
||||||
print "ssl.type GAUGE\n";
|
|
||||||
print "ssl.draw LINE1\n";
|
|
||||||
print "ssl.min 0\n";
|
|
||||||
print "aborted.label Aborted logins\n";
|
|
||||||
print "aborted.type GAUGE\n";
|
|
||||||
print "aborted.draw LINE1\n";
|
|
||||||
print "aborted.min 0\n";
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! -f $logfile and ! -f $rotlogfile) {
|
|
||||||
print "multigraph dovecot_connections\n";
|
|
||||||
print "connections.value U";
|
|
||||||
print "connectionsimap.value U";
|
|
||||||
print "connectionspop3.value U";
|
|
||||||
print "multigraph dovecot_connected\n";
|
|
||||||
print "connected.value U\n";
|
|
||||||
print "connectedimap.value U\n";
|
|
||||||
print "connectedpop3.value U\n";
|
|
||||||
print "multigraph dovecot_logins\n";
|
|
||||||
print "login.value U\n";
|
|
||||||
print "pop3login.value U\n";
|
|
||||||
print "imaplogin.value U\n";
|
|
||||||
print "tls.value U\n";
|
|
||||||
print "ssl.value U\n";
|
|
||||||
print "aborted.value U\n";
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
# dit kan beter maar twee calls zijn toch nodig als we niet zelf aggegreren
|
|
||||||
# suggestie: doveadm who -1 | awk '{print $1" "$2" "$4}' | sort | uniq -c
|
|
||||||
$connectedimap = `$DOVEADM -f flow who | grep imap | wc -l`;
|
|
||||||
$connectedpop3 = `$DOVEADM -f flow who | grep pop3 | wc -l`;
|
|
||||||
$connectionsimap = `$DOVEADM -f flow who -1 | grep imap | wc -l`;
|
|
||||||
$connectionspop3 = `$DOVEADM -f flow who -1 | grep pop3 | wc -l`;
|
|
||||||
|
|
||||||
#trim
|
|
||||||
$connectedimap =~ s/\s+$//;
|
|
||||||
$connectedpop3 =~ s/\s+$//;
|
|
||||||
$connectionsimap =~ s/\s+$//;
|
|
||||||
$connectionspop3 =~ s/\s+$//;
|
|
||||||
|
|
||||||
$connected = $connectedimap + $connectedpop3;
|
|
||||||
$connections = $connectionsimap + $connectionspop3;
|
|
||||||
|
|
||||||
my ($pos) = restore_state();
|
|
||||||
|
|
||||||
$startsize = (stat $logfile)[7];
|
|
||||||
|
|
||||||
if (!defined $pos) {
|
|
||||||
# Initial run.
|
|
||||||
$pos = $startsize;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($startsize < $pos) {
|
|
||||||
# Log rotated
|
|
||||||
parseDovecotfile ($rotlogfile, $pos, (stat $rotlogfile)[7]);
|
|
||||||
$pos = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
parseDovecotfile ($logfile, $pos, $startsize);
|
|
||||||
$pos = $startsize;
|
|
||||||
|
|
||||||
save_state($pos);
|
|
||||||
|
|
||||||
print "multigraph dovecot_connections\n";
|
|
||||||
print "connections.value $connections\n";
|
|
||||||
print "connectionsimap.value $connectionsimap\n";
|
|
||||||
print "connectionspop3.value $connectionspop3\n";
|
|
||||||
print "multigraph dovecot_connected\n";
|
|
||||||
print "connected.value $connected\n";
|
|
||||||
print "connectedimap.value $connectedimap\n";
|
|
||||||
print "connectedpop3.value $connectedpop3\n";
|
|
||||||
print "multigraph dovecot_logins\n";
|
|
||||||
print "login.value $login\n";
|
|
||||||
print "pop3login.value $pop3login\n";
|
|
||||||
print "imaplogin.value $imaplogin\n";
|
|
||||||
print "tls.value $tls\n";
|
|
||||||
print "ssl.value $ssl\n";
|
|
||||||
print "aborted.value $aborted\n";
|
|
||||||
|
|
||||||
|
|
||||||
sub parseDovecotfile {
|
|
||||||
my ($fname, $start, $stop) = @_;
|
|
||||||
open (logf, $fname) or exit 3;
|
|
||||||
seek (logf, $start, 0) or exit 2;
|
|
||||||
|
|
||||||
while (tell (logf) < $stop) {
|
|
||||||
my $line =<logf>;
|
|
||||||
chomp ($line);
|
|
||||||
|
|
||||||
if ( $dovelogfile == 0 and $line !~ m/dovecot/) { next; }
|
|
||||||
else {
|
|
||||||
if ($line =~ m/Aborted/) {
|
|
||||||
$aborted++;
|
|
||||||
|
|
||||||
} elsif ($line =~ m/Login:/) {
|
|
||||||
$login++;
|
|
||||||
|
|
||||||
if ( $line =~ m/TLS/) {
|
|
||||||
$tls++;
|
|
||||||
} elsif ($line =~ m/SSL/) {
|
|
||||||
$ssl++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $line =~ m/pop3-login:/) {
|
|
||||||
$pop3login++;
|
|
||||||
} elsif ($line =~ m/imap-login:/) {
|
|
||||||
$imaplogin++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close(logf);
|
|
||||||
}
|
|
||||||
|
|
||||||
# vim:syntax=perl
|
|
||||||
|
|
|
@ -0,0 +1,242 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
#%# family=auto
|
||||||
|
#%# capabilities=autoconf
|
||||||
|
|
||||||
|
use Munin::Plugin;
|
||||||
|
|
||||||
|
$pos = undef;
|
||||||
|
$connected = 0;
|
||||||
|
$connectedimap = 0;
|
||||||
|
$connectedpop3 = 0;
|
||||||
|
$connections = 0;
|
||||||
|
$connectionsimap = 0;
|
||||||
|
$connectionspop3 = 0;
|
||||||
|
$login = 0;
|
||||||
|
$pop3login = 0;
|
||||||
|
$imaplogin = 0;
|
||||||
|
$tls = 0;
|
||||||
|
$ssl = 0;
|
||||||
|
$aborted = 0;
|
||||||
|
|
||||||
|
($dirname = $0) =~ s/[^\/]+$//;
|
||||||
|
|
||||||
|
$dovelogfile = 0 ;
|
||||||
|
|
||||||
|
$logfile = $ENV{'LOGFILE'} || '/var/log/mail.log';
|
||||||
|
|
||||||
|
if ( $logfile =~ /dovecot/ ) {
|
||||||
|
$dovelogfile = 1 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Use an overrided $PATH for all external programs if needed
|
||||||
|
$DOVEADM = "doveadm";
|
||||||
|
|
||||||
|
if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) {
|
||||||
|
|
||||||
|
if (! -x $DOVEADM) {
|
||||||
|
print "no (no doveadm)\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! -f $logfile) {
|
||||||
|
print "no (logfile $logfile does not exist)\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-r "$logfile") {
|
||||||
|
print "yes\n";
|
||||||
|
exit 0;
|
||||||
|
} else {
|
||||||
|
print "no (logfile not readable)\n";
|
||||||
|
}
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-f "$logfile.0") {
|
||||||
|
$rotlogfile = $logfile . ".0";
|
||||||
|
} elsif (-f "$logfile.1") {
|
||||||
|
$rotlogfile = $logfile . ".1";
|
||||||
|
} elsif (-f "$logfile.01") {
|
||||||
|
$rotlogfile = $logfile . ".01";
|
||||||
|
} else {
|
||||||
|
$rotlogfile = $logfile . ".0";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $ARGV[0] and $ARGV[0] eq "config" ) {
|
||||||
|
print "multigraph dovecot_connections\n";
|
||||||
|
print "graph_title Dovecot connections\n";
|
||||||
|
print "graph_args --base 1000 -l 0 --no-gridfit --slope-mode\n";
|
||||||
|
print "graph_vlabel connections\n";
|
||||||
|
print "graph_category mail\n";
|
||||||
|
print "connections.label Connections open\n";
|
||||||
|
print "connections.type GAUGE\n";
|
||||||
|
print "connections.draw LINE1\n";
|
||||||
|
print "connections.min 0\n";
|
||||||
|
print "connectionsimap.label IMAP\n";
|
||||||
|
print "connectionsimap.type GAUGE\n";
|
||||||
|
print "connectionsimap.draw AREA\n";
|
||||||
|
print "connectionsimap.min 0\n";
|
||||||
|
print "connectionspop3.label POP3\n";
|
||||||
|
print "connectionspop3.type GAUGE\n";
|
||||||
|
print "connectionspop3.draw STACK\n";
|
||||||
|
print "connectionspop3.min 0\n";
|
||||||
|
|
||||||
|
print "multigraph dovecot_connected\n";
|
||||||
|
print "graph_title Dovecot connected users\n";
|
||||||
|
print "graph_args --base 1000 -l 0 --no-gridfit --slope-mode\n";
|
||||||
|
print "graph_vlabel connections\n";
|
||||||
|
print "graph_category mail\n";
|
||||||
|
print "connected.label Connected users\n";
|
||||||
|
print "connected.type GAUGE\n";
|
||||||
|
print "connected.draw LINE1\n";
|
||||||
|
print "connected.min 0\n";
|
||||||
|
print "connectedimap.label IMAP\n";
|
||||||
|
print "connectedimap.type GAUGE\n";
|
||||||
|
print "connectedimap.draw AREA\n";
|
||||||
|
print "connectedimap.min 0\n";
|
||||||
|
print "connectedpop3.label POP3\n";
|
||||||
|
print "connectedpop3.type GAUGE\n";
|
||||||
|
print "connectedpop3.draw STACK\n";
|
||||||
|
print "connectedpop3.min 0\n";
|
||||||
|
|
||||||
|
print "multigraph dovecot_logins\n";
|
||||||
|
print "graph_title Dovecot logins\n";
|
||||||
|
print "graph_args --base 1000 -l 0 --no-gridfit --slope-mode\n";
|
||||||
|
print "graph_vlabel logins/5 minute\n";
|
||||||
|
print "graph_category mail\n";
|
||||||
|
print "login.label Logins\n";
|
||||||
|
print "login.type GAUGE\n";
|
||||||
|
print "login.draw LINE1\n";
|
||||||
|
print "login.min 0\n";
|
||||||
|
print "imaplogin.label IMAP logins\n";
|
||||||
|
print "imaplogin.type GAUGE\n";
|
||||||
|
print "imaplogin.draw LINE1\n";
|
||||||
|
print "imaplogin.min 0\n";
|
||||||
|
print "pop3login.label POP3 logins\n";
|
||||||
|
print "pop3login.type GAUGE\n";
|
||||||
|
print "pop3login.draw LINE1\n";
|
||||||
|
print "pop3login.min 0\n";
|
||||||
|
print "tls.label TLS\n";
|
||||||
|
print "tls.type GAUGE\n";
|
||||||
|
print "tls.draw LINE1\n";
|
||||||
|
print "tls.min 0\n";
|
||||||
|
print "ssl.label SSL\n";
|
||||||
|
print "ssl.type GAUGE\n";
|
||||||
|
print "ssl.draw LINE1\n";
|
||||||
|
print "ssl.min 0\n";
|
||||||
|
print "aborted.label Aborted logins\n";
|
||||||
|
print "aborted.type GAUGE\n";
|
||||||
|
print "aborted.draw LINE1\n";
|
||||||
|
print "aborted.min 0\n";
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! -f $logfile and ! -f $rotlogfile) {
|
||||||
|
print "multigraph dovecot_connections\n";
|
||||||
|
print "connections.value U";
|
||||||
|
print "connectionsimap.value U";
|
||||||
|
print "connectionspop3.value U";
|
||||||
|
print "multigraph dovecot_connected\n";
|
||||||
|
print "connected.value U\n";
|
||||||
|
print "connectedimap.value U\n";
|
||||||
|
print "connectedpop3.value U\n";
|
||||||
|
print "multigraph dovecot_logins\n";
|
||||||
|
print "login.value U\n";
|
||||||
|
print "pop3login.value U\n";
|
||||||
|
print "imaplogin.value U\n";
|
||||||
|
print "tls.value U\n";
|
||||||
|
print "ssl.value U\n";
|
||||||
|
print "aborted.value U\n";
|
||||||
|
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# dit kan beter maar twee calls zijn toch nodig als we niet zelf aggegreren
|
||||||
|
# suggestie: doveadm who -1 | awk '{print $1" "$2" "$4}' | sort | uniq -c
|
||||||
|
$connectedimap = `$DOVEADM -f flow who | grep imap | wc -l`;
|
||||||
|
$connectedpop3 = `$DOVEADM -f flow who | grep pop3 | wc -l`;
|
||||||
|
$connectionsimap = `$DOVEADM -f flow who -1 | grep imap | wc -l`;
|
||||||
|
$connectionspop3 = `$DOVEADM -f flow who -1 | grep pop3 | wc -l`;
|
||||||
|
|
||||||
|
#trim
|
||||||
|
$connectedimap =~ s/\s+$//;
|
||||||
|
$connectedpop3 =~ s/\s+$//;
|
||||||
|
$connectionsimap =~ s/\s+$//;
|
||||||
|
$connectionspop3 =~ s/\s+$//;
|
||||||
|
|
||||||
|
$connected = $connectedimap + $connectedpop3;
|
||||||
|
$connections = $connectionsimap + $connectionspop3;
|
||||||
|
|
||||||
|
my ($pos) = restore_state();
|
||||||
|
|
||||||
|
$startsize = (stat $logfile)[7];
|
||||||
|
|
||||||
|
if (!defined $pos) {
|
||||||
|
# Initial run.
|
||||||
|
$pos = $startsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($startsize < $pos) {
|
||||||
|
# Log rotated
|
||||||
|
parseDovecotfile ($rotlogfile, $pos, (stat $rotlogfile)[7]);
|
||||||
|
$pos = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
parseDovecotfile ($logfile, $pos, $startsize);
|
||||||
|
$pos = $startsize;
|
||||||
|
|
||||||
|
save_state($pos);
|
||||||
|
|
||||||
|
print "multigraph dovecot_connections\n";
|
||||||
|
print "connections.value $connections\n";
|
||||||
|
print "connectionsimap.value $connectionsimap\n";
|
||||||
|
print "connectionspop3.value $connectionspop3\n";
|
||||||
|
print "multigraph dovecot_connected\n";
|
||||||
|
print "connected.value $connected\n";
|
||||||
|
print "connectedimap.value $connectedimap\n";
|
||||||
|
print "connectedpop3.value $connectedpop3\n";
|
||||||
|
print "multigraph dovecot_logins\n";
|
||||||
|
print "login.value $login\n";
|
||||||
|
print "pop3login.value $pop3login\n";
|
||||||
|
print "imaplogin.value $imaplogin\n";
|
||||||
|
print "tls.value $tls\n";
|
||||||
|
print "ssl.value $ssl\n";
|
||||||
|
print "aborted.value $aborted\n";
|
||||||
|
|
||||||
|
|
||||||
|
sub parseDovecotfile {
|
||||||
|
my ($fname, $start, $stop) = @_;
|
||||||
|
open (logf, $fname) or exit 3;
|
||||||
|
seek (logf, $start, 0) or exit 2;
|
||||||
|
|
||||||
|
while (tell (logf) < $stop) {
|
||||||
|
my $line =<logf>;
|
||||||
|
chomp ($line);
|
||||||
|
|
||||||
|
if ( $dovelogfile == 0 and $line !~ m/dovecot/) { next; }
|
||||||
|
else {
|
||||||
|
if ($line =~ m/Aborted/) {
|
||||||
|
$aborted++;
|
||||||
|
|
||||||
|
} elsif ($line =~ m/Login:/) {
|
||||||
|
$login++;
|
||||||
|
|
||||||
|
if ( $line =~ m/TLS/) {
|
||||||
|
$tls++;
|
||||||
|
} elsif ($line =~ m/SSL/) {
|
||||||
|
$ssl++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $line =~ m/pop3-login:/) {
|
||||||
|
$pop3login++;
|
||||||
|
} elsif ($line =~ m/imap-login:/) {
|
||||||
|
$imaplogin++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close(logf);
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim:syntax=perl
|
|
@ -89,7 +89,7 @@ if ( exists $ARGV[0] && 'config' eq $ARGV[0] ) {
|
||||||
multigraph hhvm_${graphName}_threads
|
multigraph hhvm_${graphName}_threads
|
||||||
graph_title HHVM Threads ${name}
|
graph_title HHVM Threads ${name}
|
||||||
graph_args --base 1000
|
graph_args --base 1000
|
||||||
graph_category hhvm
|
graph_category php
|
||||||
threads.label Threads
|
threads.label Threads
|
||||||
load.label Active Workers
|
load.label Active Workers
|
||||||
queued.label Queued Jobs
|
queued.label Queued Jobs
|
||||||
|
@ -97,7 +97,7 @@ queued.label Queued Jobs
|
||||||
multigraph hhvm_${graphName}_sizes
|
multigraph hhvm_${graphName}_sizes
|
||||||
graph_title HHVM Sizes ${name}
|
graph_title HHVM Sizes ${name}
|
||||||
graph_args --base 1024
|
graph_args --base 1024
|
||||||
graph_category hhvm
|
graph_category php
|
||||||
hhbc-roarena-capac.label HHBC Arena Capacity
|
hhbc-roarena-capac.label HHBC Arena Capacity
|
||||||
tc-hotsize.label TC Hot Size
|
tc-hotsize.label TC Hot Size
|
||||||
tc-hotsize.info Translation Cache Hot Size
|
tc-hotsize.info Translation Cache Hot Size
|
||||||
|
|
|
@ -64,7 +64,7 @@ if ($ARGV[0] && $ARGV[0] eq "autoconf") {
|
||||||
print "graph_title HTTP response time\n";
|
print "graph_title HTTP response time\n";
|
||||||
}
|
}
|
||||||
print "graph_vlabel ms\n";
|
print "graph_vlabel ms\n";
|
||||||
print "graph_category HTTP\n";
|
print "graph_category webserver\n";
|
||||||
print "graph_info This graph shows the response time in milliseconds, to load a web page\n";
|
print "graph_info This graph shows the response time in milliseconds, to load a web page\n";
|
||||||
print "timespent.label timespent\n";
|
print "timespent.label timespent\n";
|
||||||
print "timespent.type GAUGE\n";
|
print "timespent.type GAUGE\n";
|
||||||
|
|
|
@ -92,7 +92,7 @@ if ($ARGV[0] && $ARGV[0] eq "autoconf") {
|
||||||
}
|
}
|
||||||
print "graph_scale no\n";
|
print "graph_scale no\n";
|
||||||
print "graph_vlabel ms\n";
|
print "graph_vlabel ms\n";
|
||||||
print "graph_category HTTP\n";
|
print "graph_category webserver\n";
|
||||||
print "graph_info This graph shows the response time in milliseconds, to load a web page\n";
|
print "graph_info This graph shows the response time in milliseconds, to load a web page\n";
|
||||||
for ($i=0; $i <= $max_index; ++$i) {
|
for ($i=0; $i <= $max_index; ++$i) {
|
||||||
$vhost = $url_array[$i];
|
$vhost = $url_array[$i];
|
||||||
|
|
|
@ -64,7 +64,7 @@ file_name=`basename $0 | sed 's/^vhost_requests_//g'`
|
||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
config)
|
config)
|
||||||
echo graph_category http
|
echo graph_category webserver
|
||||||
echo graph_title Requests by Status Code $file_name
|
echo graph_title Requests by Status Code $file_name
|
||||||
echo graph_vlabel Nr of Requests
|
echo graph_vlabel Nr of Requests
|
||||||
echo S200.label 200 OK
|
echo S200.label 200 OK
|
||||||
|
|
|
@ -143,7 +143,7 @@ if [ "${1}" = "config" ]; then
|
||||||
echo "graph_args --base 1000 -l 0"
|
echo "graph_args --base 1000 -l 0"
|
||||||
echo "graph_scale no"
|
echo "graph_scale no"
|
||||||
echo "graph_vlabel Load time in seconds"
|
echo "graph_vlabel Load time in seconds"
|
||||||
echo "graph_category http"
|
echo "graph_category webserver"
|
||||||
echo "graph_info This graph shows load time in seconds of one or more urls"
|
echo "graph_info This graph shows load time in seconds of one or more urls"
|
||||||
I=1
|
I=1
|
||||||
for name in ${names}; do
|
for name in ${names}; do
|
||||||
|
|
|
@ -72,7 +72,7 @@ sub print_config {
|
||||||
print("graph_args --base 1024 --lower-limit 0\n");
|
print("graph_args --base 1024 --lower-limit 0\n");
|
||||||
print("graph_vlabel MB\n");
|
print("graph_vlabel MB\n");
|
||||||
print("graph_scale no\n");
|
print("graph_scale no\n");
|
||||||
print("graph_category kamailio\n");
|
print("graph_category voip\n");
|
||||||
print("graph_info The graph describes the usage of memory in Voxtrot Sip Server.\n");
|
print("graph_info The graph describes the usage of memory in Voxtrot Sip Server.\n");
|
||||||
print("ram_total.label total (kam+fs+rtp)\n");
|
print("ram_total.label total (kam+fs+rtp)\n");
|
||||||
print("ram_freeswitch.label freeswitch\n");
|
print("ram_freeswitch.label freeswitch\n");
|
||||||
|
|
|
@ -143,7 +143,7 @@ sub print_config {
|
||||||
print("graph_args --base 1024 --lower-limit 0\n");
|
print("graph_args --base 1024 --lower-limit 0\n");
|
||||||
print("graph_vlabel MB\n");
|
print("graph_vlabel MB\n");
|
||||||
print("graph_scale no\n");
|
print("graph_scale no\n");
|
||||||
print("graph_category kamailio\n");
|
print("graph_category voip\n");
|
||||||
print("graph_info The graph describes the usage of shared memory.\n");
|
print("graph_info The graph describes the usage of shared memory.\n");
|
||||||
print("shmem_total.label total\n");
|
print("shmem_total.label total\n");
|
||||||
print("shmem_used.label used\n");
|
print("shmem_used.label used\n");
|
||||||
|
|
|
@ -141,7 +141,7 @@ sub print_config {
|
||||||
print("graph_args --base 1000 --lower-limit 0\n");
|
print("graph_args --base 1000 --lower-limit 0\n");
|
||||||
print("graph_vlabel user/transaction\n");
|
print("graph_vlabel user/transaction\n");
|
||||||
print("graph_scale no\n");
|
print("graph_scale no\n");
|
||||||
print("graph_category kamailio\n");
|
print("graph_category voip\n");
|
||||||
print("graph_info The graph describes the number of users/transaction on kamailio.\n");
|
print("graph_info The graph describes the number of users/transaction on kamailio.\n");
|
||||||
|
|
||||||
print("users.label users\n");
|
print("users.label users\n");
|
||||||
|
|
|
@ -1,126 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
#
|
|
||||||
# Munin Plugin
|
|
||||||
# to count logins to your dovecot mailserver
|
|
||||||
#
|
|
||||||
# Created by Dominik Schulz <lkml@ds.gauner.org>
|
|
||||||
# http://developer.gauner.org/munin/
|
|
||||||
# Contributions by:
|
|
||||||
# - Stephane Enten <tuf@delyth.net>
|
|
||||||
# - Steve Schnepp <steve.schnepp@pwkf.org>
|
|
||||||
#
|
|
||||||
# Parameters understood:
|
|
||||||
#
|
|
||||||
# config (required)
|
|
||||||
# autoconf (optional - used by munin-config)
|
|
||||||
#
|
|
||||||
# Config variables:
|
|
||||||
#
|
|
||||||
# logfile - Where to find the syslog file
|
|
||||||
#
|
|
||||||
# Add the following line to a file in /etc/munin/plugin-conf.d:
|
|
||||||
# env.logfile /var/log/your/logfile.log
|
|
||||||
#
|
|
||||||
# Magic markers (optional - used by munin-config and installation scripts):
|
|
||||||
#
|
|
||||||
#%# family=auto
|
|
||||||
#%# capabilities=autoconf
|
|
||||||
|
|
||||||
######################
|
|
||||||
# Configuration
|
|
||||||
######################
|
|
||||||
EXPR_BIN=/usr/bin/expr
|
|
||||||
LOGFILE=${logfile:-/var/log/mail.log}
|
|
||||||
######################
|
|
||||||
|
|
||||||
if [ "$1" = "autoconf" ]; then
|
|
||||||
echo yes
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" = "config" ]; then
|
|
||||||
echo 'graph_title Dovecot Logins'
|
|
||||||
echo 'graph_category Mail'
|
|
||||||
echo 'graph_args --base 1000 -l 0'
|
|
||||||
echo 'graph_vlabel Login Counters'
|
|
||||||
|
|
||||||
for t in Total TLS SSL IMAP POP3
|
|
||||||
do
|
|
||||||
field=$(echo $t | tr '[:upper:]' '[:lower:]')
|
|
||||||
echo "login_$field.label $t Logins"
|
|
||||||
echo "login_$field.type DERIVE"
|
|
||||||
echo "login_$field.min 0"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo 'connected.label Connected Users'
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
######################
|
|
||||||
# Total Logins
|
|
||||||
######################
|
|
||||||
echo -en "login_total.value "
|
|
||||||
VALUE=$(egrep -c '[dovecot]?.*Login' $LOGFILE)
|
|
||||||
if [ ! -z "$VALUE" ]; then
|
|
||||||
echo "$VALUE"
|
|
||||||
else
|
|
||||||
echo "0"
|
|
||||||
fi
|
|
||||||
echo -n
|
|
||||||
######################
|
|
||||||
# Connected Users
|
|
||||||
######################
|
|
||||||
DISCONNECTS=$(egrep -c '[dovecot]?.*Disconnected' $LOGFILE)
|
|
||||||
CONNECTS=$(egrep -c '[dovecot]?.*Login' $LOGFILE)
|
|
||||||
VALUE=$($EXPR_BIN $CONNECTS - $DISCONNECTS)
|
|
||||||
if [ -z "$VALUE" ] || [ "$VALUE" -lt 0 ]; then
|
|
||||||
VALUE=0
|
|
||||||
fi
|
|
||||||
echo -en "connected.value "
|
|
||||||
echo $VALUE
|
|
||||||
echo -n
|
|
||||||
######################
|
|
||||||
# TLS Logins
|
|
||||||
######################
|
|
||||||
echo -en "login_tls.value "
|
|
||||||
VALUE=$(egrep -c '[dovecot]?.*Login.*TLS' $LOGFILE)
|
|
||||||
if [ ! -z "$VALUE" ]; then
|
|
||||||
echo "$VALUE"
|
|
||||||
else
|
|
||||||
echo "0"
|
|
||||||
fi
|
|
||||||
echo -n
|
|
||||||
######################
|
|
||||||
# SSL Logins
|
|
||||||
######################
|
|
||||||
echo -en "login_ssl.value "
|
|
||||||
VALUE=$(egrep -c '[dovecot]?.*Login.*SSL' $LOGFILE)
|
|
||||||
if [ ! -z "$VALUE" ]; then
|
|
||||||
echo "$VALUE"
|
|
||||||
else
|
|
||||||
echo "0"
|
|
||||||
fi
|
|
||||||
echo -n
|
|
||||||
######################
|
|
||||||
# IMAP Logins
|
|
||||||
######################
|
|
||||||
echo -en "login_imap.value "
|
|
||||||
VALUE=$(egrep -c '[dovecot]?.*imap.*Login' $LOGFILE)
|
|
||||||
if [ ! -z "$VALUE" ]; then
|
|
||||||
echo "$VALUE"
|
|
||||||
else
|
|
||||||
echo "0"
|
|
||||||
fi
|
|
||||||
echo -n
|
|
||||||
######################
|
|
||||||
# POP3 Logins
|
|
||||||
######################
|
|
||||||
echo -en "login_pop3.value "
|
|
||||||
VALUE=$(egrep -c '[dovecot]?.*pop3.*Login' $LOGFILE)
|
|
||||||
if [ ! -z "$VALUE" ]; then
|
|
||||||
echo "$VALUE"
|
|
||||||
else
|
|
||||||
echo "0"
|
|
||||||
fi
|
|
||||||
echo -n
|
|
|
@ -29,7 +29,7 @@
|
||||||
echo 'graph_args --base 1000 -l 0'
|
echo 'graph_args --base 1000 -l 0'
|
||||||
echo 'graph_scale no'
|
echo 'graph_scale no'
|
||||||
echo 'graph_vlabel Up- / Downstream in kBit/s'
|
echo 'graph_vlabel Up- / Downstream in kBit/s'
|
||||||
echo 'graph_category Http'
|
echo 'graph_category network'
|
||||||
echo 'download.label Downstream'
|
echo 'download.label Downstream'
|
||||||
echo 'upload.label Upstream'
|
echo 'upload.label Upstream'
|
||||||
echo 'graph_info Information from the top_status.htm of the Speedport 300'
|
echo 'graph_info Information from the top_status.htm of the Speedport 300'
|
||||||
|
|
Loading…
Reference in New Issue