From 77c4bfbe37910bcd417dafcc6a671698f6cee6b3 Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Tue, 28 Jul 2015 09:17:24 +0000 Subject: [PATCH 1/1] - from PLD --- munin-Makefile.patch | 121 +++ munin-apache.conf | 64 ++ munin-asyncd.init | 86 +++ munin-asyncd.service | 13 + munin-httpd.conf | 61 ++ munin-lighttpd.conf | 20 + munin-node.init | 56 ++ munin-node.logrotate | 8 + munin-node.service | 13 + munin-plugins.patch | 1362 ++++++++++++++++++++++++++++++++++ munin-separate-configs.patch | 1126 ++++++++++++++++++++++++++++ munin-templatedir.patch | 144 ++++ munin-timeout.patch | 11 + munin.cron | 6 + munin.logrotate | 10 + munin.spec | 366 +++++++++ munin.tmpfiles | 1 + 17 files changed, 3468 insertions(+) create mode 100644 munin-Makefile.patch create mode 100644 munin-apache.conf create mode 100755 munin-asyncd.init create mode 100644 munin-asyncd.service create mode 100644 munin-httpd.conf create mode 100644 munin-lighttpd.conf create mode 100755 munin-node.init create mode 100644 munin-node.logrotate create mode 100644 munin-node.service create mode 100644 munin-plugins.patch create mode 100644 munin-separate-configs.patch create mode 100644 munin-templatedir.patch create mode 100644 munin-timeout.patch create mode 100644 munin.cron create mode 100644 munin.logrotate create mode 100644 munin.spec create mode 100644 munin.tmpfiles diff --git a/munin-Makefile.patch b/munin-Makefile.patch new file mode 100644 index 0000000..e808657 --- /dev/null +++ b/munin-Makefile.patch @@ -0,0 +1,121 @@ +--- munin-1.4.0/Makefile~ 2009-11-27 12:17:18.000000000 +0100 ++++ munin-1.4.0/Makefile 2009-11-30 14:33:15.977700738 +0100 +@@ -77,6 +77,7 @@ + mkdir -p $(CONFDIR)/munin-conf.d + mkdir -p $(LIBDIR) + mkdir -p $(BINDIR) ++ mkdir -p $(SBINDIR) + mkdir -p $(PERLLIB) + mkdir -p $(PERLLIB)/Munin/Master + mkdir -p $(HTMLDIR) +@@ -99,8 +100,8 @@ + test -f $(HTMLDIR)/.htaccess || $(INSTALL) -m 0644 build/master/www/munin-htaccess $(HTMLDIR)/.htaccess + test -f "$(CONFDIR)/munin.conf" || $(INSTALL) -m 0644 build/master/munin.conf $(CONFDIR)/ + +- $(INSTALL) -m 0755 build/master/_bin/munin-cron $(BINDIR)/ +- $(INSTALL) -m 0755 build/master/_bin/munin-check $(BINDIR)/ ++ $(INSTALL) -m 0755 build/master/_bin/munin-cron $(SBINDIR)/ ++ $(INSTALL) -m 0755 build/master/_bin/munin-check $(LIBDIR)/ + $(INSTALL) -m 0755 build/master/_bin/munin-update $(LIBDIR)/ + $(INSTALL) -m 0755 build/master/_bin/munin-graph $(LIBDIR)/ + $(INSTALL) -m 0755 build/master/_bin/munin-html $(LIBDIR)/ +--- munin-1.4.0/Makefile.config~ 2009-11-27 12:17:18.000000000 +0100 ++++ munin-1.4.0/Makefile.config 2009-11-30 14:32:28.827763277 +0100 +@@ -17,10 +17,10 @@ + # + # the base of the Munin installation. + # +-PREFIX = $(DESTDIR)/opt/munin ++PREFIX = $(DESTDIR)/usr + + # Where Munin keeps its configurations (server.conf, client.conf, ++) +-CONFDIR = $(DESTDIR)/etc/opt/munin ++CONFDIR = $(DESTDIR)/etc/munin + + # Server only - where to put munin-cron + BINDIR = $(PREFIX)/bin +@@ -32,31 +32,31 @@ + DOCDIR = $(PREFIX)/doc + + # Where to put man pages +-MANDIR = $(PREFIX)/man ++MANDIR = $(PREFIX)/share/man + + # Where to put internal binaries and plugin repository +-LIBDIR = $(PREFIX)/lib ++LIBDIR = $(PREFIX)/share/munin + + # Server only - Output directory +-HTMLDIR = $(PREFIX)/www/docs +-CGIDIR = $(PREFIX)/www/cgi ++HTMLDIR = $(DESTDIR)/var/lib/munin/html ++CGIDIR = $(LIBDIR)/cgi + + # Where to put internal data for master (RRD, internal files, ...) +-DBDIR = $(DESTDIR)/var/opt/munin ++DBDIR = $(DESTDIR)/var/lib/munin/db + + # Where to put internal data for node (plugin state, ...) +-DBDIRNODE = $(DESTDIR)/var/opt/munin-node ++DBDIRNODE = $(DESTDIR)/var/lib/munin/db-node + + # Client only - Where the spool files are written. Must be writable by + # group "munin", and should be preserved between reboots +-SPOOLDIR = $(DBDIR)/spool ++SPOOLDIR = $(DESTDIR)/var/spool/munin + + # Client only - Where plugins should put their states. Must be writable by + # group "munin", and should be preserved between reboots +-PLUGSTATE = $(DBDIRNODE)/plugin-state ++PLUGSTATE = $(DESTDIR)/var/lib/munin/plugin-state + + # Where Munin should place its logs. +-LOGDIR = $(PREFIX)/log/munin ++LOGDIR = $(DESTDIR)/var/log/munin + + # Location of PID files and other statefiles. On the server, must be + # writable by the user "munin". +@@ -98,7 +98,7 @@ + BASH := /bin/bash + + # Server only - Where to install the perl libraries +-PERLSITELIB := $(shell $(PERL) -V:sitelib | cut -d"'" -f2) ++PERLSITELIB := $(shell $(PERL) -V:vendorlib | cut -d"'" -f2) + PERLLIB = $(DESTDIR)$(PERLSITELIB) + + # Client only - Install plugins for this architecture +@@ -106,7 +106,7 @@ + + # How to figure out the hostname. (Only used in default configuration + # files) +-HOSTNAME := $(shell hostname) ++HOSTNAME := localhost + + # What is the safest way to create a tempfile. + # Default is to figure it out by testing various methods. +@@ -126,9 +126,9 @@ + # Which command to use to check if the USER and GROUP to run Munin as, exists. + # These will work on most modern OSes: + # +-GETENT := $(shell which getent || which true 2>/dev/null) +-CHECKUSER := $(shell $(GETENT) passwd $(USER) >/dev/null 2>/dev/null || (echo "echo User $(USER) nonexistent. Create the user and retry; exit 2")) +-CHECKGROUP := $(shell $(GETENT) group $(GROUP) >/dev/null 2>/dev/null || (echo "echo Group $(GROUP) nonexistent. Create the group and retry; exit 2")) ++GETENT := /bin/true ++CHECKUSER := /bin/true ++CHECKGROUP := /bin/true + + # For OSX, comment out the previous two lines and comment in these + # +@@ -146,9 +146,9 @@ + #CHECKUSER := $(shell pwget -n $(USER) >/dev/null 2>/dev/null || (echo "echo User $(USER) nonexistent. Create the user and retry; exit 2")) + #CHECKGROUP := $(shell grget -n $(GROUP) >/dev/null 2>/dev/null || (echo "echo Group $(GROUP) nonexistent. Create the group and retry; exit 2")) + +-CHOWN := chown +-CHMOD := chmod +-CHGRP := chgrp ++CHOWN := /bin/true ++CHMOD := /bin/true ++CHGRP := /bin/true + + # Java compiler stuff - only needed on the buildhost + JC := javac diff --git a/munin-apache.conf b/munin-apache.conf new file mode 100644 index 0000000..e0d0a0a --- /dev/null +++ b/munin-apache.conf @@ -0,0 +1,64 @@ +Alias /munin/static /etc/webapps/munin/templates/static + + + AllowOverride None + Order allow,deny + Allow from all + + +# Configuration for 'html_strategy cgi' +#ScriptAlias /munin /usr/share/munin/cgi/munin-cgi-html + +ScriptAlias /munin-cgi/munin-cgi-graph /usr/share/munin/cgi/munin-cgi-graph + +# Ensure we can run (fast)cgi scripts + + Options +ExecCGI + + SetHandler fcgid-script + + + SetHandler fastcgi-script + + + + SetHandler cgi-script + + + + AllowOverride None + + Order allow,deny + Allow from all +# OR + # Make Munin password protected +# AuthUserFile /etc/webapps/munin/htpasswd +# AuthName "Munin" +# AuthType Basic +# require valid-user + + +# Configuration for 'html_strategy cron' (default) +Alias /munin /var/lib/munin/html/ + + + AllowOverride None + + Order allow,deny + Allow from all +# OR + # Make Munin password protected +# AuthUserFile /etc/webapps/munin/htpasswd +# AuthName "Munin" +# AuthType Basic +# require valid-user + + + # Set the default expiery time for files 5 minutes 10 seconds + # from their creation (modification) time. + # There are probably new files by that time. + + ExpiresActive On + ExpiresDefault M310 + + diff --git a/munin-asyncd.init b/munin-asyncd.init new file mode 100755 index 0000000..b7a89d1 --- /dev/null +++ b/munin-asyncd.init @@ -0,0 +1,86 @@ +#!/bin/sh +# +# munin-asyncd Start/Stop the munin-asyncd daemon. +# +# chkconfig: 2345 91 09 +# description: munin-asyncd enables asyncronous fetching of +# metrics from munin-node in a Munin monitoring setup. +# +# processname: munin-asyncd +# pidfile: /var/run/munin-asyncd.pid +# +### BEGIN INIT INFO +# Provides: munin-asyncd +# Required-Start: $local_fs $remote_fs $network +# Required-Stop: $local_fs $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Starts and stops munin-asyncd +# Description: munin-asyncd enables asyncronous fetching of +# metrics from munin-node in a Munin monitoring setup. +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +start() { + # Check if the service is already running? + if [ -f /var/lock/subsys/munin-asyncd ]; then + msg_already_running "munin-asyncd" + return + fi + + msg_starting "munin-asyncd" + daemon /usr/sbin/munin-asyncd + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/munin-asyncd +} + +stop() { + if [ ! -f /var/lock/subsys/munin-asyncd ]; then + msg_not_running "munin-asyncd" + return + fi + + msg_stopping "munin-asyncd" + killproc munin-asyncd + rm -f /var/lock/subsys/munin-asyncd +} + +condrestart() { + if [ ! -f /var/lock/subsys/munin-asyncd ]; then + msg_not_running "munin-asyncd" + RETVAL=$1 + return + fi + + stop + start +} + +RETVAL=0 +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload|force-reload) + stop + start + ;; + try-restart) + condrestart 0 + ;; + status) + status --pidfile /var/run/munin-asyncd.pid munin-asyncd + exit $? + ;; + *) + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}" + exit 3 +esac + +exit $RETVAL diff --git a/munin-asyncd.service b/munin-asyncd.service new file mode 100644 index 0000000..77066fe --- /dev/null +++ b/munin-asyncd.service @@ -0,0 +1,13 @@ +[Unit] +Description=Munin Async Server +Documentation=man:munin-node +Requires=munin-node.service +After=network.target munin-node.service + +[Service] +Type=simple +ExecStart=/usr/sbin/munin-asyncd +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/munin-httpd.conf b/munin-httpd.conf new file mode 100644 index 0000000..0823b93 --- /dev/null +++ b/munin-httpd.conf @@ -0,0 +1,61 @@ +Alias /munin/static /etc/webapps/munin/templates/static + + + AllowOverride None + Require all granted + + +# Configuration for 'html_strategy cgi' +#ScriptAlias /munin /usr/share/munin/cgi/munin-cgi-html + +ScriptAlias /munin-cgi/munin-cgi-graph /usr/share/munin/cgi/munin-cgi-graph + +# Ensure we can run (fast)cgi scripts + + Options +ExecCGI + + SetHandler fcgid-script + + + SetHandler fastcgi-script + + + + SetHandler cgi-script + + + + AllowOverride None + + Require all granted +# OR + # Make Munin password protected +# AuthUserFile /etc/webapps/munin/htpasswd +# AuthName "Munin" +# AuthType Basic +# require valid-user + + +# Configuration for 'html_strategy cron' (default) +Alias /munin /var/lib/munin/html/ + + + AllowOverride None + + Require all granted +# OR + # Make Munin password protected +# AuthUserFile /etc/webapps/munin/htpasswd +# AuthName "Munin" +# AuthType Basic +# require valid-user + + + # Set the default expiery time for files 5 minutes 10 seconds + # from their creation (modification) time. + # There are probably new files by that time. + + ExpiresActive On + ExpiresDefault M310 + + diff --git a/munin-lighttpd.conf b/munin-lighttpd.conf new file mode 100644 index 0000000..618af2d --- /dev/null +++ b/munin-lighttpd.conf @@ -0,0 +1,20 @@ +alias.url += ( + "/munin/" => "/var/lib/munin/html/", + "/munin-cgi" => "/usr/share/munin/cgi/", +) + +#$HTTP["url"] =~ "^/munin/" { +# # Make Munin password protected +# auth.backend = "htpasswd" +# auth.backend.htpasswd.userfile = "/etc/webapps/munin/htpasswd" +# +# auth.require += ( +# "/" => ( +# "method" => "basic", +# "realm" => "Munin", +# "require" => "valid-user" +# ) +# ) +#) + +# vim:ts=4 diff --git a/munin-node.init b/munin-node.init new file mode 100755 index 0000000..f9c7c44 --- /dev/null +++ b/munin-node.init @@ -0,0 +1,56 @@ +#! /bin/sh +# +# munin-node Control the Munin Node Server (formerly Linpro RRD client) +# +# chkconfig: 2345 90 10 +# description: munin node agents +# processname: munin-node +# config: /etc/munin/munin-node.conf +# pidfile: /var/run/munin/munin-node.pid + +# Source function library. +. /etc/rc.d/init.d/functions + +RETVAL=0 +PROCNAME=munin-node + +mkdir -p /var/run/munin 2>/dev/null +chown munin /var/run/munin + +# See how we were called. +case "$1" in + start) + if [ ! -f /var/lock/subsys/munin-node ]; then + msg_starting "Munin Node" + daemon --fork --waitfortime 3 --waitforname munin-node munin-node + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/munin-node + else + msg_already_running "Munin Node" + fi + ;; + stop) + if [ -f /var/lock/subsys/munin-node ]; then + msg_stopping "Munin Node" + killproc munin-node + RETVAL=$? + rm -f /var/lock/subsys/munin-node >/dev/null 2>/dev/null + else + msg_not_running "Munin Node" + fi + ;; + status) + status munin-node + exit $? + ;; + restart|reload) + $0 stop + $0 start + exit $? + ;; + *) + echo "Usage: $0 {start|stop|status|restart}" + exit 1 +esac + +exit $RETVAL diff --git a/munin-node.logrotate b/munin-node.logrotate new file mode 100644 index 0000000..2ba1b4f --- /dev/null +++ b/munin-node.logrotate @@ -0,0 +1,8 @@ +/var/log/munin/munin-node.log { + su root http + olddir /var/log/archive/munin + create 640 munin root + postrotate + /bin/killall -q -HUP munin-node + endscript +} diff --git a/munin-node.service b/munin-node.service new file mode 100644 index 0000000..44b7d6d --- /dev/null +++ b/munin-node.service @@ -0,0 +1,13 @@ +[Unit] +Description=Munin Node Server +Documentation=man:munin-node +After=network.target + +[Service] +Type=forking +PIDFile=/var/run/munin/munin-node.pid +ExecStart=/usr/sbin/munin-node +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/munin-plugins.patch b/munin-plugins.patch new file mode 100644 index 0000000..2fade3f --- /dev/null +++ b/munin-plugins.patch @@ -0,0 +1,1362 @@ +diff -urN munin-2.0.17/dists/tarball/plugins.conf munin-2.0.17-plugins/dists/tarball/plugins.conf +--- munin-2.0.17/dists/tarball/plugins.conf 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/dists/tarball/plugins.conf 2013-08-17 13:18:51.817585940 +0200 +@@ -14,6 +14,9 @@ + # + # + ++[*] ++env.logtail /usr/bin/logtail ++ + [mysql*] + #env.mysqlopts -u someuser + +@@ -31,3 +34,128 @@ + + [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 -urN munin-2.0.17/plugins/node.d/amavis.in munin-2.0.17-plugins/plugins/node.d/amavis.in +--- munin-2.0.17/plugins/node.d/amavis.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/amavis.in 2013-08-17 13:18:51.820919315 +0200 +@@ -77,13 +77,12 @@ + =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 @@ + + 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 @@ + 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 -urN munin-2.0.17/plugins/node.d/apache_accesses.in munin-2.0.17-plugins/plugins/node.d/apache_accesses.in +--- munin-2.0.17/plugins/node.d/apache_accesses.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/apache_accesses.in 2013-08-17 13:18:51.817585940 +0200 +@@ -89,6 +89,7 @@ + + 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 "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 -urN munin-2.0.17/plugins/node.d/apache_processes.in munin-2.0.17-plugins/plugins/node.d/apache_processes.in +--- munin-2.0.17/plugins/node.d/apache_processes.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/apache_processes.in 2013-08-17 13:18:51.817585940 +0200 +@@ -96,6 +96,7 @@ + + 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 "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 -urN munin-2.0.17/plugins/node.d/apache_volume.in munin-2.0.17-plugins/plugins/node.d/apache_volume.in +--- munin-2.0.17/plugins/node.d/apache_volume.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/apache_volume.in 2013-08-17 13:18:51.817585940 +0200 +@@ -89,6 +89,7 @@ + + 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 "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 -urN munin-2.0.17/plugins/node.d/bind9.in munin-2.0.17-plugins/plugins/node.d/bind9.in +--- munin-2.0.17/plugins/node.d/bind9.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/bind9.in 2013-08-17 13:18:51.820919315 +0200 +@@ -53,7 +53,7 @@ + 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 @@ + 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 -urN munin-2.0.17/plugins/node.d/courier_.in munin-2.0.17-plugins/plugins/node.d/courier_.in +--- munin-2.0.17/plugins/node.d/courier_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/courier_.in 2013-08-17 13:18:51.817585940 +0200 +@@ -55,7 +55,7 @@ + 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 -urN munin-2.0.17/plugins/node.d/courier_mta_mailstats.in munin-2.0.17-plugins/plugins/node.d/courier_mta_mailstats.in +--- munin-2.0.17/plugins/node.d/courier_mta_mailstats.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/courier_mta_mailstats.in 2013-08-17 13:18:51.817585940 +0200 +@@ -108,7 +108,9 @@ + + if($startsize < $pos) { + # Log rotated +- parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); ++ if (-f $rotlogfile) { ++ parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); ++ } + $pos = 0; + } + +diff -urN munin-2.0.17/plugins/node.d/courier_mta_mailvolume.in munin-2.0.17-plugins/plugins/node.d/courier_mta_mailvolume.in +--- munin-2.0.17/plugins/node.d/courier_mta_mailvolume.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/courier_mta_mailvolume.in 2013-08-17 13:18:51.817585940 +0200 +@@ -98,7 +98,9 @@ + + if($startsize < $pos) { + # Log rotated +- parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); ++ if (-f $rotlogfile) { ++ parseLogfile ($rotlogfile, $pos, (stat $rotlogfile)[7]); ++ } + $pos = 0; + } + +diff -urN munin-2.0.17/plugins/node.d/cupsys_pages.in munin-2.0.17-plugins/plugins/node.d/cupsys_pages.in +--- munin-2.0.17/plugins/node.d/cupsys_pages.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/cupsys_pages.in 2013-08-17 13:18:51.817585940 +0200 +@@ -100,7 +100,9 @@ + } + 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 @@ + 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 -urN munin-2.0.17/plugins/node.d/foldingathome_rank.in munin-2.0.17-plugins/plugins/node.d/foldingathome_rank.in +--- munin-2.0.17/plugins/node.d/foldingathome_rank.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/foldingathome_rank.in 2013-08-17 13:18:51.820919315 +0200 +@@ -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 -urN munin-2.0.17/plugins/node.d/mailman.in munin-2.0.17-plugins/plugins/node.d/mailman.in +--- munin-2.0.17/plugins/node.d/mailman.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/mailman.in 2013-08-17 13:18:51.817585940 +0200 +@@ -38,7 +38,13 @@ + # 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 @@ + $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 -urN munin-2.0.17/plugins/node.d/mysql_.in munin-2.0.17-plugins/plugins/node.d/mysql_.in +--- munin-2.0.17/plugins/node.d/mysql_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/mysql_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -39,6 +39,7 @@ + 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 @@ + 'user' => $ENV{'mysqluser'} || 'root', + 'password' => $ENV{'mysqlpassword'} || '', + 'cache_namespace' => $ENV{'cachenamespace'} || 'munin_mysql', ++ 'nosuper' => $ENV{'mysqlnosuperpriv'} || 0, + ); + + +@@ -927,8 +929,10 @@ + + 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 -urN munin-2.0.17/plugins/node.d/mysql_innodb.in munin-2.0.17-plugins/plugins/node.d/mysql_innodb.in +--- munin-2.0.17/plugins/node.d/mysql_innodb.in 2013-08-17 13:19:03.501062149 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/mysql_innodb.in 2013-08-17 13:18:51.994254767 +0200 +@@ -1,4 +1,4 @@ +-#!@@GOODSH@@ ++#!@@BASH@@ + + : << =cut + +diff -urN munin-2.0.17/plugins/node.d/mysql_slowqueries.in munin-2.0.17-plugins/plugins/node.d/mysql_slowqueries.in +--- munin-2.0.17/plugins/node.d/mysql_slowqueries.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/mysql_slowqueries.in 2013-08-17 13:18:51.817585940 +0200 +@@ -64,5 +64,5 @@ + 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 -urN munin-2.0.17/plugins/node.d/mysql_threads.in munin-2.0.17-plugins/plugins/node.d/mysql_threads.in +--- munin-2.0.17/plugins/node.d/mysql_threads.in 2013-08-17 13:19:03.501062149 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/mysql_threads.in 2013-08-17 13:18:51.994254767 +0200 +@@ -74,5 +74,5 @@ + 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 -urN munin-2.0.17/plugins/node.d/ntp_.in munin-2.0.17-plugins/plugins/node.d/ntp_.in +--- munin-2.0.17/plugins/node.d/ntp_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/ntp_.in 2013-08-17 13:18:51.817585940 +0200 +@@ -57,26 +57,26 @@ + 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 $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 -urN munin-2.0.17/plugins/node.d/ntp_kernel_err.in munin-2.0.17-plugins/plugins/node.d/ntp_kernel_err.in +--- munin-2.0.17/plugins/node.d/ntp_kernel_err.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/ntp_kernel_err.in 2013-08-17 13:18:51.820919315 +0200 +@@ -32,7 +32,7 @@ + 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 @@ + + 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 -urN munin-2.0.17/plugins/node.d/ntp_kernel_pll_freq.in munin-2.0.17-plugins/plugins/node.d/ntp_kernel_pll_freq.in +--- munin-2.0.17/plugins/node.d/ntp_kernel_pll_freq.in 2013-08-17 13:19:03.501062149 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/ntp_kernel_pll_freq.in 2013-08-17 13:18:51.994254767 +0200 +@@ -39,7 +39,7 @@ + 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 @@ + + 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 -urN munin-2.0.17/plugins/node.d/ntp_kernel_pll_off.in munin-2.0.17-plugins/plugins/node.d/ntp_kernel_pll_off.in +--- munin-2.0.17/plugins/node.d/ntp_kernel_pll_off.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/ntp_kernel_pll_off.in 2013-08-17 13:18:51.820919315 +0200 +@@ -32,7 +32,7 @@ + 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 @@ + + 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 -urN munin-2.0.17/plugins/node.d/ntp_offset.in munin-2.0.17-plugins/plugins/node.d/ntp_offset.in +--- munin-2.0.17/plugins/node.d/ntp_offset.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/ntp_offset.in 2013-08-17 13:18:51.820919315 +0200 +@@ -38,9 +38,9 @@ + =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_config () { +- syspeer="$(ntpq -n -p | grep '^[*o]')" ++ syspeer="$(/usr/sbin/ntpq -n -p | grep '^[*o]')" + + set - $syspeer + +@@ -86,7 +86,7 @@ + + do_ () { + # Fetch operation +- syspeer="$(ntpq -n -p | grep '^[*o]')" ++ syspeer="$(/usr/sbin/ntpq -n -p | grep '^[*o]')" + + set - $syspeer + +diff -urN munin-2.0.17/plugins/node.d/ntp_states.in munin-2.0.17-plugins/plugins/node.d/ntp_states.in +--- munin-2.0.17/plugins/node.d/ntp_states.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/ntp_states.in 2013-08-17 13:18:51.820919315 +0200 +@@ -72,10 +72,10 @@ + # 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 @@ + } + + 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 -urN munin-2.0.17/plugins/node.d/nut_misc.in munin-2.0.17-plugins/plugins/node.d/nut_misc.in +--- munin-2.0.17/plugins/node.d/nut_misc.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/nut_misc.in 2013-08-17 13:18:51.820919315 +0200 +@@ -38,7 +38,8 @@ + 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 @@ + 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 @@ + ); + + 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 @@ + } + + 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 -urN munin-2.0.17/plugins/node.d/nut_volts.in munin-2.0.17-plugins/plugins/node.d/nut_volts.in +--- munin-2.0.17/plugins/node.d/nut_volts.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/nut_volts.in 2013-08-17 13:18:51.820919315 +0200 +@@ -14,7 +14,8 @@ + 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 @@ + 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 @@ + ); + + 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 @@ + } + + 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 -urN munin-2.0.17/plugins/node.d/perdition.in munin-2.0.17-plugins/plugins/node.d/perdition.in +--- munin-2.0.17/plugins/node.d/perdition.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/perdition.in 2013-08-17 13:18:51.820919315 +0200 +@@ -56,7 +56,7 @@ + # 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 -urN munin-2.0.17/plugins/node.d/pop_stats.in munin-2.0.17-plugins/plugins/node.d/pop_stats.in +--- munin-2.0.17/plugins/node.d/pop_stats.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/pop_stats.in 2013-08-17 13:18:51.820919315 +0200 +@@ -68,7 +68,9 @@ + 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 -urN munin-2.0.17/plugins/node.d/postgres_scans_.in munin-2.0.17-plugins/plugins/node.d/postgres_scans_.in +--- munin-2.0.17/plugins/node.d/postgres_scans_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/postgres_scans_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -65,7 +65,6 @@ + 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 -urN munin-2.0.17/plugins/node.d/postgres_tuples_.in munin-2.0.17-plugins/plugins/node.d/postgres_tuples_.in +--- munin-2.0.17/plugins/node.d/postgres_tuples_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/postgres_tuples_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -74,7 +74,6 @@ + . " 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 -urN munin-2.0.17/plugins/node.d/slapd_.in munin-2.0.17-plugins/plugins/node.d/slapd_.in +--- munin-2.0.17/plugins/node.d/slapd_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d/slapd_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -37,7 +37,7 @@ + + # 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 -urN munin-2.0.17/plugins/node.d.linux/files_.in munin-2.0.17-plugins/plugins/node.d.linux/files_.in +--- munin-2.0.17/plugins/node.d.linux/files_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/files_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -14,7 +14,7 @@ + #%# capabilities=autoconf + + PROC=${0##*/files_} +-TMPFILE="$MUNIN_PLUGSTATE/munin-files_${PROC}.state" ++TMPFILE="@@PLUGSTATE@@/munin-files_${PROC}.state" + + if [ "$1" = "autoconf" ]; then + if [ -x /usr/sbin/lsof ]; then +diff -urN munin-2.0.17/plugins/node.d.linux/iostat.in munin-2.0.17-plugins/plugins/node.d.linux/iostat.in +--- munin-2.0.17/plugins/node.d.linux/iostat.in 2013-08-17 13:19:03.504395523 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/iostat.in 2013-08-17 13:18:51.994254767 +0200 +@@ -173,7 +173,7 @@ + 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 -urN munin-2.0.17/plugins/node.d.linux/ip_.in munin-2.0.17-plugins/plugins/node.d.linux/ip_.in +--- munin-2.0.17/plugins/node.d.linux/ip_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/ip_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -127,14 +127,18 @@ + # 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 @@ + 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 @@ + + # 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 -urN munin-2.0.17/plugins/node.d.linux/load.in munin-2.0.17-plugins/plugins/node.d.linux/load.in +--- munin-2.0.17/plugins/node.d.linux/load.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/load.in 2013-08-17 13:18:51.820919315 +0200 +@@ -59,20 +59,20 @@ + # 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 @@ + # 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 -urN munin-2.0.17/plugins/node.d.linux/nfs_client.in munin-2.0.17-plugins/plugins/node.d.linux/nfs_client.in +--- munin-2.0.17/plugins/node.d.linux/nfs_client.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/nfs_client.in 2013-08-17 13:18:51.820919315 +0200 +@@ -31,7 +31,7 @@ + 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 @@ + 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 -urN munin-2.0.17/plugins/node.d.linux/nfsd.in munin-2.0.17-plugins/plugins/node.d.linux/nfsd.in +--- munin-2.0.17/plugins/node.d.linux/nfsd.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/nfsd.in 2013-08-17 13:18:51.820919315 +0200 +@@ -31,7 +31,7 @@ + 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 @@ + 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 -urN munin-2.0.17/plugins/node.d.linux/vlan_inetuse_.in munin-2.0.17-plugins/plugins/node.d.linux/vlan_inetuse_.in +--- munin-2.0.17/plugins/node.d.linux/vlan_inetuse_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/vlan_inetuse_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -37,8 +37,8 @@ + 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 @@ + } + } + 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 @@ + } + } + 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 -urN munin-2.0.17/plugins/node.d.linux/vlan_linkuse_.in munin-2.0.17-plugins/plugins/node.d.linux/vlan_linkuse_.in +--- munin-2.0.17/plugins/node.d.linux/vlan_linkuse_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/vlan_linkuse_.in 2013-08-17 13:18:51.820919315 +0200 +@@ -29,8 +29,8 @@ + 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 @@ + } + } + 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 @@ + } + } + close IN; +-die "Error running iptables. Dying\n" if $?; ++die "Error running /usr/sbin/iptables. Dying\n" if $?; + # vim:syntax=perl +diff -urN munin-2.0.17/plugins/node.d.linux/vserver_resources.in munin-2.0.17-plugins/plugins/node.d.linux/vserver_resources.in +--- munin-2.0.17/plugins/node.d.linux/vserver_resources.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-plugins/plugins/node.d.linux/vserver_resources.in 2013-08-17 13:18:51.820919315 +0200 +@@ -245,6 +245,12 @@ + 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 @@ + 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 @@ + + 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 [ ! -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 @@ + 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 +- diff --git a/munin-separate-configs.patch b/munin-separate-configs.patch new file mode 100644 index 0000000..e5da670 --- /dev/null +++ b/munin-separate-configs.patch @@ -0,0 +1,1126 @@ +diff -ur munin-2.0.17/common/lib/Munin/Common/Defaults.pm munin-2.0.17-sep/common/lib/Munin/Common/Defaults.pm +--- munin-2.0.17/common/lib/Munin/Common/Defaults.pm 2013-08-17 12:26:06.386624187 +0200 ++++ munin-2.0.17-sep/common/lib/Munin/Common/Defaults.pm 2013-08-17 12:19:22.386149494 +0200 +@@ -18,7 +18,8 @@ + our $DROPDOWNLIMIT = 1; + + our $MUNIN_PREFIX = ''; +-our $MUNIN_CONFDIR = "$COMPONENT_ROOT/t/config/"; ++our $MUNIN_MCONFDIR = "$COMPONENT_ROOT/t/config/"; ++our $MUNIN_NCONFDIR = "$COMPONENT_ROOT/t/config/"; + our $MUNIN_BINDIR = ''; + our $MUNIN_SBINDIR = ''; + our $MUNIN_DOCDIR = ''; +Only in munin-2.0.17/common/lib/Munin/Common: Defaults.pm.orig +diff -ur munin-2.0.17/doc/installation/configuration.rst munin-2.0.17-sep/doc/installation/configuration.rst +--- munin-2.0.17/doc/installation/configuration.rst 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/doc/installation/configuration.rst 2013-08-17 12:23:16.773630125 +0200 +@@ -9,7 +9,7 @@ + ------- + + Decide which plugins to use. The munin node runs all plugins present +-in CONFDIR/plugins/ ++in NCONFDIR/plugins/ + + The quick auto-plug-and-play solution: + +@@ -59,7 +59,7 @@ + Add some nodes + -------------- + +-Add some nodes to CONFDIR/munin.conf ++Add some nodes to MCONFDIR/munin.conf + + [node.example.com] + address 192.0.2.4 +diff -ur munin-2.0.17/Makefile munin-2.0.17-sep/Makefile +--- munin-2.0.17/Makefile 2013-08-17 12:26:06.386624187 +0200 ++++ munin-2.0.17-sep/Makefile 2013-08-17 12:19:22.386149494 +0200 +@@ -56,7 +56,7 @@ + # a new config. Target _only_ suitable for maintainers. + unconfig: + rm -f $(HTMLDIR)/.htaccess +- rm -f $(CONFDIR)/munin.conf ++ rm -f $(MCONFDIR)/munin.conf + + tags: + -rm -f TAGS +@@ -71,14 +71,15 @@ + mkdir -p $(LOGDIR) + mkdir -p $(STATEDIR) + mkdir -p $(SPOOLDIR) +- mkdir -p $(CONFDIR) ++ mkdir -p $(NCONFDIR) ++ mkdir -p $(MCONFDIR) + $(CHOWN) $(USER) $(LOGDIR) $(STATEDIR) $(SPOOLDIR) + + install-master-prime: $(INFILES_MASTER) install-pre install-master + mkdir -p $(TEMPLATEDIR) + mkdir -p $(TEMPLATEDIR)/static + mkdir -p $(TEMPLATEDIR)/partial +- mkdir -p $(CONFDIR)/munin-conf.d ++ mkdir -p $(MCONFDIR)/munin-conf.d + mkdir -p $(LIBDIR) + mkdir -p $(BINDIR) + mkdir -p $(SBINDIR) +@@ -111,7 +112,7 @@ + $(INSTALL) -m 0644 master/DejaVuSans.ttf $(LIBDIR)/ + + test -f $(HTMLDIR)/.htaccess || $(INSTALL) -m 0644 build/master/www/munin-htaccess $(HTMLDIR)/.htaccess +- test -f "$(CONFDIR)/munin.conf" || $(INSTALL) -m 0644 build/master/munin.conf $(CONFDIR)/ ++ test -f "$(MCONFDIR)/munin.conf" || $(INSTALL) -m 0644 build/master/munin.conf $(MCONFDIR)/ + + $(INSTALL) -m 0755 build/master/_bin/munin-cron $(SBINDIR)/ + $(INSTALL) -m 0755 build/master/_bin/munin-check $(LIBDIR)/ +@@ -140,14 +141,14 @@ + install-plugins-prime: install-plugins build $(PLUGINS) Makefile Makefile.config + @$(CHECKGROUP) + +- mkdir -p $(CONFDIR)/plugins +- mkdir -p $(CONFDIR)/plugin-conf.d ++ mkdir -p $(NCONFDIR)/plugins ++ mkdir -p $(NCONFDIR)/plugin-conf.d + mkdir -p $(LIBDIR)/plugins + mkdir -p $(PLUGSTATE) + + $(CHOWN) root:root $(PLUGSTATE) + $(CHMOD) 0755 $(PLUGSTATE) +- $(CHMOD) 0755 $(CONFDIR)/plugin-conf.d ++ $(CHMOD) 0755 $(NCONFDIR)/plugin-conf.d + + for p in build/plugins/node.d/* build/plugins/node.d.$(OSTYPE)/* ; do \ + if test -f "$$p" ; then \ +@@ -184,7 +185,7 @@ + install-node-prime: install-node-pre install-node + + install-node-pre: build/node/munin-node.conf install-pre +- test -f "$(CONFDIR)/munin-node.conf" || $(INSTALL) -m 0644 build/node/munin-node.conf $(CONFDIR)/ ++ test -f "$(NCONFDIR)/munin-node.conf" || $(INSTALL) -m 0644 build/node/munin-node.conf $(NCONFDIR)/ + + + install-common-prime: build-common install-common +@@ -220,7 +221,8 @@ + @echo "$< -> $@" + @mkdir -p build/`dirname $<` + @sed -e 's|@@PREFIX@@|$(PREFIX)|g' \ +- -e 's|@@CONFDIR@@|$(CONFDIR)|g' \ ++ -e 's|@@MCONFDIR@@|$(MCONFDIR)|g' \ ++ -e 's|@@NCONFDIR@@|$(NCONFDIR)|g' \ + -e 's|@@BINDIR@@|$(BINDIR)|g' \ + -e 's|@@SBINDIR@@|$(SBINDIR)|g' \ + -e 's|@@DOCDIR@@|$(DOCDIR)|g' \ +@@ -261,7 +263,8 @@ + common/blib/lib/Munin/Common/Defaults.pm: common/lib/Munin/Common/Defaults.pm build-common-pre + rm -f common/blib/lib/Munin/Common/Defaults.pm + $(PERL) -pe 's{(PREFIX \s+=\s).*}{\1q{$(PREFIX)};}x; \ +- s{(CONFDIR \s+=\s).*}{\1q{$(CONFDIR)};}x; \ ++ s{(MCONFDIR \s+=\s).*}{\1q{$(MCONFDIR)};}x; \ ++ s{(NCONFDIR \s+=\s).*}{\1q{$(NCONFDIR)};}x; \ + s{(BINDIR \s+=\s).*}{\1q{$(BINDIR)};}x; \ + s{(SBINDIR \s+=\s).*}{\1q{$(SBINDIR)};}x; \ + s{(DOCDIR \s+=\s).*}{\1q{$(DOCDIR)};}x; \ +@@ -388,7 +391,7 @@ + $(MAKE) $@ CONFIG=t/Makefile.config + else + test_plugins = id_default id_root env +-old-test: t/*.t t/install $(addprefix $(CONFDIR)/plugins/,$(test_plugins)) ++old-test: t/*.t t/install $(addprefix $(NCONFDIR)/plugins/,$(test_plugins)) + @for test in t/*.t; do \ + echo -n "$$test: "; \ + PERL5LIB=$(PERLLIB) $(PERL) $$test;\ +@@ -396,10 +399,10 @@ + endif + + node-monkeywrench: install-node +- rm -rf $(CONFDIR)/plugins ++ rm -rf $(NCONFDIR)/plugins + rm -rf $(LIBDIR)/plugins + mkdir -p $(LIBDIR)/plugins +- mkdir -p $(CONFDIR)/plugins ++ mkdir -p $(NCONFDIR)/plugins + cp monkeywrench/plugin-break*_ $(LIBDIR)/plugins/ + $(SBINDIR)/munin-node-configure --suggest + echo 'Done?' +diff -ur munin-2.0.17/Makefile.config munin-2.0.17-sep/Makefile.config +--- munin-2.0.17/Makefile.config 2013-08-17 12:26:06.386624187 +0200 ++++ munin-2.0.17-sep/Makefile.config 2013-08-17 12:19:22.386149494 +0200 +@@ -20,7 +20,8 @@ + PREFIX = $(DESTDIR)/usr + + # Where Munin keeps its configurations (server.conf, client.conf, ++) +-CONFDIR = $(DESTDIR)/etc/munin ++NCONFDIR = $(DESTDIR)/etc/munin ++MCONFDIR = $(DESTDIR)/etc/webapps/munin + + # Server only - where to put munin-cron + BINDIR = $(PREFIX)/bin +Only in munin-2.0.17: Makefile.config.orig +Only in munin-2.0.17: Makefile.orig +diff -ur munin-2.0.17/master/_bin/munin-cgi-graph.in munin-2.0.17-sep/master/_bin/munin-cgi-graph.in +--- munin-2.0.17/master/_bin/munin-cgi-graph.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/_bin/munin-cgi-graph.in 2013-08-17 12:19:22.386149494 +0200 +@@ -44,7 +44,7 @@ + use Log::Log4perl qw( :easy ); + + my $GRAPHER = "$Munin::Common::Defaults::MUNIN_LIBDIR/munin-graph"; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf"; + + my %period = ( "day" => 300, + "week" => 1800, +diff -ur munin-2.0.17/master/_bin/munin-check.in munin-2.0.17-sep/master/_bin/munin-check.in +--- munin-2.0.17/master/_bin/munin-check.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/_bin/munin-check.in 2013-08-17 12:19:22.386149494 +0200 +@@ -163,7 +163,7 @@ + norec=yes owner_ok @@PLUGSTATE@@ @@PLUGINUSER@@ + norec=yes perm_ok @@PLUGSTATE@@ 775 + +-norec=yes perm_ok @@CONFDIR@@/plugin-conf.d 755 ++norec=yes perm_ok @@NCONFDIR@@/plugin-conf.d 755 + + echo "Check done. Please note that this script only checks most things," + echo "not all things." +diff -ur munin-2.0.17/master/_bin/munin-graph.in munin-2.0.17-sep/master/_bin/munin-graph.in +--- munin-2.0.17/master/_bin/munin-graph.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/_bin/munin-graph.in 2013-08-17 12:19:22.386149494 +0200 +@@ -51,7 +51,7 @@ + use Log::Log4perl qw( :easy ); + + my $GRAPHER = "$Munin::Common::Defaults::MUNIN_LIBDIR/munin-graph"; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf"; + + my %period = ( "day" => 300, + "week" => 1800, +diff -ur munin-2.0.17/master/_bin/munin-limits.in munin-2.0.17-sep/master/_bin/munin-limits.in +--- munin-2.0.17/master/_bin/munin-limits.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/_bin/munin-limits.in 2013-08-17 12:19:22.386149494 +0200 +@@ -66,7 +66,7 @@ + + =item B<< --config >> + +-Use EfileE as configuration file. [@@CONFDIR@@/munin.conf] ++Use EfileE as configuration file. [@@MCONFDIR@@/munin.conf] + + =item B<< --always-send >> + +@@ -114,7 +114,7 @@ + + =head1 FILES + +- @@CONFDIR@@/munin.conf ++ @@MCONFDIR@@/munin.conf + @@DBDIR@@/* + @@STATEDIR@@/* + +diff -ur munin-2.0.17/master/_bin/munin-update.in munin-2.0.17-sep/master/_bin/munin-update.in +--- munin-2.0.17/master/_bin/munin-update.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/_bin/munin-update.in 2013-08-17 12:19:22.386149494 +0200 +@@ -139,7 +139,7 @@ + + =item B<< --config_file= >> + +-Use EfileE as the configuration file. [@@CONFDIR@@/munin.conf] ++Use EfileE as the configuration file. [@@MCONFDIR@@/munin.conf] + + =item B<< --[no]debug >> + +@@ -192,7 +192,7 @@ + + =head1 FILES + +- @@CONFDIR@@/munin.conf ++ @@MCONFDIR@@/munin.conf + @@DBDIR@@/* + @@LOGDIR@@/munin-update + @@STATEDIR@@/* +diff -ur munin-2.0.17/master/doc/munin.conf.pod.in munin-2.0.17-sep/master/doc/munin.conf.pod.in +--- munin-2.0.17/master/doc/munin.conf.pod.in 2013-08-17 12:26:06.386624187 +0200 ++++ munin-2.0.17-sep/master/doc/munin.conf.pod.in 2013-08-17 12:19:22.386149494 +0200 +@@ -27,7 +27,7 @@ + [machine1.your.dom] + address localhost + +-The default location of F is F<@@CONFDIR@@/munin.conf>. ++The default location of F is F<@@MCONFDIR@@/munin.conf>. + If your placement deviates from this norm, use the "--config + EfileE"-option when running the munin-* programs. + +@@ -149,20 +149,20 @@ + =item B + + This directive sets the location of the private key to be used for +-TLS. Default is @@CONFDIR@@/munin.pem. The private key and ++TLS. Default is @@MCONFDIR@@/munin.pem. The private key and + certificate can be stored in the same file. Affects: munin-update. + + =item B + + This directive sets the location of the TLS certificate to be used for +-TLS. Default is @@CONFDIR@@/munin.pem. The private key and ++TLS. Default is @@MCONFDIR@@/munin.pem. The private key and + certificate can be stored in the same file. Affects: munin-update. + + =item B + + This directive sets the CA certificate to be used to verify the node's + certificate, if tls_verify_certificate is set to C. Default is +-@@CONFDIR@@/cacert.pem. Affects: munin-update. ++@@MCONFDIR@@/cacert.pem. Affects: munin-update. + + =item B + +Only in munin-2.0.17/master/doc: munin.conf.pod.in.orig +diff -ur munin-2.0.17/master/doc/munin-cron.pod.in munin-2.0.17-sep/master/doc/munin-cron.pod.in +--- munin-2.0.17/master/doc/munin-cron.pod.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/doc/munin-cron.pod.in 2013-08-17 12:19:22.386149494 +0200 +@@ -22,7 +22,7 @@ + + =item B<< --config >> + +-Use EfileE as configuration file. [F<@@CONFDIR@@/munin.conf>] ++Use EfileE as configuration file. [F<@@MCONFDIR@@/munin.conf>] + + =back + +diff -ur munin-2.0.17/master/extras/munin-update_old.in munin-2.0.17-sep/master/extras/munin-update_old.in +--- munin-2.0.17/master/extras/munin-update_old.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/extras/munin-update_old.in 2013-08-17 12:19:22.386149494 +0200 +@@ -43,7 +43,7 @@ + my $STATS; + my $cli_do_fork; + my $cli_timeout; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf"; + my $config; + my $do_fork = 1; + my $serversocket = "munin-server-socket.$$"; +@@ -159,7 +159,7 @@ + --host Limit graphed hosts to . Multiple --host options + may be supplied. + --config Use as configuration file. +- [$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf] ++ [$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf] + --[no]debug View debug messages. [--nodebug] + --[no]fork Don't fork one instance for each host. [--fork] + --timeout= TCP timeout when talking to clients. [$timeout] +@@ -752,11 +752,11 @@ + my $ca_cert; + my $tls_verify; + $key = $cert = munin_get ($config, "tls_pem"); +- $key = &munin_get ($config, "tls_private_key", "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.pem") ++ $key = &munin_get ($config, "tls_private_key", "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.pem") + unless defined $key; +- $cert = &munin_get ($config, "tls_certificate", "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.pem") ++ $cert = &munin_get ($config, "tls_certificate", "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.pem") + unless defined $cert; +- $ca_cert = &munin_get ($config, "tls_ca_certificate", "$Munin::Common::Defaults::MUNIN_CONFDIR/cacert.pem") ++ $ca_cert = &munin_get ($config, "tls_ca_certificate", "$Munin::Common::Defaults::MUNIN_MCONFDIR/cacert.pem") + unless defined $ca_cert; + $tls_verify=&munin_get ($config, "tls_verify_certificate", "no"); + $depth=&munin_get ($config, "tls_verify_depth", 5); +@@ -1088,7 +1088,7 @@ + + =item B<< --config >> + +-Use EfileE as configuration file. [@@CONFDIR@@/munin.conf] ++Use EfileE as configuration file. [@@MCONFDIR@@/munin.conf] + + =item B<< --help >> + +@@ -1124,7 +1124,7 @@ + + =head1 FILES + +- @@CONFDIR@@/munin.conf ++ @@MCONFDIR@@/munin.conf + @@DBDIR@@/* + @@LOGDIR@@/munin-update + @@STATEDIR@@/* +diff -ur munin-2.0.17/master/lib/Munin/Master/Config.pm munin-2.0.17-sep/master/lib/Munin/Master/Config.pm +--- munin-2.0.17/master/lib/Munin/Master/Config.pm 2013-08-17 12:26:06.476625774 +0200 ++++ munin-2.0.17-sep/master/lib/Munin/Master/Config.pm 2013-08-17 12:19:22.386149494 +0200 +@@ -139,7 +139,7 @@ + root_instance => 1, + + config => bless ( { +- config_file => "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf", ++ config_file => "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf", + dbdir => $Munin::Common::Defaults::MUNIN_DBDIR, + debug => 0, + fork => 1, +@@ -153,9 +153,9 @@ + rundir => $Munin::Common::Defaults::MUNIN_STATEDIR, + timeout => 180, + tls => 'disabled', +- tls_ca_certificate => "$Munin::Common::Defaults::MUNIN_CONFDIR/cacert.pem", +- tls_certificate => "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.pem", +- tls_private_key => "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.pem", ++ tls_ca_certificate => "$Munin::Common::Defaults::MUNIN_MCONFDIR/cacert.pem", ++ tls_certificate => "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.pem", ++ tls_private_key => "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.pem", + tls_verify_certificate => 0, + tls_verify_depth => 5, + tmpldir => "$Munin::Common::Defaults::MUNIN_TEMPLATEDIR", +Only in munin-2.0.17/master/lib/Munin/Master: Config.pm.orig +diff -ur munin-2.0.17/master/lib/Munin/Master/GraphOld.pm munin-2.0.17-sep/master/lib/Munin/Master/GraphOld.pm +--- munin-2.0.17/master/lib/Munin/Master/GraphOld.pm 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/lib/Munin/Master/GraphOld.pm 2013-08-17 12:19:22.386149494 +0200 +@@ -90,7 +90,7 @@ + my $skip_stats = 0; + my $stdout = 0; + my $force_run_as_root = 0; +-my $conffile = $Munin::Common::Defaults::MUNIN_CONFDIR . "/munin.conf"; ++my $conffile = $Munin::Common::Defaults::MUNIN_MCONFDIR . "/munin.conf"; + my $libdir = $Munin::Common::Defaults::MUNIN_LIBDIR; + # Note: Nothing by default is more convenient and elliminates code while + # for cgi graphing - but it breaks how munin-graph expected stuff to work. +diff -ur munin-2.0.17/master/lib/Munin/Master/HTMLOld.pm munin-2.0.17-sep/master/lib/Munin/Master/HTMLOld.pm +--- munin-2.0.17/master/lib/Munin/Master/HTMLOld.pm 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/lib/Munin/Master/HTMLOld.pm 2013-08-17 12:19:22.389482886 +0200 +@@ -81,7 +81,7 @@ + my @times = ("day", "week", "month", "year"); + + my $DEBUG = 0; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf"; + my $do_usage = 0; + my $do_version = 0; + my $stdout = 0; +@@ -857,7 +857,7 @@ + --service Compatibility. No effect. + --host Compatibility. No effect. + --config Use as configuration file. +- [/etc/munin/munin.conf] ++ [$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf] + + "; + exit 0; +@@ -892,7 +892,7 @@ + + =item B<< --config >> + +-Use EfileE as configuration file. [/etc/munin/munin.conf] ++Use EfileE as configuration file. [@@MCONFDIR@@/munin.conf] + + =item B<< --help >> + +@@ -915,7 +915,7 @@ + + =head1 FILES + +- @@CONFDIR@@/munin.conf ++ @@MCONFDIR@@/munin.conf + @@DBDIR@@/datafile + @@LOGDIR@@/munin-html + @@HTMLDIR@@/* +diff -ur munin-2.0.17/master/lib/Munin/Master/LimitsOld.pm munin-2.0.17-sep/master/lib/Munin/Master/LimitsOld.pm +--- munin-2.0.17/master/lib/Munin/Master/LimitsOld.pm 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/lib/Munin/Master/LimitsOld.pm 2013-08-17 12:19:22.389482886 +0200 +@@ -52,7 +52,7 @@ + use Munin::Common::Defaults; + + my $DEBUG = 0; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf"; + my $do_usage = 0; + my $do_version = 0; + my @limit_hosts = (); +@@ -230,7 +230,7 @@ + --contact Limit notified contacts to . Multiple + --contact options may be supplied. + --config Use as configuration file. +- [/etc/munin/munin.conf] ++ [$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf] + + "; + exit 0; +Only in munin-2.0.17/master/lib/Munin/Master: Node.pm.orig +diff -ur munin-2.0.17/master/lib/Munin/Master/Utils.pm munin-2.0.17-sep/master/lib/Munin/Master/Utils.pm +--- munin-2.0.17/master/lib/Munin/Master/Utils.pm 2013-08-17 12:26:06.476625774 +0200 ++++ munin-2.0.17-sep/master/lib/Munin/Master/Utils.pm 2013-08-17 12:19:22.389482886 +0200 +@@ -115,7 +115,7 @@ + }, + }; + +-my $configfile="$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf"; ++my $configfile="$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf"; + + # Fields to copy when "aliasing" a field + my @COPY_FIELDS = ("label", "draw", "type", "rrdfile", "fieldname", "info"); +Only in munin-2.0.17/master/lib/Munin/Master: Utils.pm.orig +diff -ur munin-2.0.17/master/munin.conf.in munin-2.0.17-sep/master/munin.conf.in +--- munin-2.0.17/master/munin.conf.in 2013-08-17 12:26:06.476625774 +0200 ++++ munin-2.0.17-sep/master/munin.conf.in 2013-08-17 12:19:22.389482886 +0200 +@@ -24,7 +24,7 @@ + # cgitmpdir @@DBDIR@@/cgi-tmp + + # (Exactly one) directory to include all files from. +-includedir @@CONFDIR@@/munin-conf.d ++includedir @@MCONFDIR@@/munin-conf.d + + # You can choose the time reference for "DERIVE" like graphs, and show + # "per minute", "per hour" values instead of the default "per second" +Only in munin-2.0.17/master: munin.conf.in.orig +diff -ur munin-2.0.17/master/t/munin_master_config.t munin-2.0.17-sep/master/t/munin_master_config.t +--- munin-2.0.17/master/t/munin_master_config.t 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/t/munin_master_config.t 2013-08-17 12:23:31.933897977 +0200 +@@ -24,7 +24,7 @@ + }, + + config => { +- config_file => "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.conf", ++ config_file => "$Munin::Common::Defaults::MUNIN_MCONFDIR/munin.conf", + dbdir => '/opt/munin/sandbox/var/opt/munin', + debug => 0, + fork => 1, +diff -ur munin-2.0.17/master/www/munin-htaccess.in munin-2.0.17-sep/master/www/munin-htaccess.in +--- munin-2.0.17/master/www/munin-htaccess.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/master/www/munin-htaccess.in 2013-08-17 12:19:22.389482886 +0200 +@@ -9,7 +9,7 @@ + # + # + +-AuthUserFile @@CONFDIR@@/munin-htpasswd ++AuthUserFile @@MCONFDIR@@/munin-htpasswd + AuthName "Munin" + AuthType Basic + require valid-user +diff -ur munin-2.0.17/node/bin/munindoc munin-2.0.17-sep/node/bin/munindoc +--- munin-2.0.17/node/bin/munindoc 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/bin/munindoc 2013-08-17 12:19:22.389482886 +0200 +@@ -48,7 +48,7 @@ + + # Dirs in which to look for $plugin.pod and $plugin files. + my @DIRS = ("$Munin::Common::Defaults::MUNIN_LIBDIR/plugins", +- "$Munin::Common::Defaults::MUNIN_CONFDIR/plugins", ++ "$Munin::Common::Defaults::MUNIN_NCONFDIR/plugins", + "$Munin::Common::Defaults::MUNIN_PERLLIB"); + + File::Find::find({wanted => \&wanted_pod}, @DIRS); +diff -ur munin-2.0.17/node/doc/munin-node.conf.pod munin-2.0.17-sep/node/doc/munin-node.conf.pod +--- munin-2.0.17/node/doc/munin-node.conf.pod 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/doc/munin-node.conf.pod 2013-08-17 12:24:04.784478220 +0200 +@@ -91,20 +91,20 @@ + =item B + + This directive sets the location of the private key to be used for +-TLS. Default is @@CONFDIR@@/munin-node.pem. The private key and ++TLS. Default is @@NCONFDIR@@/munin-node.pem. The private key and + certificate can be stored in the same file. + + =item B + + This directive sets the location of the TLS certificate to be used for +-TLS. Default is @@CONFDIR@@/munin-node.pem. The private key and ++TLS. Default is @@NCONFDIR@@/munin-node.pem. The private key and + certificate can be stored in the same file. + + =item B + + This directive sets the CA certificate to be used to verify the node's + certificate, if tls_verify_certificate is set to C. Default is +-@@CONFDIR@@/cacert.pem. ++@@NCONFDIR@@/cacert.pem. + + =item B + +diff -ur munin-2.0.17/node/extras/munin-node-simple.in munin-2.0.17-sep/node/extras/munin-node-simple.in +--- munin-2.0.17/node/extras/munin-node-simple.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/extras/munin-node-simple.in 2013-08-17 12:19:22.389482886 +0200 +@@ -28,8 +28,8 @@ + + $| = 1; + +-my $clientdir = "@@CONFDIR@@/node.d"; +-my $conffile = "@@CONFDIR@@/node-simple.conf"; ++my $clientdir = "@@NCONFDIR@@/node.d"; ++my $conffile = "@@NCONFDIR@@/node-simple.conf"; + my $version = "@@VERSION@@"; + + # Empty environment +diff -ur munin-2.0.17/node/lib/Munin/Node/Config.pm munin-2.0.17-sep/node/lib/Munin/Node/Config.pm +--- munin-2.0.17/node/lib/Munin/Node/Config.pm 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/lib/Munin/Node/Config.pm 2013-08-17 12:19:22.389482886 +0200 +@@ -25,7 +25,7 @@ + my ($class) = @_; + + $instance ||= bless { +- config_file => "$Munin::Common::Defaults::MUNIN_CONFDIR/munin-node.conf", ++ config_file => "$Munin::Common::Defaults::MUNIN_NCONFDIR/munin-node.conf", + }, $class; + + return $instance; +diff -ur munin-2.0.17/node/lib/Munin/Node/Server.pm munin-2.0.17-sep/node/lib/Munin/Node/Server.pm +--- munin-2.0.17/node/lib/Munin/Node/Server.pm 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/lib/Munin/Node/Server.pm 2013-08-17 12:19:22.389482886 +0200 +@@ -263,11 +263,11 @@ + my $mode = $session->{tls_mode}; + + my $key = $config->{tls_private_key} +- || "$Munin::Common::Defaults::MUNIN_CONFDIR/munin-node.pem"; ++ || "$Munin::Common::Defaults::MUNIN_NCONFDIR/munin-node.pem"; + my $cert = $config->{tls_certificate} +- || "$Munin::Common::Defaults::MUNIN_CONFDIR/munin-node.pem"; ++ || "$Munin::Common::Defaults::MUNIN_NCONFDIR/munin-node.pem"; + my $ca_cert = $config->{tls_ca_certificate} +- || "$Munin::Common::Defaults::MUNIN_CONFDIR/cacert.pem"; ++ || "$Munin::Common::Defaults::MUNIN_NCONFDIR/cacert.pem"; + my $tls_verify = $config->{tls_verify_certificate} + || 0; + my $tls_match = $config->{tls_match}; +diff -ur munin-2.0.17/node/lib/Munin/Node/Service.pm munin-2.0.17-sep/node/lib/Munin/Node/Service.pm +--- munin-2.0.17/node/lib/Munin/Node/Service.pm 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/lib/Munin/Node/Service.pm 2013-08-17 12:24:22.264786886 +0200 +@@ -22,7 +22,7 @@ + my ($class, %args) = @_; + + # Set defaults +- $args{servicedir} ||= "$Munin::Common::Defaults::MUNIN_CONFDIR/plugins"; ++ $args{servicedir} ||= "$Munin::Common::Defaults::MUNIN_NCONFDIR/plugins"; + + $args{defuser} ||= getpwnam $Munin::Common::Defaults::MUNIN_PLUGINUSER; + $args{defgroup} ||= getgrnam $Munin::Common::Defaults::MUNIN_GROUP; +diff -ur munin-2.0.17/node/sbin/munin-node munin-2.0.17-sep/node/sbin/munin-node +--- munin-2.0.17/node/sbin/munin-node 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/sbin/munin-node 2013-08-17 12:19:22.389482886 +0200 +@@ -36,8 +36,8 @@ + use Munin::Node::Server; + + my $servicedir; +-my $sconfdir = "$Munin::Common::Defaults::MUNIN_CONFDIR/plugin-conf.d"; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin-node.conf"; ++my $sconfdir = "$Munin::Common::Defaults::MUNIN_NCONFDIR/plugin-conf.d"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_NCONFDIR/munin-node.conf"; + my $DEBUG = 0; + my $PIDEBUG = 0; + my $paranoia = 0; +@@ -164,7 +164,7 @@ + + =item B<< --config >> + +-Use EfileE as configuration file. [@@CONFDIR@@/munin-node.conf] ++Use EfileE as configuration file. [@@NCONFDIR@@/munin-node.conf] + + =item B< --[no]paranoia > + +@@ -187,9 +187,9 @@ + + =head1 FILES + +- @@CONFDIR@@/munin-node.conf +- @@CONFDIR@@/plugins/* +- @@CONFDIR@@/plugin-conf.d/* ++ @@NCONFDIR@@/munin-node.conf ++ @@NCONFDIR@@/plugins/* ++ @@NCONFDIR@@/plugin-conf.d/* + @@STATEDIR@@/munin-node.pid + @@LOGDIR@@/munin-node.log + +diff -ur munin-2.0.17/node/sbin/munin-node-configure munin-2.0.17-sep/node/sbin/munin-node-configure +--- munin-2.0.17/node/sbin/munin-node-configure 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/sbin/munin-node-configure 2013-08-17 12:19:22.489484658 +0200 +@@ -76,9 +76,9 @@ + + sub parse_args + { +- my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin-node.conf"; +- my $servicedir = "$Munin::Common::Defaults::MUNIN_CONFDIR/plugins"; +- my $sconfdir = "$Munin::Common::Defaults::MUNIN_CONFDIR/plugin-conf.d"; ++ my $conffile = "$Munin::Common::Defaults::MUNIN_NCONFDIR/munin-node.conf"; ++ my $servicedir = "$Munin::Common::Defaults::MUNIN_NCONFDIR/plugins"; ++ my $sconfdir = "$Munin::Common::Defaults::MUNIN_NCONFDIR/plugin-conf.d"; + my $libdir = "$Munin::Common::Defaults::MUNIN_LIBDIR/plugins"; + + my $debug = 0; +@@ -492,15 +492,15 @@ + + =item B<< --config >> + +-Override configuration file [@@CONFDIR@@/munin-node.conf] ++Override configuration file [@@NCONFDIR@@/munin-node.conf] + + =item B<< --servicedir >> + +-Override plugin directory [@@CONFDIR@@/plugins/] ++Override plugin directory [@@NCONFDIR@@/plugins/] + + =item B<< --sconfdir >> + +-Override plugin configuration directory [@@CONFDIR@@/plugin-conf.d/] ++Override plugin configuration directory [@@NCONFDIR@@/plugin-conf.d/] + + =item B<< --libdir >> + +@@ -648,9 +648,9 @@ + + =head1 FILES + +- @@CONFDIR@@/munin-node.conf +- @@CONFDIR@@/plugin-conf.d/* +- @@CONFDIR@@/plugins/* ++ @@NCONFDIR@@/munin-node.conf ++ @@NCONFDIR@@/plugin-conf.d/* ++ @@NCONFDIR@@/plugins/* + @@LIBDIR@@/plugins/plugins.history + @@LIBDIR@@/plugins/* + +diff -ur munin-2.0.17/node/sbin/munin-run munin-2.0.17-sep/node/sbin/munin-run +--- munin-2.0.17/node/sbin/munin-run 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/sbin/munin-run 2013-08-17 12:19:22.489484658 +0200 +@@ -35,7 +35,7 @@ + + my $services; + my $servicedir; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin-node.conf"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_NCONFDIR/munin-node.conf"; + my $DEBUG = 0; + my $PIDEBUG = 0; + my $paranoia = 0; +@@ -98,7 +98,7 @@ + sub parse_args + { + # Default configuration values +- my $sconfdir = "$Munin::Common::Defaults::MUNIN_CONFDIR/plugin-conf.d"; ++ my $sconfdir = "$Munin::Common::Defaults::MUNIN_NCONFDIR/plugin-conf.d"; + my $sconffile; + + my ($plugin, $arg); +@@ -189,15 +189,15 @@ + + =item B<< --config >> + +-Use EfileE as configuration file. [@@CONFDIR@@/munin-node.conf] ++Use EfileE as configuration file. [@@NCONFDIR@@/munin-node.conf] + + =item B<< --servicedir >> + +-Use EdirE as plugin dir. [@@CONFDIR@@/plugins/] ++Use EdirE as plugin dir. [@@NCONFDIR@@/plugins/] + + =item B<< --sconfdir >> + +-Use EdirE as plugin configuration dir. [@@CONFDIR@@/plugin-conf.d/] ++Use EdirE as plugin configuration dir. [@@NCONFDIR@@/plugin-conf.d/] + + =item B<< --sconffile >> + +@@ -230,9 +230,9 @@ + + =head1 FILES + +- @@CONFDIR@@/munin-node.conf +- @@CONFDIR@@/plugins/* +- @@CONFDIR@@/plugin-conf.d/* ++ @@NCONFDIR@@/munin-node.conf ++ @@NCONFDIR@@/plugins/* ++ @@NCONFDIR@@/plugin-conf.d/* + @@STATEDIR@@/munin-node.pid + @@LOGDIR@@/munin-node.log + +diff -ur munin-2.0.17/node/sbin/munin-sched munin-2.0.17-sep/node/sbin/munin-sched +--- munin-2.0.17/node/sbin/munin-sched 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/node/sbin/munin-sched 2013-08-17 12:24:54.562023692 +0200 +@@ -34,8 +34,8 @@ + use Munin::Node::ProxySpooler; + + my $servicedir; +-my $sconfdir = "$Munin::Common::Defaults::MUNIN_CONFDIR/plugin-conf.d"; +-my $conffile = "$Munin::Common::Defaults::MUNIN_CONFDIR/munin-node.conf"; ++my $sconfdir = "$Munin::Common::Defaults::MUNIN_NCONFDIR/plugin-conf.d"; ++my $conffile = "$Munin::Common::Defaults::MUNIN_NCONFDIR/munin-node.conf"; + my $spooldir = $Munin::Common::Defaults::MUNIN_SPOOLDIR; + + my ($host, $port); +@@ -164,7 +164,7 @@ + + =item B<< --config >> + +-Use EfileE as configuration file. [@@CONFDIR@@/munin-node.conf] ++Use EfileE as configuration file. [@@NCONFDIR@@/munin-node.conf] + + =item B< --[no]paranoia > + +@@ -182,9 +182,9 @@ + + =head1 FILES + +- @@CONFDIR@@/munin-node.conf +- @@CONFDIR@@/plugins/* +- @@CONFDIR@@/plugin-conf.d/* ++ @@NCONFDIR@@/munin-node.conf ++ @@NCONFDIR@@/plugins/* ++ @@NCONFDIR@@/plugin-conf.d/* + @@STATEDIR@@/munin-sched.pid + @@LOGDIR@@/munin-sched.log + +diff -ur munin-2.0.17/plugins/node.d/exim_mailqueue.in munin-2.0.17-sep/plugins/node.d/exim_mailqueue.in +--- munin-2.0.17/plugins/node.d/exim_mailqueue.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/exim_mailqueue.in 2013-08-17 12:19:22.489484658 +0200 +@@ -15,7 +15,7 @@ + [exim_*] + user exim + +-Configuration parameters for a file in @@CONFDIR@@/plugin-conf.d/ ++Configuration parameters for a file in @@NCONFDIR@@/plugin-conf.d/ + if you need to override the defaults below: + + [exim_mailqueue] +diff -ur munin-2.0.17/plugins/node.d/ipmi_sensor_.in munin-2.0.17-sep/plugins/node.d/ipmi_sensor_.in +--- munin-2.0.17/plugins/node.d/ipmi_sensor_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/ipmi_sensor_.in 2013-08-17 12:19:22.489484658 +0200 +@@ -17,7 +17,7 @@ + ipmitool probably needs to be run as root, and it may take more than + 10 seconds on some hosts. + +-Add the following to your @@CONFDIR@@/munin-node: ++Add the following to your @@NCONFDIR@@/munin-node: + + [ipmi_sensor_*] + user root +@@ -49,7 +49,7 @@ + + =head1 BUGS + +-Plugin reads @@CONFDIR@@/ipmi directly, instead of reading environment ++Plugin reads @@NCONFDIR@@/ipmi directly, instead of reading environment + variables. + + =head1 MAGIC MARKERS +@@ -72,7 +72,7 @@ + CACHEDIR = os.environ['MUNIN_PLUGSTATE'] + CACHEFILE = "plugin-ipmi_sensor.cache" + CACHEAGE = 120 +-CONFIG = '@@CONFDIR@@/ipmi' ++CONFIG = '@@NCONFDIR@@/ipmi' + + + +diff -ur munin-2.0.17/plugins/node.d/mysql_innodb.in munin-2.0.17-sep/plugins/node.d/mysql_innodb.in +--- munin-2.0.17/plugins/node.d/mysql_innodb.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/mysql_innodb.in 2013-08-17 12:19:22.489484658 +0200 +@@ -34,7 +34,7 @@ + + =head1 CONFIGURATION + +-Configuration parameters for @@CONFDIR@@/mysql_innodb, ++Configuration parameters for @@NCONFDIR@@/mysql_innodb, + if you need to override the defaults below: + + [mysql_innodb] +diff -ur munin-2.0.17/plugins/node.d/mysql_isam_space_.in munin-2.0.17-sep/plugins/node.d/mysql_isam_space_.in +--- munin-2.0.17/plugins/node.d/mysql_isam_space_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/mysql_isam_space_.in 2013-08-17 12:19:22.489484658 +0200 +@@ -8,7 +8,7 @@ + + =head1 CONFIGURATION + +-Configuration parameters for @@CONFDIR@@/PLUGIN, ++Configuration parameters for @@NCONFDIR@@/PLUGIN, + if you need to override the defaults below: + + [mysql_isam_space_*] +diff -ur munin-2.0.17/plugins/node.d/mysql_threads.in munin-2.0.17-sep/plugins/node.d/mysql_threads.in +--- munin-2.0.17/plugins/node.d/mysql_threads.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/mysql_threads.in 2013-08-17 12:19:22.489484658 +0200 +@@ -9,7 +9,7 @@ + + =head1 CONFIGURATION + +-Configuration parameters for @@CONFDIR@@/mysql_threads, if you ++Configuration parameters for @@NCONFDIR@@/mysql_threads, if you + need to override the defaults below: + + [mysql_threads] +diff -ur munin-2.0.17/plugins/node.d/named.in munin-2.0.17-sep/plugins/node.d/named.in +--- munin-2.0.17/plugins/node.d/named.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/named.in 2013-08-17 12:19:22.489484658 +0200 +@@ -34,7 +34,7 @@ + + =head1 CONFIGURATION + +-Configuration parameters for @@CONFDIR@@/named, ++Configuration parameters for @@NCONFDIR@@/named, + if you need to override the defaults below: + + [named] +diff -ur munin-2.0.17/plugins/node.d/ntp_kernel_pll_freq.in munin-2.0.17-sep/plugins/node.d/ntp_kernel_pll_freq.in +--- munin-2.0.17/plugins/node.d/ntp_kernel_pll_freq.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/ntp_kernel_pll_freq.in 2013-08-17 12:19:22.489484658 +0200 +@@ -12,7 +12,7 @@ + + No configuration + +-This plugin optionally reads the file @@CONFDIR@@/ntp-freq-comp, which ++This plugin optionally reads the file @@NCONFDIR@@/ntp-freq-comp, which + should contain a number to be added to the frequency read by ntpdc. + + =head1 AUTHORS +@@ -46,8 +46,8 @@ + exit 0 + fi + +-if [ -f @@CONFDIR@@/ntp-freq-comp ]; then +- fcomp=`cat @@CONFDIR@@/ntp-freq-comp` ++if [ -f @@NCONFDIR@@/ntp-freq-comp ]; then ++ fcomp=`cat @@NCONFDIR@@/ntp-freq-comp` + else + fcomp=0 + fi +diff -ur munin-2.0.17/plugins/node.d/postfix_mailstats.in munin-2.0.17-sep/plugins/node.d/postfix_mailstats.in +--- munin-2.0.17/plugins/node.d/postfix_mailstats.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/postfix_mailstats.in 2013-08-17 12:19:22.489484658 +0200 +@@ -8,7 +8,7 @@ + + =head1 CONFIGURATION + +-Configuration parameters for @@CONFDIR@@/postfix_mailstats, ++Configuration parameters for @@NCONFDIR@@/postfix_mailstats, + if you need to override the defaults below: + + [postfix_mailstats] +diff -ur munin-2.0.17/plugins/node.d/psu_.in munin-2.0.17-sep/plugins/node.d/psu_.in +--- munin-2.0.17/plugins/node.d/psu_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/psu_.in 2013-08-17 12:19:22.489484658 +0200 +@@ -15,7 +15,7 @@ + + Example: + +- ln -s @@LIBDIR@@/plugins/psu_ @@CONFDIR@@/plugins/psu_foo ++ ln -s @@LIBDIR@@/plugins/psu_ @@NCONFDIR@@/plugins/psu_foo + + ...will monitor the user "foo" + +diff -ur munin-2.0.17/plugins/node.d/squeezebox_.in munin-2.0.17-sep/plugins/node.d/squeezebox_.in +--- munin-2.0.17/plugins/node.d/squeezebox_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/squeezebox_.in 2013-08-17 12:19:22.489484658 +0200 +@@ -20,7 +20,7 @@ + non-default configuration, please use the environment variables + 'squeezebox_host' and 'squeezebox_port' to connect. Also, if your + nc(1) binary is not called "nc", or not the one in $PATH, please define it +-in the plugin's environment file (@@CONFDIR@@/squeezebox or similar). ++in the plugin's environment file (@@NCONFDIR@@/squeezebox or similar). + + Sample follows: + +diff -ur munin-2.0.17/plugins/node.d/varnish_.in munin-2.0.17-sep/plugins/node.d/varnish_.in +--- munin-2.0.17/plugins/node.d/varnish_.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d/varnish_.in 2013-08-17 12:19:22.492818051 +0200 +@@ -54,7 +54,7 @@ + You can link them yourself with something like this: + + ln -s @@LIBDIR@@/plugins/varnish_ \ +- @@CONFDIR@@/plugins/varnish_data_structures ++ @@NCONFDIR@@/plugins/varnish_data_structures + + =head1 INTERPRETATION + +diff -ur munin-2.0.17/plugins/node.d.cygwin/df.in munin-2.0.17-sep/plugins/node.d.cygwin/df.in +--- munin-2.0.17/plugins/node.d.cygwin/df.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.cygwin/df.in 2013-08-17 12:25:08.005594281 +0200 +@@ -13,7 +13,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + The plugin excludes per default the following special, read-only or + dynamically allocating file systems from graphing: +diff -ur munin-2.0.17/plugins/node.d.debug/if.in munin-2.0.17-sep/plugins/node.d.debug/if.in +--- munin-2.0.17/plugins/node.d.debug/if.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.debug/if.in 2013-08-17 12:25:17.379093018 +0200 +@@ -21,7 +21,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 MAGIC MARKERS + +diff -ur munin-2.0.17/plugins/node.d.debug/tc.in munin-2.0.17-sep/plugins/node.d.debug/tc.in +--- munin-2.0.17/plugins/node.d.debug/tc.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.debug/tc.in 2013-08-17 12:25:26.375918427 +0200 +@@ -21,7 +21,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 MAGIC MARKERS + +diff -ur munin-2.0.17/plugins/node.d.linux/acpi.in munin-2.0.17-sep/plugins/node.d.linux/acpi.in +--- munin-2.0.17/plugins/node.d.linux/acpi.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/acpi.in 2013-08-17 12:19:22.492818051 +0200 +@@ -17,7 +17,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 INTERPRETATION + +diff -ur munin-2.0.17/plugins/node.d.linux/apt.in munin-2.0.17-sep/plugins/node.d.linux/apt.in +--- munin-2.0.17/plugins/node.d.linux/apt.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/apt.in 2013-08-17 12:19:22.492818051 +0200 +@@ -38,7 +38,7 @@ + + =head1 USAGE + +-Link this plugin in @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin in @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 NOTES + +diff -ur munin-2.0.17/plugins/node.d.linux/df.in munin-2.0.17-sep/plugins/node.d.linux/df.in +--- munin-2.0.17/plugins/node.d.linux/df.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/df.in 2013-08-17 12:19:22.492818051 +0200 +@@ -28,7 +28,7 @@ + env.warning 92 + env.critical 98 + +-Put it in a file in @@CONFDIR@@/plugin-conf.d/ and restart the munin-node. ++Put it in a file in @@NCONFDIR@@/plugin-conf.d/ and restart the munin-node. + + You may specify filesystem specific warning and critical levels: + +@@ -55,7 +55,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 MAGIC MARKERS + +diff -ur munin-2.0.17/plugins/node.d.linux/df_inode.in munin-2.0.17-sep/plugins/node.d.linux/df_inode.in +--- munin-2.0.17/plugins/node.d.linux/df_inode.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/df_inode.in 2013-08-17 12:25:37.609449943 +0200 +@@ -28,7 +28,7 @@ + env.warning 92 + env.critical 98 + +-Put it in a file in @@CONFDIR@@/plugin-conf.d/ and restart the munin-node. ++Put it in a file in @@NCONFDIR@@/plugin-conf.d/ and restart the munin-node. + + You may specify filesystem specific warning and critical levels: + +@@ -55,7 +55,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 MAGIC MARKERS + +diff -ur munin-2.0.17/plugins/node.d.linux/fw_conntrack.in munin-2.0.17-sep/plugins/node.d.linux/fw_conntrack.in +--- munin-2.0.17/plugins/node.d.linux/fw_conntrack.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/fw_conntrack.in 2013-08-17 12:19:22.492818051 +0200 +@@ -11,7 +11,7 @@ + + =head2 CONFIGURATION EXAMPLE + +-@@CONFDIR@@/plugin-conf.d/global or other file in that dir must contain: ++@@NCONFDIR@@/plugin-conf.d/global or other file in that dir must contain: + + [fw_*] + user root +diff -ur munin-2.0.17/plugins/node.d.linux/fw_forwarded_local.in munin-2.0.17-sep/plugins/node.d.linux/fw_forwarded_local.in +--- munin-2.0.17/plugins/node.d.linux/fw_forwarded_local.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/fw_forwarded_local.in 2013-08-17 12:19:22.492818051 +0200 +@@ -10,7 +10,7 @@ + + =head2 CONFIGURATION EXAMPLE + +-@@CONFDIR@@/plugin-conf.d/global or other file in that dir must contain: ++@@NCONFDIR@@/plugin-conf.d/global or other file in that dir must contain: + + [fw_*] + user root +diff -ur munin-2.0.17/plugins/node.d.linux/fw_packets.in munin-2.0.17-sep/plugins/node.d.linux/fw_packets.in +--- munin-2.0.17/plugins/node.d.linux/fw_packets.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/fw_packets.in 2013-08-17 12:19:22.492818051 +0200 +@@ -11,7 +11,7 @@ + + =head1 CONFIGURATION EXAMPLE + +-@@CONFDIR@@/plugin-conf.d/global or other file in that dir must contain: ++@@NCONFDIR@@/plugin-conf.d/global or other file in that dir must contain: + + [fw*] + user root +diff -ur munin-2.0.17/plugins/node.d.linux/iostat.in munin-2.0.17-sep/plugins/node.d.linux/iostat.in +--- munin-2.0.17/plugins/node.d.linux/iostat.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/iostat.in 2013-08-17 12:19:22.492818051 +0200 +@@ -24,7 +24,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 INTERPRETATION + +diff -ur munin-2.0.17/plugins/node.d.linux/iostat_ios.in munin-2.0.17-sep/plugins/node.d.linux/iostat_ios.in +--- munin-2.0.17/plugins/node.d.linux/iostat_ios.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/iostat_ios.in 2013-08-17 12:19:22.492818051 +0200 +@@ -15,7 +15,7 @@ + + =head1 USAGE + +-Link this into @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this into @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 INTERPRETATION + +diff -ur munin-2.0.17/plugins/node.d.linux/irqstats.in munin-2.0.17-sep/plugins/node.d.linux/irqstats.in +--- munin-2.0.17/plugins/node.d.linux/irqstats.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/plugins/node.d.linux/irqstats.in 2013-08-17 12:19:22.492818051 +0200 +@@ -15,7 +15,7 @@ + + =head1 USAGE + +-Link this plugin to @@CONFDIR@@/plugins/ and restart the munin-node. ++Link this plugin to @@NCONFDIR@@/plugins/ and restart the munin-node. + + =head1 INTERPRETATION + +diff -ur munin-2.0.17/resources/hpux-init.d_munin-node.in munin-2.0.17-sep/resources/hpux-init.d_munin-node.in +--- munin-2.0.17/resources/hpux-init.d_munin-node.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/resources/hpux-init.d_munin-node.in 2013-08-17 12:19:22.492818051 +0200 +@@ -6,7 +6,7 @@ + PATH=/sbin:/bin:/usr/sbin:/usr/bin + NAME=munin-node + DAEMON=@@SBINDIR@@/$NAME +-CONFFILE=@@CONFDIR@@/munin-node.conf ++CONFFILE=@@NCONFDIR@@/munin-node.conf + RUN_AS=$(awk '$1~/user/{print$2}' $CONFFILE) + PIDFILE=$(awk '$1~/pid/{print$2}' $CONFFILE) + MYCONF=/etc/rc.config.d/muninconf +diff -ur munin-2.0.17/resources/linux-cron.d_munin-node.in munin-2.0.17-sep/resources/linux-cron.d_munin-node.in +--- munin-2.0.17/resources/linux-cron.d_munin-node.in 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/resources/linux-cron.d_munin-node.in 2013-08-17 12:19:22.492818051 +0200 +@@ -8,5 +8,5 @@ + # an hour (12 invokations an hour, 1 in 12 chance that the update will + # happen), but ensure that there will never be more than two hour (7200 + # seconds) interval between updates.. +-*/5 * * * * root [ -x @@CONFDIR@@/plugins/apt ] && @@CONFDIR@@/plugins/apt update 7200 12 >/dev/null ++*/5 * * * * root [ -x @@NCONFDIR@@/plugins/apt ] && @@NCONFDIR@@/plugins/apt update 7200 12 >/dev/null + +diff -ur munin-2.0.17/t/Makefile.config munin-2.0.17-sep/t/Makefile.config +--- munin-2.0.17/t/Makefile.config 2013-07-19 18:30:03.000000000 +0200 ++++ munin-2.0.17-sep/t/Makefile.config 2013-08-17 12:19:22.492818051 +0200 +@@ -9,7 +9,8 @@ + PREFIX = $(PWD)/t/install + + # Where Munin keeps its configurations (server.conf, client.conf, ++) +-CONFDIR = $(PREFIX)/etc ++MCONFDIR = $(PREFIX)/etc ++NCONFDIR = $(PREFIX)/etc + + # Client only - Where to put RRD files and other intenal data + DBDIR = $(PREFIX)/var/lib diff --git a/munin-templatedir.patch b/munin-templatedir.patch new file mode 100644 index 0000000..eb94020 --- /dev/null +++ b/munin-templatedir.patch @@ -0,0 +1,144 @@ +diff -ur munin-1.4.0/common/lib/Munin/Common/Defaults.pm munin-1.4.0.template/common/lib/Munin/Common/Defaults.pm +--- munin-1.4.0/common/lib/Munin/Common/Defaults.pm 2009-11-27 12:17:16.000000000 +0100 ++++ munin-1.4.0.template/common/lib/Munin/Common/Defaults.pm 2009-11-30 15:53:32.281661475 +0100 +@@ -30,6 +30,7 @@ + our $MUNIN_MANDIR = ''; + our $MUNIN_LOGDIR = "$COMPONENT_ROOT/log/"; + our $MUNIN_STATEDIR = ''; ++our $MUNIN_TEMPLATEDIR = ''; + our $MUNIN_USER = getpwuid $UID; + our $MUNIN_GROUP = getgrgid $GID; + our $MUNIN_PLUGINUSER = getpwuid $UID; +diff -ur munin-1.4.0/contrib/munin-every-services-all-boxes-build-html.in munin-1.4.0.template/contrib/munin-every-services-all-boxes-build-html.in +--- munin-1.4.0/contrib/munin-every-services-all-boxes-build-html.in 2009-11-27 12:17:18.000000000 +0100 ++++ munin-1.4.0.template/contrib/munin-every-services-all-boxes-build-html.in 2009-11-30 15:31:14.400724600 +0100 +@@ -23,7 +23,7 @@ + + chown @@USER@@.@@GROUP@@ @@HTMLDIR@@/every-services-all-boxes + +-in @@CONFDIR@@/templates/munin-overview.tmpl: ++in @@TEMPLATEDIR@@/munin-overview.tmpl: + +
+ every services on all boxes +diff -ur munin-1.4.0/Makefile munin-1.4.0.template/Makefile +--- munin-1.4.0/Makefile 2009-11-30 15:56:58.665729798 +0100 ++++ munin-1.4.0.template/Makefile 2009-11-30 15:43:56.093673451 +0100 +@@ -72,9 +72,9 @@ + $(CHOWN) $(USER) $(LOGDIR) $(STATEDIR) + + install-master-prime: $(INFILES_MASTER) install-pre install-master +- mkdir -p $(CONFDIR)/templates +- mkdir -p $(CONFDIR)/static +- mkdir -p $(CONFDIR)/templates/partial ++ mkdir -p $(TEMPLATEDIR) ++ mkdir -p $(TEMPLATEDIR)/static ++ mkdir -p $(TEMPLATEDIR)/partial + mkdir -p $(CONFDIR)/munin-conf.d + mkdir -p $(LIBDIR) + mkdir -p $(BINDIR) +@@ -87,15 +87,15 @@ + $(CHMOD) 0755 $(DBDIR) + + for p in master/www/*.tmpl ; do \ +- $(INSTALL) -m 0644 "$$p" $(CONFDIR)/templates/ ; \ ++ $(INSTALL) -m 0644 "$$p" $(TEMPLATEDIR)/ ; \ + done + + for p in master/static/* ; do \ +- $(INSTALL) -m 0644 "$$p" $(CONFDIR)/static/ ; \ ++ $(INSTALL) -m 0644 "$$p" $(TEMPLATEDIR)/static/ ; \ + done + + for p in master/www/partial/*.tmpl; do \ +- $(INSTALL) -m 0644 "$$p" $(CONFDIR)/templates/partial/ ; \ ++ $(INSTALL) -m 0644 "$$p" $(TEMPLATEDIR)/partial/ ; \ + done + + $(INSTALL) -m 0755 master/DejaVuSansMono.ttf $(LIBDIR)/ +@@ -217,6 +217,7 @@ + -e 's|@@GOODSH@@|$(GOODSH)|g' \ + -e 's|@@BASH@@|$(BASH)|g' \ + -e 's|@@HASSETR@@|$(HASSETR)|g' \ ++ -e 's|@@TEMPLATEDIR@@|$(TEMPLATEDIR)|g' \ + $< > $@; + + +@@ -255,7 +256,8 @@ + s{(PLUGINUSER \s+=\s).*}{\1q{$(PLUGINUSER)};}x; \ + s{(GOODSH \s+=\s).*}{\1q{$(GOODSH)};}x; \ + s{(BASH \s+=\s).*}{\1q{$(BASH)};}x; \ +- s{(HASSETR \s+=\s).*}{\1q{$(HASSETR)};}x;' \ ++ s{(HASSETR \s+=\s).*}{\1q{$(HASSETR)};}x; \ ++ s{(TEMPLATEDIR \s+=\s).*}{\1q{$(TEMPLATEDIR)};}x;'\ + $< > $@ + + build-doc: build-doc-stamp Makefile Makefile.config +diff -ur munin-1.4.0/Makefile.config munin-1.4.0.template/Makefile.config +--- munin-1.4.0/Makefile.config 2009-11-30 15:56:58.665729798 +0100 ++++ munin-1.4.0.template/Makefile.config 2009-11-30 15:44:54.459859861 +0100 +@@ -40,6 +40,7 @@ + # Server only - Output directory + HTMLDIR = $(DESTDIR)/var/lib/munin/html + CGIDIR = $(LIBDIR)/cgi ++TEMPLATEDIR= $(DESTDIR)/etc/webapps/munin/templates + + # Server only - spool directory for data gathered from nodes by + # munin-gather - experimental. Place on ramdisk to make munin +diff -ur munin-1.4.0/master/doc/munin.conf.pod.in munin-1.4.0.template/master/doc/munin.conf.pod.in +--- munin-1.4.0/master/doc/munin.conf.pod.in 2009-11-27 12:17:16.000000000 +0100 ++++ munin-1.4.0.template/master/doc/munin.conf.pod.in 2009-11-30 15:51:40.016661676 +0100 +@@ -68,7 +68,7 @@ + + Directory for files tracking munin's current running state. Required. + +-=item B I (Default: F<@@CONFDIR@@/templates>) ++=item B I (Default: F<@@TEMPLATEDIR@@>) + + Directory for templates used to generate HTML pages. Required. + +diff -ur munin-1.4.0/master/lib/Munin/Master/Config.pm munin-1.4.0.template/master/lib/Munin/Master/Config.pm +--- munin-1.4.0/master/lib/Munin/Master/Config.pm 2009-11-27 12:17:17.000000000 +0100 ++++ munin-1.4.0.template/master/lib/Munin/Master/Config.pm 2009-11-30 15:50:50.533791958 +0100 +@@ -156,8 +156,8 @@ + tls_private_key => "$Munin::Common::Defaults::MUNIN_CONFDIR/munin.pem", + tls_verify_certificate => 0, + tls_verify_depth => 5, +- tmpldir => "$Munin::Common::Defaults::MUNIN_CONFDIR/templates", +- staticdir => "$Munin::Common::Defaults::MUNIN_CONFDIR/static", ++ tmpldir => "$Munin::Common::Defaults::MUNIN_TEMPLATEDIR", ++ staticdir => "$Munin::Common::Defaults::MUNIN_TEMPLATEDIR/static", + cgitmpdir => "$Munin::Common::Defaults::MUNIN_DBDIR/cgi-tmp", + }, $class ), + +diff -ur munin-1.4.0/master/lib/Munin/Master/Utils.pm munin-1.4.0.template/master/lib/Munin/Master/Utils.pm +--- munin-1.4.0/master/lib/Munin/Master/Utils.pm 2009-11-27 12:17:18.000000000 +0100 ++++ munin-1.4.0.template/master/lib/Munin/Master/Utils.pm 2009-11-30 15:49:47.135724128 +0100 +@@ -273,8 +273,8 @@ + $config->{'rundir'} ||= $Munin::Common::Defaults::MUNIN_STATEDIR; + $config->{'dbdir'} ||= $Munin::Common::Defaults::MUNIN_DBDIR; + $config->{'logdir'} ||= $Munin::Common::Defaults::MUNIN_LOGDIR; +- $config->{'tmpldir'} ||= "$Munin::Common::Defaults::MUNIN_CONFDIR/templates/"; +- $config->{'staticdir'} ||= "$Munin::Common::Defaults::MUNIN_CONFDIR/static/"; ++ $config->{'tmpldir'} ||= "$Munin::Common::Defaults::MUNIN_TEMPLATEDIR"; ++ $config->{'staticdir'} ||= "$Munin::Common::Defaults::MUNIN_TEMPLATEDIR/static/"; + $config->{'htmldir'} ||= $Munin::Common::Defaults::MUNIN_HTMLDIR; + $config->{'spooldir'} ||= $Munin::Common::Defaults::MUNIN_SSPOOLDIR; + $config->{'#%#parent'} = undef; +diff -ur munin-1.4.0/master/munin.conf.in munin-1.4.0.template/master/munin.conf.in +--- munin-1.4.0/master/munin.conf.in 2009-11-27 12:17:18.000000000 +0100 ++++ munin-1.4.0.template/master/munin.conf.in 2009-11-30 15:47:40.690849769 +0100 +@@ -11,11 +11,11 @@ + + # Where to look for the HTML templates + # +-#tmpldir @@CONFDIR@@/templates ++#tmpldir @@TEMPLATEDIR@@ + + # Where to look for the static www files + # +-#staticdir @@CONFDIR@@/static ++#staticdir @@TEMPLATEDIR@@/static + + # temporary cgi files are here. note that it has to be writable by + # the cgi user (usually nobody or httpd). diff --git a/munin-timeout.patch b/munin-timeout.patch new file mode 100644 index 0000000..992190e --- /dev/null +++ b/munin-timeout.patch @@ -0,0 +1,11 @@ +--- munin-1.4.0/master/lib/Munin/Master/Node.pm~ 2009-11-27 12:17:17.000000000 +0100 ++++ munin-1.4.0/master/lib/Munin/Master/Node.pm 2009-12-01 17:33:33.041187499 +0100 +@@ -27,7 +27,7 @@ + pid => undef, + writer => undef, + master_capabilities => "multigraph dirtyconfig", +- io_timeout => 120, ++ io_timeout => $config->{timeout}, + configref => $configref, + }; + diff --git a/munin.cron b/munin.cron new file mode 100644 index 0000000..e485204 --- /dev/null +++ b/munin.cron @@ -0,0 +1,6 @@ +# +# cron-jobs for munin +# +MAILTO=root + +*/5 * * * * munin /usr/sbin/munin-cron diff --git a/munin.logrotate b/munin.logrotate new file mode 100644 index 0000000..18d55e6 --- /dev/null +++ b/munin.logrotate @@ -0,0 +1,10 @@ +/var/log/munin/munin-cgi-graph.log +/var/log/munin/munin-cgi-html.log +/var/log/munin/munin-graph.log +/var/log/munin/munin-html.log +/var/log/munin/munin-limits.log +/var/log/munin/munin-update.log { + su root http + olddir /var/log/archive/munin + create 660 munin http +} diff --git a/munin.spec b/munin.spec new file mode 100644 index 0000000..738c64b --- /dev/null +++ b/munin.spec @@ -0,0 +1,366 @@ +# TODO +# - R: perl* should be autogenerated? +# - add plugins-java package and proper BRs +# +# Condtional build: +%bcond_with sybase # add Sybase support to munin-node + +%include /usr/lib/rpm/macros.perl +Summary: Munin - the Linpro RRD data agent +Summary(pl.UTF-8): Munin - agent danych RRD Linpro +Name: munin +Version: 2.0.19 +Release: 3 +License: GPL +Group: Applications/WWW +Source0: http://downloads.sourceforge.net/munin/%{name}-%{version}.tar.gz +# Source0-md5: ab27d477052c0f5da4ed81edb7f95f1b +Source1: %{name}-node.init +Source2: %{name}.cron +Source3: %{name}-apache.conf +Source4: %{name}.logrotate +Source5: %{name}-node.logrotate +Source6: %{name}-lighttpd.conf +Source7: %{name}.tmpfiles +Source8: %{name}-httpd.conf +Source9: %{name}-node.service +Source10: %{name}-asyncd.service +Source11: %{name}-asyncd.init +Patch0: %{name}-Makefile.patch +Patch1: %{name}-plugins.patch +Patch2: %{name}-templatedir.patch +Patch3: %{name}-separate-configs.patch +Patch4: %{name}-timeout.patch +URL: http://munin.sourceforge.net/ +BuildRequires: perl-Encode +BuildRequires: perl-Net-SNMP +BuildRequires: perl-devel +BuildRequires: rpm-perlprov +BuildRequires: rpm-pythonprov +BuildRequires: rpmbuild(macros) >= 1.671 +BuildRequires: which +Requires(triggerpostun): sed >= 4.0 +Requires: %{name}-common = %{version}-%{release} +Requires: fonts-TTF-DejaVu +Requires: perl-Date-Manip +Requires: perl-FCGI +Requires: perl-HTML-Template +Requires: perl-Net-Server +Requires: rrdtool >= 1.3.0 +Requires: webapps +Requires: webserver(alias) +Requires: webserver(auth) +Requires: webserver(cgi) +Requires: webserver(expires) +Suggests: crondaemon +Conflicts: apache-base < 2.4.0-1 +Conflicts: logrotate < 3.8.0 +BuildArch: noarch +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%define _noautoreq_perl DBD::Pg + +%define _sysconfdir /etc/%{name} +%define _webapps /etc/webapps +%define _webapp %{name} +%define _appdir %{_datadir}/%{_webapp} +%define _htmldir /var/lib/%{name}/html + +%description +Munin, formerly known as The Linpro RRD server, queries a number of +nodes, and processes the data using RRDtool and presents it on web +pages. + +%description -l pl.UTF-8 +Munin, znany poprzednio jako serwer RRD Linpro, odpytuje wiele węzłów +i przetwarza dane przy użyciu RRDtoola, a następnie prezentuje je na +stronach WWW. + +%package common +Summary: Munin - the Linpro RRD data agent - common files +Summary(pl.UTF-8): Munin - agent danych RRD Linpro - wspólne pliki +Group: Daemons +Requires(postun): /usr/sbin/groupdel +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/bin/getgid +Requires(pre): /usr/sbin/groupadd +Requires(pre): /usr/sbin/useradd + +%description common +Munin, formerly known as The Linpro RRD server, queries a number of +nodes, and processes the data using RRDtool and presents it on web +pages. + +%description common -l pl.UTF-8 +Munin, znany poprzednio jako serwer RRD Linpro, odpytuje wiele węzłów +i przetwarza dane przy użyciu RRDtoola, a następnie prezentuje je na +stronach WWW. + +%package node +Summary: Linpro RRD data agent +Summary(pl.UTF-8): Agent danych RRD Linpro +Group: Daemons +Requires(post,preun): /sbin/chkconfig +Requires: %{name}-common = %{version}-%{release} +Requires: logtail +Requires: logtool +#Requires: perl-Config-General +Requires: perl-Net-Netmask +Requires: perl-Net-SNMP +Requires: perl-Net-Server +Requires: perl-libwww +Requires: procps >= 2.0.7 +Requires: rc-scripts >= 0.4.0.15 +Requires: sysstat +Requires: systemd-units >= 38 +Suggests: perl-DBD-Pg +Conflicts: logrotate < 3.7-4 + +%description node +The Munin node package returns statistical data on the request of a +Munin server. + +%description node -l pl.UTF-8 +Pakiet Munin dla węzła zwraca dane statystyczne na żądanie serwera +Munin. + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 + +%build +%{__make} -j1 build \ + PERL_MB_OPT="perl=%{__perl}" \ + JCVALID=no + +%install +rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT{/etc/{rc.d/init.d,cron.d,logrotate.d},%{_bindir},%{_sbindir}} \ + $RPM_BUILD_ROOT/var/log/archive/munin \ + $RPM_BUILD_ROOT%{_webapps}/%{_webapp} \ + $RPM_BUILD_ROOT%{systemdtmpfilesdir} \ + $RPM_BUILD_ROOT%{systemdunitdir} + +%{__make} -j1 install \ + JCVALID=no \ + CHOWN=/bin/true \ + DESTDIR=$RPM_BUILD_ROOT + +# move asyncd daemon do sbin +%{__mv} $RPM_BUILD_ROOT{%{_datadir}/munin,%{_sbindir}}/munin-asyncd + +install -p %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/munin-asyncd +install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/munin-node +cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/cron.d/munin +cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/logrotate.d/munin +cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/logrotate.d/munin-node + +cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf +cp -p %{SOURCE8} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf +cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/lighttpd.conf + +cp -p %{SOURCE7} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf + +cp -p %{SOURCE9} $RPM_BUILD_ROOT%{systemdunitdir}/munin-node.service +cp -p %{SOURCE10} $RPM_BUILD_ROOT%{systemdunitdir}/munin-asyncd.service + +cp -p dists/tarball/plugins.conf $RPM_BUILD_ROOT%{_sysconfdir} +ln -sf %{_sysconfdir}/plugins.conf $RPM_BUILD_ROOT%{_sysconfdir}/plugin-conf.d/munin-node + +for f in cgi-graph cgi-html graph html limits update ; do + touch $RPM_BUILD_ROOT/var/log/munin/munin-$f.log +done + +%clean +rm -rf $RPM_BUILD_ROOT + +%triggerin -- apache1 < 1.3.37-3, apache1-base +%webapp_register apache %{_webapp} + +%triggerun -- apache1 < 1.3.37-3, apache1-base +%webapp_unregister apache %{_webapp} + +%triggerin -- apache-base +%webapp_register httpd %{_webapp} + +%triggerun -- apache-base +%webapp_unregister httpd %{_webapp} + +%triggerin -- lighttpd +%webapp_register lighttpd %{_webapp} + +%triggerun -- lighttpd +%webapp_unregister lighttpd %{_webapp} + +%triggerpostun -- munin < 1.3.4-5 +# rescue app config +if [ -f /etc/munin/munin.conf.rpmsave ]; then + mv -f %{_webapps}/%{_webapp}/munin.conf{,.rpmnew} + mv -f /etc/munin/munin.conf.rpmsave %{_webapps}/%{_webapp}/munin.conf + + # fix paths in munin.conf + sed -i -e 's|dbdir.*|dbdir /var/lib/munin/db|' \ + -e 's|tmpldir.*|tmpldir %{_webapps}/%{_webapp}/templates|' \ + %{_webapps}/%{_webapp}/munin.conf +fi +# move RRDs to new location +cd /var/lib/munin +for i in *; do + case "$i" in + db|html|plugin-state) ;; + *) mv -f "$i" db/ ;; + esac +done + +%post +for f in cgi-graph cgi-html graph html limits update ; do + touch /var/log/munin/munin-$f.log + chmod 660 /var/log/munin/munin-$f.log + chown munin:http /var/log/munin/munin-$f.log +done + +%post node +if [ "$1" = "1" ] ; then + /sbin/chkconfig --add munin-node + %{_sbindir}/munin-node-configure --shell | sh +fi +%service munin-node restart "Munin Node agent" +%service munin-asyncd try-restart "Munin Asyncd agent" +%systemd_post munin-node.service +%systemd_service_restart munin-asyncd.service + +%preun node +if [ "$1" = "0" ] ; then + %service munin-asyncd stop + %service munin-node stop + /sbin/chkconfig --del munin-node + /sbin/chkconfig --del munin-asyncd +fi +%systemd_preun munin-node.service munin-asyncd.service + +%postun node +%systemd_reload + +%triggerpostun node -- munin-node < 2.0.17-1 +%systemd_trigger munin-node.service + +%pre common +%groupadd -g 158 munin +%useradd -o -u 158 -s /bin/false -g munin -c "Munin Node agent" -d /var/lib/munin munin + +%postun common +if [ "$1" = "0" ]; then + %userremove munin + %groupremove munin +fi + +%files +%defattr(644,root,root,755) +%dir %attr(750,munin,http) %{_webapps}/%{_webapp} +%dir %attr(750,munin,http) %{_webapps}/%{_webapp}/munin-conf.d +%dir %{_webapps}/%{_webapp}/templates +%{_webapps}/%{_webapp}/templates/*.tmpl +%dir %{_webapps}/%{_webapp}/templates/static +%{_webapps}/%{_webapp}/templates/static/*.css +%{_webapps}/%{_webapp}/templates/static/*.html +%{_webapps}/%{_webapp}/templates/static/*.ico +%{_webapps}/%{_webapp}/templates/static/*.js +%{_webapps}/%{_webapp}/templates/static/*.png +%dir %{_webapps}/%{_webapp}/templates/partial +%{_webapps}/%{_webapp}/templates/partial/*.tmpl +%config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/munin.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/lighttpd.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/munin +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/munin +%attr(755,root,root) %{_sbindir}/munin-cron +%attr(755,root,root) %{_datadir}/munin/munin-check +%attr(755,root,root) %{_datadir}/munin/munin-graph +%attr(755,root,root) %{_datadir}/munin/munin-html +%attr(755,root,root) %{_datadir}/munin/munin-limits +%attr(755,root,root) %{_datadir}/munin/munin-update +%attr(755,root,root) %{_datadir}/munin/munin-datafile2storable +%attr(755,root,root) %{_datadir}/munin/munin-storable2datafile +%attr(755,munin,root) %dir %{_datadir}/munin/cgi +%attr(755,munin,root) %{_datadir}/munin/cgi/munin-cgi-graph +%attr(755,munin,root) %{_datadir}/munin/cgi/munin-cgi-html +%attr(755,munin,root) %dir %{_htmldir} +%{perl_vendorlib}/Munin/Master +%{_mandir}/man3/Munin::Master* +%{_mandir}/man5/munin.conf* +%{_mandir}/man8/munin-check* +%{_mandir}/man8/munin-cron* +%{_mandir}/man8/munin-graph* +%{_mandir}/man8/munin-html* +%{_mandir}/man8/munin-limits* +%{_mandir}/man8/munin-update* +%{_mandir}/man8/munin.* +%attr(771,munin,munin) %dir /var/lib/munin/db +%attr(770,munin,http) %dir /var/lib/munin/db/cgi-tmp +%attr(660,munin,http) %ghost /var/log/munin/munin-cgi-graph.log +%attr(660,munin,http) %ghost /var/log/munin/munin-cgi-html.log +%attr(660,munin,http) %ghost /var/log/munin/munin-graph.log +%attr(660,munin,http) %ghost /var/log/munin/munin-html.log +%attr(660,munin,http) %ghost /var/log/munin/munin-limits.log +%attr(660,munin,http) %ghost /var/log/munin/munin-update.log + +%files common +%defattr(644,root,root,755) +%doc README ChangeLog logo* Checklist +%dir %{_datadir}/munin +%{systemdtmpfilesdir}/%{name}.conf +%attr(770,munin,http) %dir /var/log/munin +%attr(750,munin,http) %dir /var/log/archive/munin +%attr(771,munin,munin) %dir /var/lib/munin +%attr(770,munin,http) %dir /var/run/munin +%dir %{perl_vendorlib}/Munin +%{perl_vendorlib}/Munin/Common +%{_mandir}/man3/Munin::Common* + +%files node +%defattr(644,root,root,755) +%dir %{_sysconfdir} +%dir %{_sysconfdir}/plugins +%dir %{_sysconfdir}/plugin-conf.d +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/munin-node.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/plugins.conf +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/plugin-conf.d/munin-node +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/munin-node +%attr(754,root,root) /etc/rc.d/init.d/munin-asyncd +%attr(754,root,root) /etc/rc.d/init.d/munin-node +%{systemdunitdir}/munin-asyncd.service +%{systemdunitdir}/munin-node.service +%attr(755,root,root) %{_bindir}/munindoc +%attr(755,root,root) %{_sbindir}/munin-asyncd +%attr(755,root,root) %{_sbindir}/munin-node +%attr(755,root,root) %{_sbindir}/munin-node-configure +%attr(755,root,root) %{_sbindir}/munin-run +%attr(755,root,root) %{_sbindir}/munin-sched +%{perl_vendorlib}/Munin/Node +%{perl_vendorlib}/Munin/Plugin +%{perl_vendorlib}/Munin/Plugin.pm +%attr(755,root,root) %{_datadir}/munin/munin-async +%dir %{_datadir}/munin/plugins +%attr(755,root,root) %{_datadir}/munin/plugins/* +%if !%{with sybase} +%exclude %{_datadir}/munin/plugins/sybase_space +%endif +%dir %attr(770,munin,munin) /var/lib/munin/plugin-state +%dir %attr(770,munin,munin) /var/spool/munin +%{_mandir}/man1/munin-node* +%{_mandir}/man1/munin-run* +%{_mandir}/man1/munin-sched* +%{_mandir}/man1/munindoc* +%{_mandir}/man3/Munin::Node* +%{_mandir}/man3/Munin::Plugin* +%{_mandir}/man5/munin-node.conf* + +#%files plugins-java +#%defattr(644,root,root,755) +#%{_datadir}/munin/munin-jmx-plugins.jar diff --git a/munin.tmpfiles b/munin.tmpfiles new file mode 100644 index 0000000..4168b59 --- /dev/null +++ b/munin.tmpfiles @@ -0,0 +1 @@ +d /var/run/munin 0770 munin http - -- 2.46.0