diff -urNp munin-2.0.25.orig/dists/tarball/plugins.conf munin-2.0.25/dists/tarball/plugins.conf --- munin-2.0.25.orig/dists/tarball/plugins.conf 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/dists/tarball/plugins.conf 2015-09-08 10:05:48.873593251 +0000 @@ -14,6 +14,9 @@ # # +[*] +env.logtail /usr/bin/logtail + [mysql*] #env.mysqlopts -u someuser @@ -31,3 +34,128 @@ user root [postfix*] user root +env.logdir /var/log +env.logfile maillog + +[netstat] +group proc + +[amavis*] +user root +env.amavislog /var/log/maillog +env.logfile /var/log/maillog + +[courier*] +user root +env.logfile /var/log/maillog + +[mailman] +user mailman +group (mailman) + +[bind9_rndc] +group (named) +env.querystats /var/lib/named/named.stats + +[squid*] +group (squid) +#env.squidport 3128 +#env.squiduser manager +#env.squidpasswd + +[fw*] +group proc + +[if*] +group proc + +[dhcpd3] +user root +env.leasefile /var/lib/dhcpd/dhcpd.leases +env.configfile /etc/dhcpd.conf + +[ip_*] +user root + +[munin*] +user munin + +[ping_*] +group adm + +[port_*] +group proc + +[processes] +group proc + +[ps_*] +group proc + +[psu_*] +group proc + +[nfs*] +group proc + +[entropy] +group proc + +[open_*] +group proc + +[nut*] +env.upsname SmartUPS +env.upshost 127.0.0.1 + +[df*] +#user root # if you have mode 0000 /vservers dir +group proc + +# Sane defaults for plugins from MuninExchange + +[apache_smaps] +#user root # if you have kernel with grsecurity +group proc +env.pname httpd.prefork +env.puser http + +[dovecot] +user root +env.logfile /var/log/maillog + +[php_eaccelerator] +env.user admin +env.password eAccelerator +env.url http://127.0.0.1/eaccelerator/control.php + +[proftpd*] +user root +env.logfile /var/log/xferlog + +[vsftpd*] +user root +env.logfile /var/log/vsftpd.log + +[postgrey*] +user root +env.logfile /var/log/maillog + +[nagiosstatus] +user root +env.statuslog /var/lib/nagios/status.dat + +[freeradius] +user root +env.radius_log /var/log/freeradius/radius.log + +[ipmitool_sensor*] +user root +timeout 20 + +[openvpn_clients] +user root +env.logfile /var/log/openvpn/status.log + +[cupsys_pages] +user root diff -urNp munin-2.0.25.orig/plugins/node.d/amavis.in munin-2.0.25/plugins/node.d/amavis.in --- munin-2.0.25.orig/plugins/node.d/amavis.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/amavis.in 2015-09-08 10:05:48.874593251 +0000 @@ -77,13 +77,12 @@ GPLv2 =cut mktempfile () { - cmd=`echo $MUNIN_MKTEMP | sed s/\\$1/$1/` - $cmd + mktemp -p /tmp/ $1 } AMAVIS_LOG=${amavislog:-/var/log/mail/mail.info} LOGTAIL=${logtail:-logtail} -STATEFILE=$MUNIN_PLUGSTATE/amavis.offset +STATEFILE=@@PLUGSTATE@@/amavis.offset if [ "$1" = "autoconf" ]; then if [ -f "${AMAVIS_LOG}" -a -n "${LOGTAIL}" -a -x "${LOGTAIL}" ] ; then @@ -106,7 +105,7 @@ fi if [ "$1" = "config" ]; then echo 'graph_title Amavis filter statistics' - echo 'graph_vlabel \#' + echo 'graph_vlabel mails' echo 'graph_category antivirus' echo 'virus.label virus' echo 'virus.info Number of viruses caught in email' @@ -124,7 +123,7 @@ virus=U spamm=U spams=U -TEMP_FILE=$(mktempfile munin-amavis.XXXXXX) +TEMP_FILE=$(mktempfile munin-amavis.XXXXXXXXXX) if [ -n "$TEMP_FILE" -a -f "$TEMP_FILE" ] then diff -urNp munin-2.0.25.orig/plugins/node.d/apache_accesses.in munin-2.0.25/plugins/node.d/apache_accesses.in --- munin-2.0.25.orig/plugins/node.d/apache_accesses.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/apache_accesses.in 2015-09-08 10:05:48.875593251 +0000 @@ -89,6 +89,7 @@ if (! eval "require LWP::UserAgent;") my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/server-status?auto"; my @PORTS = exists $ENV{'ports'} ? split(' ', $ENV{'ports'}) : (80); +my $HOST = exists $ENV{'host'} ? $ENV{'host'} : undef; if ( defined $ARGV[0] and $ARGV[0] eq "autoconf" ) { @@ -129,7 +130,11 @@ if ( defined $ARGV[0] and $ARGV[0] eq "a if ( defined $ARGV[0] and $ARGV[0] eq "config" ) { - print "graph_title Apache accesses\n"; + print "graph_title Apache accesses"; + if ( $HOST ) { + print " for $HOST"; + } + print "\n"; print "graph_args --base 1000\n"; print "graph_vlabel accesses / \${graph_period}\n"; print "graph_category apache\n"; diff -urNp munin-2.0.25.orig/plugins/node.d/apache_processes.in munin-2.0.25/plugins/node.d/apache_processes.in --- munin-2.0.25.orig/plugins/node.d/apache_processes.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/apache_processes.in 2015-09-08 10:05:48.876593251 +0000 @@ -96,6 +96,7 @@ if (! eval "require LWP::UserAgent;") my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/server-status?auto"; my @PORTS = exists $ENV{'ports'} ? split(' ', $ENV{'ports'}) : (80); +my $HOST = exists $ENV{'host'} ? $ENV{'host'} : undef; my $SHOWFREE = !exists $ENV{'showfree'} || $ENV{'showfree'}; if ( defined $ARGV[0] and $ARGV[0] eq "autoconf" ) @@ -136,7 +137,11 @@ if ( defined $ARGV[0] and $ARGV[0] eq "a if ( defined $ARGV[0] and $ARGV[0] eq "config" ) { - print "graph_title Apache processes\n"; + print "graph_title Apache processes"; + if ( $HOST ) { + print " for $HOST"; + } + print "\n"; print "graph_args --base 1000 -l 0\n"; print "graph_category apache\n"; print "graph_order "; diff -urNp munin-2.0.25.orig/plugins/node.d/apache_volume.in munin-2.0.25/plugins/node.d/apache_volume.in --- munin-2.0.25.orig/plugins/node.d/apache_volume.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/apache_volume.in 2015-09-08 10:05:48.876593251 +0000 @@ -89,6 +89,7 @@ if (! eval "require LWP::UserAgent;") my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/server-status?auto"; my @PORTS = exists $ENV{'ports'} ? split(' ', $ENV{'ports'}) : (80); +my $HOST = exists $ENV{'host'} ? $ENV{'host'} : undef; if ( defined $ARGV[0] and $ARGV[0] eq "autoconf" ) { @@ -129,7 +130,11 @@ if ( defined $ARGV[0] and $ARGV[0] eq "a if ( defined $ARGV[0] and $ARGV[0] eq "config" ) { - print "graph_title Apache volume\n"; + print "graph_title Apache volume"; + if ( $HOST ) { + print " for $HOST"; + } + print "\n"; print "graph_args --base 1000\n"; print "graph_vlabel bytes per \${graph_period}\n"; print "graph_category apache\n"; diff -urNp munin-2.0.25.orig/plugins/node.d/bind9.in munin-2.0.25/plugins/node.d/bind9.in --- munin-2.0.25.orig/plugins/node.d/bind9.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/bind9.in 2015-09-08 10:05:48.877593251 +0000 @@ -53,7 +53,7 @@ GPLv2 use strict; my $QUERYLOG = $ENV{logfile} || '/var/log/bind9/query.log'; -my $STATEFILE= "$ENV{MUNIN_PLUGSTATE}/bind9.state"; +my $STATEFILE= "@@PLUGSTATE@@/bind9.state"; my $OTHER=0; my %IN; @@ -63,7 +63,7 @@ sub get_state { open(Q, ">", $STATEFILE); close(Q); } - open(Q,"< $STATEFILE") or die ("Cannot open state file"); + open(Q,"< $STATEFILE") or return ("Cannot open state file"); while () { chomp; my ($q,$n) = split(/\s+/,$_,2); diff -urNp munin-2.0.25.orig/plugins/node.d/courier_.in munin-2.0.25/plugins/node.d/courier_.in --- munin-2.0.25.orig/plugins/node.d/courier_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/courier_.in 2015-09-08 10:05:48.877593251 +0000 @@ -55,7 +55,7 @@ Unknown COURIER_LOG=${logfile:-/var/log/mail.log} SERVICE=${service:-`basename $0 | sed 's/^courier_//g'`} OFFSET_FILE=${MUNIN_PLUGSTATE}/courier_${SERVICE}.offset -LOGTAIL=${logtail:-/usr/sbin/logtail} +LOGTAIL=${logtail:-`which logtail`} mktempfile () { @@MKTEMP@@ diff -urNp munin-2.0.25.orig/plugins/node.d/courier_mta_mailstats.in munin-2.0.25/plugins/node.d/courier_mta_mailstats.in --- munin-2.0.25.orig/plugins/node.d/courier_mta_mailstats.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/courier_mta_mailstats.in 2015-09-08 10:05:48.878593251 +0000 @@ -108,7 +108,9 @@ if(!defined $pos) { if($startsize < $pos) { # Log rotated - parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); + if (-f $rotlogfile) { + parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); + } $pos = 0; } diff -urNp munin-2.0.25.orig/plugins/node.d/courier_mta_mailvolume.in munin-2.0.25/plugins/node.d/courier_mta_mailvolume.in --- munin-2.0.25.orig/plugins/node.d/courier_mta_mailvolume.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/courier_mta_mailvolume.in 2015-09-08 10:05:48.878593251 +0000 @@ -98,7 +98,9 @@ if(!defined $pos) { if($startsize < $pos) { # Log rotated - parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); + if (-f $rotlogfile) { + parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); + } $pos = 0; } diff -urNp munin-2.0.25.orig/plugins/node.d/cupsys_pages.in munin-2.0.25/plugins/node.d/cupsys_pages.in --- munin-2.0.25.orig/plugins/node.d/cupsys_pages.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/cupsys_pages.in 2015-09-08 10:05:48.878593251 +0000 @@ -100,7 +100,9 @@ if (!defined $pos) { } if ($startsize < $pos) { # Log rotated - parselogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); + if (-f $rotlogfile) { + parselogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); + } $pos = 0; } @@ -146,7 +148,7 @@ sub parselogfile { while (tell(LOGFILE) < $stop) { my $line = ; chomp ($line); - if ($line =~ /^(\S+)\s+\S+\s+\d+\s+\[[^\]]+\]\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)/) { + if ($line =~ /^(\S+)\s+\S+\s+\S+\s+\[[^\]]+\]\s+(\d+)\s+(\d+)\s+(.+)$/) { if(!defined($printers{$1}) && keys(%printers) < $MAXLABEL) { $printers{$1} += int($2)*int($3); } elsif(defined($printers{$1})) { diff -urNp munin-2.0.25.orig/plugins/node.d/foldingathome_rank.in munin-2.0.25/plugins/node.d/foldingathome_rank.in --- munin-2.0.25.orig/plugins/node.d/foldingathome_rank.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/foldingathome_rank.in 2015-09-08 10:05:48.879593251 +0000 @@ -13,7 +13,7 @@ #%# family=contrib #%# capabilities=autoconf -statefile=$MUNIN_PLUGSTATE/plugin-fah_rank.state +statefile=@@PLUGSTATE@@/plugin-fah_rank.state if [ "$1" = "autoconf" ]; then # No real check of anything diff -urNp munin-2.0.25.orig/plugins/node.d/mailman.in munin-2.0.25/plugins/node.d/mailman.in --- munin-2.0.25.orig/plugins/node.d/mailman.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/mailman.in 2015-09-08 10:05:48.879593251 +0000 @@ -38,7 +38,13 @@ $members = 0; # System paths $logfile = $ENV{'logfile'} || "/var/log/mailman/post"; $libdir = $ENV{'libdir'} || "/var/lib/mailman"; -$lister = $ENV{'lister'} || "/usr/lib/mailman/bin/list_members"; +$lister = $ENV{'lister'} || { + if (-f "/usr/lib64/mailman/bin/list_members") { + $lister = "/usr/lib64/mailman/bin/list_members"; + } else { + $lister = "/usr/lib/mailman/bin/list_members"; + } +} if (-f "$logfile.0") { @@ -94,7 +100,9 @@ if(!defined $pos) { $startsize = 0; } elsif($startsize < $pos) { # Log rotated - parseMailmanLog($rotlogfile, $pos, (stat $rotlogfile)[7]); + if (-f $rotlogfile) { + parseMailmanLog($rotlogfile, $pos, (stat $rotlogfile)[7]); + } $pos = 0; } diff -urNp munin-2.0.25.orig/plugins/node.d/mysql_.in munin-2.0.25/plugins/node.d/mysql_.in --- munin-2.0.25.orig/plugins/node.d/mysql_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/mysql_.in 2015-09-08 10:05:48.881593251 +0000 @@ -39,6 +39,7 @@ Non-default example: env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306 env.mysqluser root env.mysqlpassword geheim + env.mysqlnosuperpriv 1 env.cachenamespace munin_mysql_pri [mysql2_*] env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=13306 @@ -156,6 +157,7 @@ my %config = ( 'user' => $ENV{'mysqluser'} || 'root', 'password' => $ENV{'mysqlpassword'} || '', 'cache_namespace' => $ENV{'cachenamespace'} || 'munin_mysql', + 'nosuper' => $ENV{'mysqlnosuperpriv'} || 0, ); @@ -927,8 +929,10 @@ sub update_data { update_variables($dbh); update_innodb($dbh); - update_master($dbh); - update_slave($dbh); + if (!$config{nosuper}) { + update_master($dbh); + update_slave($dbh); + } $shared_memory_cache->set('data', $data); } diff -urNp munin-2.0.25.orig/plugins/node.d/mysql_innodb.in munin-2.0.25/plugins/node.d/mysql_innodb.in --- munin-2.0.25.orig/plugins/node.d/mysql_innodb.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/mysql_innodb.in 2015-09-08 10:05:48.881593251 +0000 @@ -1,4 +1,4 @@ -#!@@GOODSH@@ +#!@@BASH@@ : << =cut diff -urNp munin-2.0.25.orig/plugins/node.d/mysql_slowqueries.in munin-2.0.25/plugins/node.d/mysql_slowqueries.in --- munin-2.0.25.orig/plugins/node.d/mysql_slowqueries.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/mysql_slowqueries.in 2015-09-08 10:05:48.882593251 +0000 @@ -64,5 +64,5 @@ if [ "$1" = "config" ]; then exit 0 fi -/usr/bin/printf "queries.value " +/bin/printf "queries.value " ($MYSQLADMIN $MYSQLOPTS status 2>/dev/null || echo a a a a a a a a U) | awk '{print $9}' diff -urNp munin-2.0.25.orig/plugins/node.d/mysql_threads.in munin-2.0.25/plugins/node.d/mysql_threads.in --- munin-2.0.25.orig/plugins/node.d/mysql_threads.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/mysql_threads.in 2015-09-08 10:05:48.882593251 +0000 @@ -74,5 +74,5 @@ if [ "$1" = "config" ]; then exit 0 fi -/usr/bin/printf "threads.value " +/bin/printf "threads.value " ($MYSQLADMIN $MYSQLOPTS status 2>/dev/null || echo 'a a a U') | awk '{print $4}' diff -urNp munin-2.0.25.orig/plugins/node.d/ntp_.in munin-2.0.25/plugins/node.d/ntp_.in --- munin-2.0.25.orig/plugins/node.d/ntp_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/ntp_.in 2015-09-08 10:05:48.883593251 +0000 @@ -57,26 +57,26 @@ use Net::DNS; use Net::IP; if ($ARGV[0] and $ARGV[0] eq "autoconf") { - `ntpq -c help >/dev/null 2>/dev/null`; + `/usr/sbin/ntpq -c help >/dev/null 2>/dev/null`; if ($CHILD_ERROR eq "0") { - if (`ntpq -n -c peers | wc -l` > 0) { + if (`/usr/sbin/ntpq -n -c peers | wc -l` > 0) { print "yes\n"; exit 0; } else { - print "no (ntpq -p returned no peers)\n"; + print "no (/usr/sbin/ntpq -p returned no peers)\n"; exit 0; } } else { - print "no (ntpq not found)\n"; + print "no (/usr/sbin/ntpq not found)\n"; exit 0; } } if ($ARGV[0] and $ARGV[0] eq "suggest") { - foreach my $line (`ntpq -c associations`) { + foreach my $line (`/usr/sbin/ntpq -c associations`) { if ($line =~ m/^\s*\d+/) { my (undef, undef, $assid, undef, undef, undef, undef, undef, undef, undef) = split(/\s+/, $line); - chomp(my $peerinfo = `ntpq -n -c "readvar $assid srcadr"`); + chomp(my $peerinfo = `/usr/sbin/ntpq -n -c "readvar $assid srcadr"`); $peerinfo =~ s/\R/ /g; my ($peer_addr) = ($peerinfo =~ m/srcadr=(.*)/); print $peer_addr, "\n" unless $peer_addr eq "0.0.0.0"; @@ -108,7 +108,7 @@ my $srcadr; my $delay; my $offset; my $jitter; -my @associations = `ntpq -c associations`; +my @associations = `/usr/sbin/ntpq -c associations`; foreach my $line (@associations) { if ($line =~ m/^\s*\d+/) { diff -urNp munin-2.0.25.orig/plugins/node.d/ntp_kernel_err.in munin-2.0.25/plugins/node.d/ntp_kernel_err.in --- munin-2.0.25.orig/plugins/node.d/ntp_kernel_err.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/ntp_kernel_err.in 2015-09-08 10:05:48.884593251 +0000 @@ -32,7 +32,7 @@ EOF export PATH=/usr/local/sbin:$PATH if [ "$1" = "autoconf" ]; then - { ntpq -c kerninfo; ntpdc -c kerninfo; } 2>/dev/null | + { /usr/sbin/ntpq -c kerninfo; ntpdc -c kerninfo; } 2>/dev/null | awk 'BEGIN { ev=1; } /^estimated error:/ { ev=0; } END { if (ev == 0) { print "yes";} else { print "no"; } exit ev; }' @@ -51,11 +51,11 @@ fi printf 'ntp_err.value ' -if [ $(ntpq -c version | grep --extended-regexp --only-matching '[[:digit:]]\.[[:digit:]]\.[[:digit:]]' | tr -d '.') -ge 427 ] +if [ $(/usr/sbin/ntpq -c version | grep --extended-regexp --only-matching '[[:digit:]]\.[[:digit:]]\.[[:digit:]]' | tr -d '.') -ge 427 ] then - cmd=ntpq + cmd=/usr/sbin/ntpq else - cmd=ntpdc + cmd=/usr/sbin/ntpdc fi $cmd -c kerninfo | awk '/^estimated error:/ { print $3 }' diff -urNp munin-2.0.25.orig/plugins/node.d/ntp_kernel_pll_freq.in munin-2.0.25/plugins/node.d/ntp_kernel_pll_freq.in --- munin-2.0.25.orig/plugins/node.d/ntp_kernel_pll_freq.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/ntp_kernel_pll_freq.in 2015-09-08 10:05:48.884593251 +0000 @@ -39,7 +39,7 @@ EOF export PATH=/usr/local/sbin:$PATH if [ "$1" = "autoconf" ]; then - { ntpq -c kerninfo; ntpdc -c kerninfo; } 2>/dev/null | + { /usr/sbin/ntpq -c kerninfo; ntpdc -c kerninfo; } 2>/dev/null | awk 'BEGIN { ev=1; } /^pll frequency:/ { ev=0; } END { if (ev == 0) { print "yes";} else { print "no"; } exit ev; }' @@ -65,11 +65,11 @@ fi printf 'ntp_pll_freq.value ' -if [ $(ntpq -c version | grep --extended-regexp --only-matching '[[:digit:]]\.[[:digit:]]\.[[:digit:]]' | tr -d '.') -ge 427 ] +if [ $(/usr/sbin/ntpq -c version | grep --extended-regexp --only-matching '[[:digit:]]\.[[:digit:]]\.[[:digit:]]' | tr -d '.') -ge 427 ] then - cmd=ntpq + cmd=/usr/sbin/ntpq else - cmd=ntpdc + cmd=/usr/sbin/ntpdc fi $cmd -c kerninfo | awk -v fcomp=$fcomp '/^pll frequency:/ { print $3 + fcomp }' diff -urNp munin-2.0.25.orig/plugins/node.d/ntp_kernel_pll_off.in munin-2.0.25/plugins/node.d/ntp_kernel_pll_off.in --- munin-2.0.25.orig/plugins/node.d/ntp_kernel_pll_off.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/ntp_kernel_pll_off.in 2015-09-08 10:05:48.885593251 +0000 @@ -32,7 +32,7 @@ EOF export PATH=/usr/local/sbin:$PATH if [ "$1" = "autoconf" ]; then - { ntpq -c kerninfo; ntpdc -c kerninfo; } 2>/dev/null | + { /usr/sbin/ntpq -c kerninfo; ntpdc -c kerninfo; } 2>/dev/null | awk 'BEGIN { ev=1; } /^pll offset:/ { ev=0; } END { if (ev == 0) { print "yes";} else { print "no"; } exit ev; }' @@ -51,11 +51,11 @@ fi printf 'ntp_pll_off.value ' -if [ $(ntpq -c version | grep --extended-regexp --only-matching '[[:digit:]]\.[[:digit:]]\.[[:digit:]]' | tr -d '.') -ge 427 ] +if [ $(/usr/sbin/ntpq -c version | grep --extended-regexp --only-matching '[[:digit:]]\.[[:digit:]]\.[[:digit:]]' | tr -d '.') -ge 427 ] then - cmd=ntpq + cmd=/usr/sbin/ntpq else - cmd=ntpdc + cmd=/usr/sbin/ntpdc fi $cmd -c kerninfo | awk '/^pll offset:/ { print $3 }' diff -urNp munin-2.0.25.orig/plugins/node.d/ntp_offset.in munin-2.0.25/plugins/node.d/ntp_offset.in --- munin-2.0.25.orig/plugins/node.d/ntp_offset.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/ntp_offset.in 2015-09-08 10:05:48.885593251 +0000 @@ -38,9 +38,9 @@ Loosely based on ntp_ plugin, but rework =cut do_autoconf () { - ntpq -c help >/dev/null 2>&1 || { echo 'no (no ntpq program)'; exit 0; } + /usr/sbin/ntpq -c help >/dev/null 2>&1 || { echo 'no (no ntpq program)'; exit 0; } - case "$(ntpq -n -p 2>/dev/null | wc -l)" in + case "$(/usr/sbin/ntpq -n -p 2>/dev/null | wc -l)" in 0) echo 'no (unable to list peers)' exit 0 @@ -57,7 +57,7 @@ do_autoconf () { } do_config () { - syspeer="$(ntpq -n -p | grep '^[*o]')" + syspeer="$(/usr/sbin/ntpq -n -p | grep '^[*o]')" set - $syspeer @@ -86,7 +86,7 @@ EOF do_ () { # Fetch operation - syspeer="$(ntpq -n -p | grep '^[*o]')" + syspeer="$(/usr/sbin/ntpq -n -p | grep '^[*o]')" set - $syspeer diff -urNp munin-2.0.25.orig/plugins/node.d/ntp_states.in munin-2.0.25/plugins/node.d/ntp_states.in --- munin-2.0.25.orig/plugins/node.d/ntp_states.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/ntp_states.in 2015-09-08 10:05:48.886593251 +0000 @@ -72,10 +72,10 @@ sub make_hash { # 1 63933 931a yes yes none outlyer sys_peer 1 # 2 63934 943a yes yes none candidate sys_peer 3 - foreach my $line (`ntpq -c associations`) { + foreach my $line (`/usr/sbin/ntpq -c associations`) { if ($line =~ m/^\s*\d+/) { my (undef, undef, $assid, undef, undef, undef, undef, $condition_str, undef, undef) = split(/\s+/, $line); - chomp(my $peerinfo = `ntpq -n -c "readvar $assid srcadr"`); + chomp(my $peerinfo = `/usr/sbin/ntpq -n -c "readvar $assid srcadr"`); $peerinfo =~ s/\s//g; my ($peer_addr) = ($peerinfo =~ m/srcadr=(.*)/); @@ -125,17 +125,17 @@ sub make_names { } if ($ARGV[0] and $ARGV[0] eq "autoconf") { - `ntpq -c help >/dev/null 2>/dev/null`; + `/usr/sbin/ntpq -c help >/dev/null 2>/dev/null`; if ($CHILD_ERROR eq "0") { - if (`ntpq -n -c peers | wc -l` > 0) { + if (`/usr/sbin/ntpq -n -c peers | wc -l` > 0) { print "yes\n"; exit 0; } else { - print "no (ntpq -p returned no peers)\n"; + print "no (/usr/sbin/ntpq -p returned no peers)\n"; exit 0; } } else { - print "no (ntpq not found)\n"; + print "no (/usr/sbin/ntpq not found)\n"; exit 0; } } diff -urNp munin-2.0.25.orig/plugins/node.d/nut_misc.in munin-2.0.25/plugins/node.d/nut_misc.in --- munin-2.0.25.orig/plugins/node.d/nut_misc.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/nut_misc.in 2015-09-08 10:05:48.886593251 +0000 @@ -38,7 +38,8 @@ use strict; my %status; my %config = ( - upsname => $ENV{"upsname"} ? $ENV{"upsname"} : 'bertha@127.0.0.1', + upsname => $ENV{"upsname"} ? $ENV{"upsname"} : 'bertha', + upshost => $ENV{"upshost"} ? $ENV{"upshost"} : '127.0.0.1', upsc => $ENV{"upsc"} ? $ENV{"upsc"} : 'upsc' ); @@ -48,11 +49,6 @@ my %graph = ( type => 'GAUGE', draw => 'LINE2' }, - 'battery_voltage' => { - label => 'batt voltage - V', - type => 'GAUGE', - draw => 'LINE2' - }, 'battery_runtime' => { label => 'runtime - min', type => 'GAUGE', @@ -76,7 +72,12 @@ my %graph = ( ); if ( defined $ARGV[0] and $ARGV[0] eq 'config' ) { - print "graph_title UPS Misc - $config{upsname}\n"; + my $s = $config{upsname}; + $s =~ s/_/ /g; + if ($config{upshost} ne "127.0.0.1" && $config{upshost} ne "localhost") { + $s .= " at $config{upshost}"; + } + print "graph_title UPS Misc - $s\n"; #print "graph_args -l 110\n"; #print "graph_vlabel Misc\n"; foreach my $key (keys %graph) { @@ -89,7 +90,7 @@ if ( defined $ARGV[0] and $ARGV[0] eq 'c } sub fetch_values { - my $data = `$config{upsc} $config{upsname}`; + my $data = `$config{upsc} $config{upsname}\@$config{upshost}`; while ($data =~ /([a-z.]+): (.+)\b/g) { my $label = $1; my $value = $2; diff -urNp munin-2.0.25.orig/plugins/node.d/nut_volts.in munin-2.0.25/plugins/node.d/nut_volts.in --- munin-2.0.25.orig/plugins/node.d/nut_volts.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/nut_volts.in 2015-09-08 10:05:48.887593251 +0000 @@ -14,7 +14,8 @@ use strict; my %status; my %config = ( - upsname => $ENV{"upsname"} ? $ENV{"upsname"} : 'bertha@127.0.0.1', + upsname => $ENV{"upsname"} ? $ENV{"upsname"} : 'bertha', + upshost => $ENV{"upshost"} ? $ENV{"upshost"} : '127.0.0.1', upsc => $ENV{"upsc"} ? $ENV{"upsc"} : 'upsc' ); @@ -24,16 +25,6 @@ my %graph = ( type => 'GAUGE', draw => 'LINE2' }, - 'input_voltage_maximum' => { - label => 'max input seen', - type => 'GAUGE', - draw => 'LINE1' - }, - 'input_voltage_minimum' => { - label => 'min input seen', - type => 'GAUGE', - draw => 'LINE1' - }, 'output_voltage' => { label => 'output', type => 'GAUGE', @@ -42,7 +33,12 @@ my %graph = ( ); if ( defined $ARGV[0] and $ARGV[0] eq 'config' ) { - print "graph_title UPS Voltages - $config{upsname}\n"; + my $s = $config{upsname}; + $s =~ s/_/ /g; + if ($config{upshost} ne "127.0.0.1" && $config{upshost} ne "localhost") { + $s .= " at $config{upshost}"; + } + print "graph_title UPS Voltages - $s\n"; print "graph_args -l 115\n"; print "graph_vlabel Volts\n"; foreach my $key (keys %graph) { @@ -55,7 +51,7 @@ if ( defined $ARGV[0] and $ARGV[0] eq 'c } sub fetch_values { - my $data = `$config{upsc} $config{upsname}`; + my $data = `$config{upsc} $config{upsname}\@$config{upshost}`; while ($data =~ /([a-z.]+): (.+)\b/g) { my $label = $1; my $value = $2; diff -urNp munin-2.0.25.orig/plugins/node.d/perdition.in munin-2.0.25/plugins/node.d/perdition.in --- munin-2.0.25.orig/plugins/node.d/perdition.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/perdition.in 2015-09-08 10:05:48.887593251 +0000 @@ -56,7 +56,7 @@ mktempfile () { # Set the location of the perdition logs PERDITION_LOG=${logfile:-/var/log/perdition.log} OFFSET_FILE=${MUNIN_PLUGSTATE}/perdition.offset -LOGTAIL=${logtail:-/usr/sbin/logtail} +LOGTAIL=${logtail:-`which logtail`} case $1 in autoconf|detect) diff -urNp munin-2.0.25.orig/plugins/node.d/pop_stats.in munin-2.0.25/plugins/node.d/pop_stats.in --- munin-2.0.25.orig/plugins/node.d/pop_stats.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/pop_stats.in 2015-09-08 10:05:48.888593251 +0000 @@ -68,7 +68,9 @@ if (!defined $pos) if ($startsize < $pos) { # Log rotated - parseEximfile ($pop{'rotlogfile'}, $pos, (stat $pop{'rotlogfile'})[7]); + if (-f $pop{'rotlogfile'}) { + parseEximfile ($pop{'rotlogfile'}, $pos, (stat $pop{'rotlogfile'})[7]); + } $pos = 0; } diff -urNp munin-2.0.25.orig/plugins/node.d/postgres_scans_.in munin-2.0.25/plugins/node.d/postgres_scans_.in --- munin-2.0.25.orig/plugins/node.d/postgres_scans_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/postgres_scans_.in 2015-09-08 10:05:48.888593251 +0000 @@ -65,7 +65,6 @@ my $pg = Munin::Plugin::Pgsql->new( vlabel => 'Scans / sec', basequery => "SELECT COALESCE(sum(seq_scan),0) AS sequential, COALESCE(sum(idx_scan),0) AS index FROM pg_stat_user_tables", - paramdatabase => 1, pivotquery => 1, configquery => "VALUES ('sequential','Sequential scans'), ('index','Index scans')", diff -urNp munin-2.0.25.orig/plugins/node.d/postgres_tuples_.in munin-2.0.25/plugins/node.d/postgres_tuples_.in --- munin-2.0.25.orig/plugins/node.d/postgres_tuples_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/postgres_tuples_.in 2015-09-08 10:05:48.889593251 +0000 @@ -74,7 +74,6 @@ my $pg = Munin::Plugin::Pgsql->new( . " COALESCE(sum(n_tup_del),0) AS deleted FROM pg_stat_user_tables", ], ], - paramdatabase => 1, pivotquery => 1, configquery => [ "VALUES ('seqread','Tuples sequentally read'), ('idxfetch','Tuples index fetched'), ('inserted','Tuples inserted')," diff -urNp munin-2.0.25.orig/plugins/node.d/slapd_.in munin-2.0.25/plugins/node.d/slapd_.in --- munin-2.0.25.orig/plugins/node.d/slapd_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d/slapd_.in 2015-09-08 10:05:48.890593251 +0000 @@ -37,7 +37,7 @@ use vars qw ( $config $param $act $scope # Change these to reflect your LDAP ACL. The given DN must have # read access to the Monitor branch. -my $basedn = "cn=Monitor"; +my $basedn = ($ENV{'basedn'} || "cn=Monitor"); my $server = ($ENV{'server'} || 'localhost'); my $userdn = ($ENV{'binddn'} || ''); my $userpw = ($ENV{'bindpw'} || ''); diff -urNp munin-2.0.25.orig/plugins/node.d.linux/iostat.in munin-2.0.25/plugins/node.d.linux/iostat.in --- munin-2.0.25.orig/plugins/node.d.linux/iostat.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/iostat.in 2015-09-08 10:05:55.475593251 +0000 @@ -173,7 +173,7 @@ sub fetch_detailed() { if ($tmpnam =~ /\d+$/ and !$include_numbered) { # Special case for devices like cXdXpX, # like the cciss driver - next unless $tmpnam =~ /\/c\d+d\d+$/ + next unless $tmpnam =~ /\/.*d\d+$/ } next unless grep { $_ } @fields; diff -urNp munin-2.0.25.orig/plugins/node.d.linux/ip_.in munin-2.0.25/plugins/node.d.linux/ip_.in --- munin-2.0.25.orig/plugins/node.d.linux/ip_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/ip_.in 2015-09-08 10:05:55.476593251 +0000 @@ -127,14 +127,18 @@ case $IP in # This is a fun hack to make the plugin ip6 compatible. # Suggested in ticket #439 by "jodal". eval 'iptables() { - ip6tables "$@" + /usr/sbin/ip6tables "$@" + }' + ;; + *) eval 'iptables() { + /usr/sbin/iptables "$@" }' ;; esac if [[ "$1" == "autoconf" ]]; then if [[ -r /proc/net/dev ]]; then - if ! iptables -L ${INPUT} -v -n -x >/dev/null 2>/dev/null; then + if ! /usr/sbin/iptables -L ${INPUT} -v -n -x >/dev/null 2>/dev/null; then echo "no (could not run iptables as user $(whoami))" exit 0 else @@ -147,10 +151,10 @@ if [[ "$1" == "autoconf" ]]; then fi fi -if [[ "$1" == "suggest" ]]; then - iptables -L ${INPUT} -v -n -x 2>/dev/null | awk --posix '$8 ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}$/ { if (done[$8]!=1) {print $8; done[$8]=1;}}' - if [[ -x /sbin/ip6tables ]]; then - ip6tables -L ${INPUT} -v -n -x 2>/dev/null | awk --posix '$7 ~ /\/128$/ { if (done[$7]!=1) {a=$7;gsub(/\/128$/, "", a); print a; done[$7]=1;}}' +if [ "$1" = "suggest" ]; then + /usr/sbin/iptables -L ${INPUT} -v -n -x 2>/dev/null | awk --posix '$8 ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}$/ { if (done[$8]!=1) {print $8; done[$8]=1;}}' + if [[ -x /usr/sbin/ip6tables ]]; then + /usr/sbin/ip6tables -L ${INPUT} -v -n -x 2>/dev/null | awk --posix '$7 ~ /\/128$/ { if (done[$7]!=1) {a=$7;gsub(/\/128$/, "", a); print a; done[$7]=1;}}' fi exit 0 fi @@ -183,5 +187,5 @@ fi; # Escape .'s so they don't match _everything_? IP=$(echo $IP | sed 's~\.~\\.~g') -iptables -L ${INPUT} -v -n -x | awk "/$IP"'[ /]/ { print "in.value " $2; exit 0; }' -iptables -L ${OUTPUT} -v -n -x | awk "/$IP"'[ /]/ { print "out.value " $2; exit 0; }' +/usr/sbin/iptables -L ${INPUT} -v -n -x | awk "/$IP"'[ \/]/ { print "in.value " $2; exit 0; }' +/usr/sbin/iptables -L ${OUTPUT} -v -n -x | awk "/$IP"'[ \/]/ { print "out.value " $2; exit 0; }' diff -urNp munin-2.0.25.orig/plugins/node.d.linux/load.in munin-2.0.25/plugins/node.d.linux/load.in --- munin-2.0.25.orig/plugins/node.d.linux/load.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/load.in 2015-09-08 10:05:55.476593251 +0000 @@ -59,20 +59,20 @@ if [ "$1" = "config" ]; then # one machine answer for several) # The title of the graph - echo 'graph_title Load average' + echo "graph_title Load average" # Arguments to "rrdtool graph". In this case, tell it that the # lower limit of the graph is '0', and that 1k=1000 (not 1024) - echo 'graph_args --base 1000 -l 0' + echo "graph_args --base 1000 -l 0" # The Y-axis label - echo 'graph_vlabel load' + echo "graph_vlabel load" # We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of # 420 milliload) - echo 'graph_scale no' + echo "graph_scale no" # Graph category. Defaults to 'other' - echo 'graph_category system' + echo "graph_category system" # The fields. "label" is used in the legend. "label" is the only # required subfield. - echo 'load.label load' + echo "load.label load" # These two read the environment for warning values for the field # "load". If "load_warning" or "warning" aren't set in the # environment, no warning levels are set. Likewise for "load_critical" @@ -82,8 +82,8 @@ if [ "$1" = "config" ]; then # This one is purely to add an explanation to the web page. The first # one is for the graph itself, while the second one is for the field # "load". - echo 'graph_info The load average of the machine describes how many processes are in the run-queue (scheduled to run "immediately").' - echo 'load.info 5 minute load average' + echo "graph_info The load average of the machine describes how many processes are in the run-queue (scheduled to run \"immediately\")." + echo "load.info 5 minute load average" # Last, if run with the "config"-parameter, quit here (don't # display any data) diff -urNp munin-2.0.25.orig/plugins/node.d.linux/nfs_client.in munin-2.0.25/plugins/node.d.linux/nfs_client.in --- munin-2.0.25.orig/plugins/node.d.linux/nfs_client.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/nfs_client.in 2015-09-08 10:05:55.477593251 +0000 @@ -31,7 +31,7 @@ NFS=/proc/net/rpc/nfs proc="getattr setattr lookup access readlink read write create mkdir symlink mknod remove rmdir rename link readdir readdirplus fsstat fsinfo pathconf commit" if [ "$1" = "autoconf" ]; then - if [ -f "$NFS" ]; then + if [ -r "$NFS" ]; then echo yes exit 0 else @@ -51,11 +51,66 @@ if [ "$1" = "config" ]; then exit 0 fi -awk '/proc3/ { - split("'"$proc"'", names) - split($0,values) - for (e in names) { - printf("%s.value %d\n", names[++i], values[i+3]); - } +awk '/proc2/ { + nfs_getattr+=$4 + nfs_setattr+=$5 + nfs_lookup+=$6 + nfs_readlink+=$7 + nfs_read+=$8 + nfs_write+=$9 + nfs_create+=$10 + nfs_mkdir+=$11 + nfs_symlink+=$12 + nfs_remove+=$13 + nfs_rmdir+=$14 + nfs_rename+=$15 + nfs_link+=$16 + nfs_readdir+=$17 + nfs_fsstat+=$18 +} +/proc[34]/ { + nfs_getattr+=$4 + nfs_setattr+=$5 + nfs_lookup+=$6 + nfs_access+=$7 + nfs_readlink+=$8 + nfs_read+=$9 + nfs_write+=$10 + nfs_create+=$11 + nfs_mkdir+=$12 + nfs_symlink+=$13 + nfs_mknod+=$14 + nfs_remove+=$15 + nfs_rmdir+=$16 + nfs_rename+=$17 + nfs_link+=$18 + nfs_readdir+=$19 + nfs_readdirplus+=$20 + nfs_fsstat+=$21 + nfs_fsinfo+=$22 + nfs_pathconf+=$23 + nfs_commit+=$24 +} +END { + print "getattr.value " nfs_getattr + print "setattr.value " nfs_setattr + print "lookup.value " nfs_lookup + print "access.value " nfs_access + print "readlink.value " nfs_readlink + print "read.value " nfs_read + print "write.value " nfs_write + print "create.value " nfs_create + print "mkdir.value " nfs_mkdir + print "symlink.value " nfs_symlink + print "mknod.value " nfs_mknod + print "remove.value " nfs_remove + print "rmdir.value " nfs_rmdir + print "rename.value " nfs_rename + print "link.value " nfs_link + print "readdir.value " nfs_readdir + print "readdirplus.value " nfs_readdirplus + print "fsstat.value " nfs_fsstat + print "fsinfo.value " nfs_fsinfo + print "pathconf.value " nfs_pathconf + print "commit.value " nfs_commit }' $NFS - diff -urNp munin-2.0.25.orig/plugins/node.d.linux/nfsd.in munin-2.0.25/plugins/node.d.linux/nfsd.in --- munin-2.0.25.orig/plugins/node.d.linux/nfsd.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/nfsd.in 2015-09-08 10:05:55.477593251 +0000 @@ -31,7 +31,7 @@ NFSD=/proc/net/rpc/nfsd proc="getattr setattr lookup access readlink read write create mkdir symlink mknod remove rmdir rename link readdir readdirplus fsstat fsinfo pathconf commit" if [ "$1" = "autoconf" ]; then - if [ -f "$NFSD" ]; then + if [ -r "$NFSD" ]; then echo yes exit 0 else @@ -51,9 +51,66 @@ if [ "$1" = "config" ]; then exit 0 fi -awk '/proc3/ { - split("'"$proc"'", names) - split($0,values) - for (e in names) - printf("%s.value %d\n", names[++i], values[i+3]); - }' $NFSD +awk '/proc2/ { + nfs_getattr+=$4 + nfs_setattr+=$5 + nfs_lookup+=$6 + nfs_readlink+=$7 + nfs_read+=$8 + nfs_write+=$9 + nfs_create+=$10 + nfs_mkdir+=$11 + nfs_symlink+=$12 + nfs_remove+=$13 + nfs_rmdir+=$14 + nfs_rename+=$15 + nfs_link+=$16 + nfs_readdir+=$17 + nfs_fsstat+=$18 +} +/proc[34]/ { + nfs_getattr+=$4 + nfs_setattr+=$5 + nfs_lookup+=$6 + nfs_access+=$7 + nfs_readlink+=$8 + nfs_read+=$9 + nfs_write+=$10 + nfs_create+=$11 + nfs_mkdir+=$12 + nfs_symlink+=$13 + nfs_mknod+=$14 + nfs_remove+=$15 + nfs_rmdir+=$16 + nfs_rename+=$17 + nfs_link+=$18 + nfs_readdir+=$19 + nfs_readdirplus+=$20 + nfs_fsstat+=$21 + nfs_fsinfo+=$22 + nfs_pathconf+=$23 + nfs_commit+=$24 +} +END { + print "getattr.value " nfs_getattr + print "setattr.value " nfs_setattr + print "lookup.value " nfs_lookup + print "access.value " nfs_access + print "readlink.value " nfs_readlink + print "read.value " nfs_read + print "write.value " nfs_write + print "create.value " nfs_create + print "mkdir.value " nfs_mkdir + print "symlink.value " nfs_symlink + print "mknod.value " nfs_mknod + print "remove.value " nfs_remove + print "rmdir.value " nfs_rmdir + print "rename.value " nfs_rename + print "link.value " nfs_link + print "readdir.value " nfs_readdir + print "readdirplus.value " nfs_readdirplus + print "fsstat.value " nfs_fsstat + print "fsinfo.value " nfs_fsinfo + print "pathconf.value " nfs_pathconf + print "commit.value " nfs_commit +}' $NFSD diff -urNp munin-2.0.25.orig/plugins/node.d.linux/vlan_inetuse_.in munin-2.0.25/plugins/node.d.linux/vlan_inetuse_.in --- munin-2.0.25.orig/plugins/node.d.linux/vlan_inetuse_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/vlan_inetuse_.in 2015-09-08 10:05:55.477593251 +0000 @@ -37,8 +37,8 @@ my %contraries = ("dpt" => "spt", "spt" my %in_octets = (); my %out_octets = (); -open (IN, "/sbin/iptables -v -x -L $INTERFACE-in |") or - die "Could not run iptables: $!\n"; +open (IN, "/usr/sbin/iptables -v -x -L $INTERFACE-in |") or + die "Could not run /usr/sbin/iptables: $!\n"; while () { if (/^\s*\d+\s+(\d+) +([a-z]+)\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+(?:\s+|)(.+|)$/) @@ -49,10 +49,10 @@ while () } } close IN; -die "Error running iptables. Dying\n" if $?; +die "Error running /usr/sbin/iptables. Dying\n" if $?; -open (IN, "/sbin/iptables -v -x -L $INTERFACE-out |") or - die "Could not run iptables: $!\n"; +open (IN, "/usr/sbin/iptables -v -x -L $INTERFACE-out |") or + die "Could not run /usr/sbin/iptables: $!\n"; while () { if (/^\s*\d+\s+(\d+) +([a-z]+)\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+(?:\s+|)(.+|)$/) @@ -67,7 +67,7 @@ while () } } close IN; -die "Error running iptables. Dying\n" if $?; +die "Error running /usr/sbin/iptables. Dying\n" if $?; if ($ARGV[0] and $ARGV[0] eq "config") { diff -urNp munin-2.0.25.orig/plugins/node.d.linux/vlan_linkuse_.in munin-2.0.25/plugins/node.d.linux/vlan_linkuse_.in --- munin-2.0.25.orig/plugins/node.d.linux/vlan_linkuse_.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/vlan_linkuse_.in 2015-09-08 10:05:55.477593251 +0000 @@ -29,8 +29,8 @@ my %contraries = ("dpt" => "spt", "spt" my %in_octets = (); my %out_octets = (); -open (IN, "/sbin/iptables -v -x -L $INTERFACE-in |") or - die "Could not run iptables: $!\n"; +open (IN, "/usr/sbin/iptables -v -x -L $INTERFACE-in |") or + die "Could not run /usr/sbin/iptables: $!\n"; while () { if (/^\s*\d+\s+(\d+) +([a-z]+)\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+(?:\s+|)(.+|)$/) @@ -58,10 +58,10 @@ while () } } close IN; -die "Error running iptables. Dying\n" if $?; +die "Error running /usr/sbin/iptables. Dying\n" if $?; -open (IN, "/sbin/iptables -v -x -L $INTERFACE-out |") or - die "Could not run iptables: $!\n"; +open (IN, "/usr/sbin/iptables -v -x -L $INTERFACE-out |") or + die "Could not run /usr/sbin/iptables: $!\n"; while () { if (/^\s*\d+\s+(\d+) +([a-z]+)\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+(?:\s+|)(.+|)$/) @@ -84,5 +84,5 @@ while () } } close IN; -die "Error running iptables. Dying\n" if $?; +die "Error running /usr/sbin/iptables. Dying\n" if $?; # vim:syntax=perl diff -urNp munin-2.0.25.orig/plugins/node.d.linux/vserver_resources.in munin-2.0.25/plugins/node.d.linux/vserver_resources.in --- munin-2.0.25.orig/plugins/node.d.linux/vserver_resources.in 2014-11-24 21:46:24.000000000 +0000 +++ munin-2.0.25/plugins/node.d.linux/vserver_resources.in 2015-09-08 10:05:55.478593251 +0000 @@ -245,6 +245,12 @@ if [ "$1" = "config" ]; then echo 'graph_vlabel ANON pages' echo 'graph_info Shows anonymous memory (human readable) used by each vserver.' ;; + RMAP) + echo 'graph_title Mapped memory used by vserver' + echo 'graph_args --base 1024k -l 0' + echo 'graph_vlabel RMAP pages' + echo 'graph_info Shows mapped memory (human readable) used by each vserver.' + ;; FILES) echo 'graph_title Files used by vserver' echo 'graph_args --base 1024k -l 0' @@ -281,6 +287,30 @@ if [ "$1" = "config" ]; then echo 'graph_vlabel SHM pages' echo 'graph_info Shows shared memory (human readable) used by each vserver.' ;; + SEMA) + echo 'graph_title Semaphore arrays used by vserver' + echo 'graph_args --base 1024k -l 0' + echo 'graph_vlabel Semaphore arrays' + echo 'graph_info Shows semaphore arrays used by each vserver.' + ;; + SEMS) + echo 'graph_title Semaphores used by vserver' + echo 'graph_args --base 1024k -l 0' + echo 'graph_vlabel Semaphores' + echo 'graph_info Shows semaphores used by each vserver.' + ;; + DENT) + echo 'graph_title dentry structs used by vserver' + echo 'graph_args --base 1024k -l 0' + echo 'graph_vlabel dentry structs' + echo 'graph_info Shows dentry structs used by each vserver.' + ;; + ALL) + echo 'graph_title Resources used by vserver' + echo 'graph_args --base 1024k -l 0' + echo 'graph_vlabel Resources' + echo 'graph_info Shows rsources used by each vserver.' + ;; *) echo "$RESOURCE not defined." exit 1 @@ -299,53 +329,108 @@ if [ "$1" = "config" ]; then case "$RESOURCE" in PROC) - echo "$NAME.label $LABEL: processes" - echo "$NAME.info Number of processes used by $LABEL." + echo "${NAME}_PROC.label $LABEL: processes" + echo "${NAME}_PROC.info Number of processes used by $LABEL." ;; VM) - echo "$NAME.label $LABEL: Virtual memory" - echo "$NAME.info Size of virtual memory used by $LABEL. (Number multipled by $pagesize to make it human readable)" - echo "$NAME.cdef $NAME,$pagesize,*" + echo "${NAME}_VM.label $LABEL: Virtual memory" + echo "${NAME}_VM.info Size of virtual memory used by $LABEL. (Number multipled by $pagesize to make it human readable)" + echo "${NAME}_VM.cdef ${NAME}_VM,$pagesize,*" ;; VML) - echo "$NAME.label $LABEL: Locked memory" - echo "$NAME.info Size of locked memory used by $LABEL. (Number multipled by $pagesize to make it human readable)" - echo "$NAME.cdef $NAME,$pagesize,*" + echo "${NAME}_VML.label $LABEL: Locked memory" + echo "${NAME}_VML.info Size of locked memory used by $LABEL. (Number multipled by $pagesize to make it human readable)" + echo "${NAME}_VML.cdef ${NAME}_VML,$pagesize,*" ;; RSS) - echo "$NAME.label $LABEL: Resident set size" - echo "$NAME.info Size of resident set size used by $LABEL. (Number multiplied by $pagesize to make it human readable)" - echo "$NAME.cdef $NAME,$pagesize,*" + echo "${NAME}_RSS.label $LABEL: Resident set size" + echo "${NAME}_RSS.info Size of resident set size used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_RSS.cdef ${NAME}_RSS,$pagesize,*" ;; ANON) - echo "$NAME.label $LABEL: Anonymous memory" - echo "$NAME.info Size of anonymous memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" - echo "$NAME.cdef $NAME,$pagesize,*" + echo "${NAME}_ANON.label $LABEL: Anonymous memory" + echo "${NAME}_ANON.info Size of anonymous memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_ANON.cdef ${NAME}_ANON,$pagesize,*" + ;; + RMAP) + echo "${NAME}_RMAP.label $LABEL: Mapped memory" + echo "${NAME}_RMAP.info Size of mapped memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_RMAP.cdef ${NAME}_RMAP,$pagesize,*" ;; FILES) - echo "$NAME.label $LABEL: Files" - echo "$NAME.info Number of files used by $LABEL." + echo "${NAME}_FILES.label $LABEL: Files" + echo "${NAME}_FILES.info Number of files used by $LABEL." ;; OFD) - echo "$NAME.label $LABEL: Open filedescriptors" - echo "$NAME.info Number of open filedescriptors used by $LABEL." + echo "${NAME}_OFD.label $LABEL: Open filedescriptors" + echo "${NAME}_OFD.info Number of open filedescriptors used by $LABEL." ;; LOCKS) - echo "$NAME.label $LABEL: Locks" - echo "$NAME.info Number of locks used by $LABEL." + echo "${NAME}_LOCKS.label $LABEL: Locks" + echo "${NAME}_LOCKS.info Number of locks used by $LABEL." ;; SOCK) - echo "$NAME.label $LABEL: Sockets" - echo "$NAME.info Number of sockets used by $LABEL." + echo "${NAME}_SOCK.label $LABEL: Sockets" + echo "${NAME}_SOCK.info Number of sockets used by $LABEL." ;; MSGQ) - echo "$NAME.label $LABEL: Message queues" - echo "$NAME.info Number of message queues used by $LABEL." + echo "${NAME}_MSGQ.label $LABEL: Message queues" + echo "${NAME}_MSGQ.info Number of message queues used by $LABEL." ;; SHM) - echo "$NAME.label $LABEL: Shared memory" - echo "$NAME.info Size of shared memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" - echo "$NAME.cdef $1,$pagesize,*" + echo "${NAME}_SHM.label $LABEL: Shared memory" + echo "${NAME}_SHM.info Size of shared memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_SHM.cdef ${NAME}_SHM,$pagesize,*" + ;; + SEMA) + echo "${NAME}_SEMA.label $LABEL: Semaphore arrays" + echo "${NAME}_SEMA.info Number of semaphore arrays used by $LABEL." + ;; + SEMS) + echo "${NAME}_SEMS.label $LABEL: Semaphores" + echo "${NAME}_SEMS.info Number of semaphores used by $LABEL." + ;; + DENT) + echo "${NAME}_DENT.label $LABEL: dentry structs" + echo "${NAME}_DENT.info Number of dentries used by $LABEL." + ;; + ALL) + echo "${NAME}_PROC.label $LABEL: processes" + echo "${NAME}_PROC.info Number of processes used by $LABEL." + echo "${NAME}_VM.label $LABEL: Virtual memory" + echo "${NAME}_VM.info Size of virtual memory used by $LABEL. (Number multipled by $pagesize to make it human readable)" + echo "${NAME}_VM.cdef ${NAME}_VM,$pagesize,*" + echo "${NAME}_VML.label $LABEL: Locked memory" + echo "${NAME}_VML.info Size of locked memory used by $LABEL. (Number multipled by $pagesize to make it human readable)" + echo "${NAME}_VML.cdef ${NAME}_VML,$pagesize,*" + echo "${NAME}_RSS.label $LABEL: Resident set size" + echo "${NAME}_RSS.info Size of resident set size used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_RSS.cdef ${NAME}_RSS,$pagesize,*" + echo "${NAME}_ANON.label $LABEL: Anonymous memory" + echo "${NAME}_ANON.info Size of anonymous memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_ANON.cdef ${NAME}_ANON,$pagesize,*" + echo "${NAME}_RMAP.label $LABEL: Mapped memory" + echo "${NAME}_RMAP.info Size of mapped memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_RMAP.cdef ${NAME}_RMAP,$pagesize,*" + echo "${NAME}_FILES.label $LABEL: Files" + echo "${NAME}_FILES.info Number of files used by $LABEL." + echo "${NAME}_OFD.label $LABEL: Open filedescriptors" + echo "${NAME}_OFD.info Number of open filedescriptors used by $LABEL." + echo "${NAME}_LOCKS.label $LABEL: Locks" + echo "${NAME}_LOCKS.info Number of locks used by $LABEL." + echo "${NAME}_SOCK.label $LABEL: Sockets" + echo "${NAME}_SOCK.info Number of sockets used by $LABEL." + echo "${NAME}_MSGQ.label $LABEL: Message queues" + echo "${NAME}_MSGQ.info Number of message queues used by $LABEL." + echo "${NAME}_SHM.label $LABEL: Shared memory" + echo "${NAME}_SHM.info Size of shared memory used by $LABEL. (Number multiplied by $pagesize to make it human readable)" + echo "${NAME}_SHM.cdef ${NAME}_SHM,$pagesize,*" + echo "${NAME}_SEMA.label $LABEL: Semaphore arrays" + echo "${NAME}_SEMA.info Number of semaphore arrays used by $LABEL." + echo "${NAME}_SEMS.label $LABEL: Semaphores" + echo "${NAME}_SEMS.info Number of semaphores used by $LABEL." + echo "${NAME}_DENT.label $LABEL: dentry structs" + echo "${NAME}_DENT.info Number of dentries used by $LABEL." ;; *) echo "$RESOURCE not defined." @@ -356,7 +441,7 @@ if [ "$1" = "config" ]; then if [ ! -z "$LIMITS" -a "$LIMITS" = 1 ]; then LIMIT=`cat /proc/virtual/$xid/limit | grep $RESOURCE | cut -f4` if [ ${LIMIT:-0} -gt 0 ]; then - echo "$NAME.critical $LIMIT" + echo "${NAME}_${RESOURCE}.critical $LIMIT" fi fi done @@ -367,8 +452,15 @@ fi for xid in $XIDS ; do LABEL=`cat /proc/virtual/$xid/$NAMELOC |grep NodeName |cut -f2` NAME=`echo $LABEL | cut -d. -f1 | tr '-' '_'` - cat /proc/virtual/$xid/limit | awk -v name="${NAME}" -v resource="${RESOURCE}:" \ - '{ if ( $1 == resource ) - printf "%s.value %d\n", name, $2 }' + if [ $RESOURCE = "ALL" ]; then + cat /proc/virtual/$xid/limit | awk -v name="${NAME}" \ + '{ if ( $1 ~ /[A-Z]*:/ ) { + resource = $1 ; gsub(/:/, "", resource); + printf "%s_%s.value %d\n", name, resource, $2 + }}' + else + cat /proc/virtual/$xid/limit | awk -v name="${NAME}" -v resource="${RESOURCE}" \ + '{ if ( $1 ~ resource ) + printf "%s_%s.value %d\n", name, resource, $2 }' + fi done -