From c91c1a66ab065070439a35b1813bdf2646e165f6 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 26 Nov 2009 01:41:32 +0000 Subject: [PATCH 001/108] Fix typo that causes a failure to update the common directory. (releng #2781) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5e554a7..cc1c038 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ NAME := munin SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done endef MAKEFILE_COMMON := $(shell $(find-makefile-common)) From 10140103226c8d09298e1f5006ac4e07cf550f17 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Sun, 6 Dec 2009 21:02:43 +0000 Subject: [PATCH 002/108] Update to 1.4.1 --- .cvsignore | 2 +- munin-1.2.4-conf.patch | 12 -- munin-1.2.4-cron.patch | 8 -- munin-1.2.5-amp-degree.patch | 54 --------- munin-1.2.5-nf-conntrack.patch | 71 ------------ munin-1.2.6-hddtemp_smartctl-spinup.patch | 13 --- munin-1.2.6-ntp_offset.patch | 9 -- munin-1.4.0-config.patch | 33 ++++++ munin.spec | 134 ++++++++++++++-------- sources | 2 +- 10 files changed, 119 insertions(+), 219 deletions(-) delete mode 100644 munin-1.2.4-conf.patch delete mode 100644 munin-1.2.4-cron.patch delete mode 100644 munin-1.2.5-amp-degree.patch delete mode 100644 munin-1.2.5-nf-conntrack.patch delete mode 100644 munin-1.2.6-hddtemp_smartctl-spinup.patch delete mode 100644 munin-1.2.6-ntp_offset.patch create mode 100644 munin-1.4.0-config.patch diff --git a/.cvsignore b/.cvsignore index bd84c1b..65c421e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -munin_1.2.6.tar.gz +munin-1.4.1.tar.gz diff --git a/munin-1.2.4-conf.patch b/munin-1.2.4-conf.patch deleted file mode 100644 index 35719ad..0000000 --- a/munin-1.2.4-conf.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur munin-1.2.4.orig/server/munin.conf.in munin-1.2.4/server/munin.conf.in ---- munin-1.2.4.orig/server/munin.conf.in 2005-10-08 04:11:02.000000000 -0600 -+++ munin-1.2.4/server/munin.conf.in 2006-04-22 14:17:46.000000000 -0600 -@@ -24,7 +24,7 @@ - #contact.nagios.command /usr/sbin/send_nsca -H nagios.host.com -c /etc/send_nsca.cfg - - # a simple host tree --[@@HOSTNAME@@] -+[localhost] - address 127.0.0.1 - use_node_name yes - diff --git a/munin-1.2.4-cron.patch b/munin-1.2.4-cron.patch deleted file mode 100644 index 0f415c6..0000000 --- a/munin-1.2.4-cron.patch +++ /dev/null @@ -1,8 +0,0 @@ -diff -Nur munin-1.2.4.orig/dists/redhat/munin.cron.d munin-1.2.4/dists/redhat/munin.cron.d ---- munin-1.2.4.orig/dists/redhat/munin.cron.d 2005-10-08 04:11:01.000000000 -0600 -+++ munin-1.2.4/dists/redhat/munin.cron.d 2006-04-22 14:10:48.000000000 -0600 -@@ -5,4 +5,3 @@ - MAILTO=root - - */5 * * * * munin test -x /usr/bin/munin-cron && /usr/bin/munin-cron --10 10 * * * munin test -x /usr/share/munin/munin-nagios && /usr/share/munin/munin-nagios --removeok diff --git a/munin-1.2.5-amp-degree.patch b/munin-1.2.5-amp-degree.patch deleted file mode 100644 index 6220399..0000000 --- a/munin-1.2.5-amp-degree.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -Nur munin-1.2.5.orig/node/node.d/acpi.in munin-1.2.5/node/node.d/acpi.in ---- munin-1.2.5.orig/node/node.d/acpi.in 2006-10-17 06:27:35.000000000 -0600 -+++ munin-1.2.5/node/node.d/acpi.in 2007-12-26 12:26:26.000000000 -0700 -@@ -51,7 +51,7 @@ - - echo 'graph_title CPU temperature' - echo 'graph_args --base 1000 -l 0' -- echo 'graph_vlabel temp in °C' -+ echo 'graph_vlabel temp in C' - echo 'graph_category sensors' - echo 'graph_info This graph shows temperatures based on output from ACPI.' - echo cpu.label cpu -diff -Nur munin-1.2.5.orig/node/node.d/hddtemp.in munin-1.2.5/node/node.d/hddtemp.in ---- munin-1.2.5.orig/node/node.d/hddtemp.in 2006-10-17 06:27:35.000000000 -0600 -+++ munin-1.2.5/node/node.d/hddtemp.in 2007-12-26 12:26:18.000000000 -0700 -@@ -53,7 +53,7 @@ - - echo 'graph_title HDD temperature' - echo 'graph_args --base 1000 -l 0' -- echo 'graph_vlabel temp in °C' -+ echo 'graph_vlabel temp in C' - echo 'graph_category sensors' - for a in $drives ; do echo $a.label $a ; done - exit 0 -diff -Nur munin-1.2.5.orig/node/node.d/hddtemp_smartctl.in munin-1.2.5/node/node.d/hddtemp_smartctl.in ---- munin-1.2.5.orig/node/node.d/hddtemp_smartctl.in 2006-10-17 06:27:35.000000000 -0600 -+++ munin-1.2.5/node/node.d/hddtemp_smartctl.in 2007-12-26 12:26:22.000000000 -0700 -@@ -135,7 +135,7 @@ - } elsif ($ARGV[0] eq 'config') { - print "graph_title HDD temperature\n"; - print "graph_args --base 1000 -l 0\n"; -- print "graph_vlabel temp in °C\n"; -+ print "graph_vlabel temp in C\n"; - print "graph_category sensors\n"; - print "graph_info This graph shows the temperature in degrees Celsius of the hard drives in the machine.\n"; - print "$_.label $_\n" foreach @drives; -diff -Nur munin-1.2.5.orig/node/node.d.linux/interrupts.in munin-1.2.5/node/node.d.linux/interrupts.in ---- munin-1.2.5.orig/node/node.d.linux/interrupts.in 2006-10-17 06:27:35.000000000 -0600 -+++ munin-1.2.5/node/node.d.linux/interrupts.in 2007-12-26 12:25:32.000000000 -0700 -@@ -56,12 +56,12 @@ - - if [ "$1" = "config" ]; then - # The title of the graph -- echo 'graph_title Interrupts & context switches' -+ echo 'graph_title Interrupts & context switches' - # 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' - # The Y-axis label -- echo 'graph_vlabel interrupts & ctx switches / ${graph_period}' -+ echo 'graph_vlabel interrupts & ctx switches / ${graph_period}' - # Graph category - echo 'graph_category system' - # Graph information diff --git a/munin-1.2.5-nf-conntrack.patch b/munin-1.2.5-nf-conntrack.patch deleted file mode 100644 index 9132710..0000000 --- a/munin-1.2.5-nf-conntrack.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff -Nur munin-1.2.5.orig/node/node.d.linux/fw_conntrack.in munin-1.2.5/node/node.d.linux/fw_conntrack.in ---- munin-1.2.5.orig/node/node.d.linux/fw_conntrack.in 2006-10-17 06:27:35.000000000 -0600 -+++ munin-1.2.5/node/node.d.linux/fw_conntrack.in 2007-11-30 21:54:22.000000000 -0700 -@@ -84,7 +84,7 @@ - exit 0 - ;; - autoconf) -- if [ -f /proc/net/ip_conntrack ] ; then -+ if [ -f /proc/net/ip_conntrack -o -f /proc/net/nf_conntrack ] ; then - echo yes - exit 0 - else -@@ -102,7 +102,15 @@ - # udp 17 53 src=80.111.68.163 dst=62.179.100.29 sport=34153 dport=53 src=62.179.100.29 dst=80.111.68.163 sport=53 dport=34153 [ASSURED] use=1 - # - --cat /proc/net/ip_conntrack | awk ' -+if [ -f /proc/net/ip_conntrack ]; then -+ conntrack_file=/proc/net/ip_conntrack -+elif [ -f /proc/net/nf_conntrack ]; then -+ conntrack_file=/proc/net/nf_conntrack -+else -+ exit 1 -+fi -+ -+cat "$conntrack_file" | awk ' - BEGIN { STATE["ESTABLISHED"]=STATE["FIN_WAIT"]=STATE["TIME_WAIT"]=0; - ASSURED=NOREPLY=NATED=STATE["SYN_SENT"]=STATE["UDP"]=0; } - /^tcp/ { STATE[$4]++; } -diff -Nur munin-1.2.5.orig/node/node.d.linux/fw_forwarded_local.in munin-1.2.5/node/node.d.linux/fw_forwarded_local.in ---- munin-1.2.5.orig/node/node.d.linux/fw_forwarded_local.in 2006-10-17 06:27:35.000000000 -0600 -+++ munin-1.2.5/node/node.d.linux/fw_forwarded_local.in 2007-11-30 21:57:02.000000000 -0700 -@@ -36,10 +36,13 @@ - if ( cat /proc/net/ip_conntrack 2>/dev/null >/dev/null ); then - echo yes - exit 0 -+ elif ( cat /proc/net/nf_conntrack 2>/dev/null >/dev/null ); then -+ echo yes -+ exit 0 - else - if [ $? -eq 127 ] - then -- echo "no (ipconntrack not found)" -+ echo "no (ip_conntrack/nf_conntrack not found)" - exit 1 - else - echo no -@@ -50,7 +53,7 @@ - - if [ "$1" = "config" ]; then - -- echo 'graph_title ipconntrack' -+ echo 'graph_title conntrack' - echo 'graph_args -l 0 --base 1000' - echo 'graph_vlabel established connections' - echo 'graph_category network' -@@ -63,4 +66,13 @@ - exit 0 - fi - --cat /proc/net/ip_conntrack | grep ESTABLISHED | sed 's/.*src=\(.*\) .*dst=\(.*\) sport.*src=\(.*\) .*dst=\(.*\) spo.*/\1 \2 \3 \4/g' | awk 'BEGIN {{FORW=0} {LOCAL=0}} {if($1 != $4){ FORW += 1} else { LOCAL += 1}} END {{print "forward.value "FORW} {print "local.value "LOCAL}}' -+if [ -f /proc/net/ip_conntrack ]; then -+ conntrack_file=/proc/net/ip_conntrack -+elif [ -f /proc/net/nf_conntrack ]; then -+ conntrack_file=/proc/net/nf_conntrack -+else -+ exit 1 -+fi -+ -+cat "$conntrack_file" | grep ESTABLISHED | sed 's/.*src=\(.*\) .*dst=\(.*\) sport.*src=\(.*\) .*dst=\(.*\) spo.*/\1 \2 \3 \4/g' | awk 'BEGIN {{FORW=0} {LOCAL=0}} {if($1 != $4){ FORW += 1} else { LOCAL += 1}} END {{print "forward.value "FORW} {print "local.value "LOCAL}}' -+ diff --git a/munin-1.2.6-hddtemp_smartctl-spinup.patch b/munin-1.2.6-hddtemp_smartctl-spinup.patch deleted file mode 100644 index 1d9d0bb..0000000 --- a/munin-1.2.6-hddtemp_smartctl-spinup.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- munin-1.2.6/node/node.d/hddtemp_smartctl.in 2009-01-24 15:47:35.000000000 +0100 -+++ munin-1.2.6/node/node.d/hddtemp_smartctl.in 2009-01-24 15:48:18.000000000 +0100 -@@ -146,8 +146,8 @@ - $fulldev .= 'rdsk/' if $^O eq 'solaris'; - $fulldev .= exists $ENV{'dev_'.$_} ? $ENV{'dev_'.$_} : $dev; - -- # Avoid spinning up sleeping disks -- next if `hdparm -C $fulldev 2>/dev/null` =~ /standby/; -+ # Avoid spinning up sleeping disks only for /dev/sd? or /dev/hd? devices. -+ next if $fulldev =~ /\/dev\/[sh]d?/ && `hdparm -C $fulldev 2>/dev/null` =~ /standby/; - - my $cmd = $smartctl.' -A '; - $cmd .= $ENV{'args_'.$_}.' ' if exists $ENV{'args_'.$_}; diff --git a/munin-1.2.6-ntp_offset.patch b/munin-1.2.6-ntp_offset.patch deleted file mode 100644 index ef408a6..0000000 --- a/munin-1.2.6-ntp_offset.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -Nur munin-1.2.6.orig/node/node.d/ntp_offset.in munin-1.2.6/node/node.d/ntp_offset.in ---- munin-1.2.6.orig/node/node.d/ntp_offset.in 2008-01-27 11:17:17.000000000 -0700 -+++ munin-1.2.6/node/node.d/ntp_offset.in 2008-06-25 12:52:05.000000000 -0600 -@@ -1,4 +1,4 @@ --#!@@GOODSH@@ -w -+#!@@GOODSH@@ - # -*- sh -*- - # - # Plugin to monitor NTP time offset. diff --git a/munin-1.4.0-config.patch b/munin-1.4.0-config.patch new file mode 100644 index 0000000..52af5dd --- /dev/null +++ b/munin-1.4.0-config.patch @@ -0,0 +1,33 @@ +diff -Nur munin-1.4.0.orig/dists/redhat/Makefile.config munin-1.4.0/dists/redhat/Makefile.config +--- munin-1.4.0.orig/dists/redhat/Makefile.config 2009-11-27 04:17:14.000000000 -0700 ++++ munin-1.4.0/dists/redhat/Makefile.config 2009-11-30 22:28:20.000000000 -0700 +@@ -23,7 +23,7 @@ + VERSION = $(shell cat RELEASE) + USER = munin + GROUP = munin +-PLUGINUSER = nobody ++PLUGINUSER = munin + 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")) +diff -Nur munin-1.4.0.orig/master/munin.conf.in munin-1.4.0/master/munin.conf.in +--- munin-1.4.0.orig/master/munin.conf.in 2009-11-27 04:17:18.000000000 -0700 ++++ munin-1.4.0/master/munin.conf.in 2009-11-30 22:28:20.000000000 -0700 +@@ -15,7 +15,7 @@ + + # (Exactly one) directory to include all files from. + # +-includedir @@CONFDIR@@/munin-conf.d ++# includedir @@CONFDIR@@/munin-conf.d + + # Make graphs show values per minute instead of per second + #graph_period minute +@@ -57,7 +57,7 @@ + #contact.nagios.command /usr/bin/send_nsca nagios.host.comm -c /etc/nsca.conf + + # a simple host tree +-[@@HOSTNAME@@] ++[localhost] + address 127.0.0.1 + use_node_name yes + diff --git a/munin.spec b/munin.spec index 7942a8c..8053195 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 1.2.6 -Release: 10%{?dist} +Version: 1.4.1 +Release: 1%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -8,19 +8,28 @@ URL: http://munin.projects.linpro.no/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -Source0: http://download.sourceforge.net/sourceforge/munin/%{name}_%{version}.tar.gz +Source0: http://downloads.sourceforge.net/sourceforge/munin/%{name}-%{version}.tar.gz + +Patch1: munin-1.4.0-config.patch + Source1: munin-1.2.4-sendmail-config Source2: munin-1.2.5-hddtemp_smartctl-config Source3: munin-node.logrotate Source4: munin.logrotate -Source5: nf_conntrack Source6: munin-1.2.6-postfix-config -Patch1: munin-1.2.4-conf.patch -Patch2: munin-1.2.5-nf-conntrack.patch -Patch3: munin-1.2.5-amp-degree.patch -Patch4: munin-1.2.6-ntp_offset.patch -Patch5: munin-1.2.6-hddtemp_smartctl-spinup.patch + BuildArchitectures: noarch + +BuildRequires: perl-Module-Build +# needed for hostname for the defaut config +BuildRequires: net-tools +# java buildrequires on fedora +BuildRequires: java-devel >= 1.6 +BuildRequires: mx4j +BuildRequires: jpackage-utils +BuildRequires: perl-Net-SNMP + +Requires: %{name}-common = %{version} Requires: perl-Net-Server perl-Net-SNMP Requires: rrdtool Requires: logrotate @@ -46,6 +55,7 @@ RRDtool. Group: System Environment/Daemons Summary: Network-wide graphing framework (node) BuildArchitectures: noarch +Requires: %{name}-common = %{version} Requires: perl-Net-Server Requires: procps >= 2.0.7 Requires: sysstat, /usr/bin/which, hdparm @@ -76,30 +86,47 @@ SNMP or similar technology. Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent RRDtool. +%package common +Group: System Environment/Daemons +Summary: Network-wide graphing framework (common files) +BuildArchitectures: noarch +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + +%description common +Munin is a highly flexible and powerful solution used to create graphs of +virtually everything imaginable throughout your network, while still +maintaining a rattling ease of installation and configuration. + +This package contains common files that are used by both the server (munin) +and node (munin-node) packages. + +%package java-plugins +Group: System Environment/Daemons +Summary: java-plugins for munin +Requires: %{name}-node = %{version} +BuildArchitectures: noarch + +%description java-plugins +java-plugins for munin-node. + %prep %setup -q %patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 %build - -# htmldoc and html2text are not available for Red Hat. Quick hack with perl: -# Skip the PDFs. -perl -pi -e 's,htmldoc munin,cat munin, or s,html(2text|doc),# $&,' Makefile -perl -pi -e 's,\$\(INSTALL.+\.(pdf|txt) \$\(DOCDIR,# $&,' Makefile -make CONFIG=dists/redhat/Makefile.config build +export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$(build-classpath mx4j):$CLASSPATH +make CONFIG=dists/redhat/Makefile.config %install ## Node -make CONFIG=dists/redhat/Makefile.config \ - DOCDIR=%{buildroot}%{_docdir}/%{name}-%{version} \ +make CONFIG=dists/redhat/Makefile.config \ + JAVALIBDIR=%{buildroot}%{_datadir}/java \ + PREFIX=%{buildroot}%{_prefix} \ + DOCDIR=%{buildroot}%{_docdir}/%{name}-%{version} \ MANDIR=%{buildroot}%{_mandir} \ DESTDIR=%{buildroot} \ - install-main install-node install-node-plugins install-doc install-man + install mkdir -p %{buildroot}/etc/rc.d/init.d mkdir -p %{buildroot}/etc/munin/plugins @@ -123,17 +150,16 @@ install -m0644 dists/tarball/plugins.conf %{buildroot}/etc/munin/plugin-conf.d/m rm -f %{buildroot}/usr/share/munin/plugins/sybase_space ## Server -make CONFIG=dists/redhat/Makefile.config \ - DESTDIR=%{buildroot} \ - install-main mkdir -p %{buildroot}/var/www/html/munin mkdir -p %{buildroot}/var/log/munin mkdir -p %{buildroot}/etc/cron.d +mkdir -p %{buildroot}%{_docdir}/%{name}-%{version} install -m 0644 dists/redhat/munin.cron.d %{buildroot}/etc/cron.d/munin -install -m 0644 server/style.css %{buildroot}/var/www/html/munin install -m 0644 ChangeLog %{buildroot}%{_docdir}/%{name}-%{version}/ChangeLog +cp -a master/www/* %{buildroot}/var/www/html/munin/ + # install config for sendmail under fedora install -m 0644 %{SOURCE1} %{buildroot}/etc/munin/plugin-conf.d/sendmail # install config for hddtemp_smartctl @@ -141,20 +167,14 @@ install -m 0644 %{SOURCE2} %{buildroot}/etc/munin/plugin-conf.d/hddtemp_smartctl # install logrotate scripts install -m 0644 %{SOURCE3} %{buildroot}/etc/logrotate.d/munin-node install -m 0644 %{SOURCE4} %{buildroot}/etc/logrotate.d/munin -# install config for nf_conntrack -install -m 0644 %{SOURCE5} %{buildroot}/etc/munin/plugin-conf.d/nf_conntrack # install config for postfix under fedora install -m 0644 %{SOURCE6} %{buildroot}/etc/munin/plugin-conf.d/postfix -# fix MUNIN_LIBDIR issue. -sed -i -e 's/\$MUNIN_LIBDIR/\/usr\/share\/munin\//' %{buildroot}%{_datadir}/munin/plugins/ps_ -sed -i -e 's/\$MUNIN_LIBDIR/\/usr\/share\/munin\//' %{buildroot}%{_datadir}/munin/plugins/multips -sed -i -e 's/\$MUNIN_LIBDIR/\/usr\/share\/munin\//' %{buildroot}%{_datadir}/munin/plugins/df_abs - # Use font from bitstream-vera-fonts-sans-mono rm -f $RPM_BUILD_ROOT/%{_datadir}/munin/VeraMono.ttf ln -s /usr/share/fonts/dejavu/DejaVuSansMono.ttf $RPM_BUILD_ROOT/%{_datadir}/munin/VeraMono.ttf + %clean rm -rf $RPM_BUILD_ROOT @@ -191,33 +211,26 @@ exit 0 %doc %{_docdir}/%{name}-%{version}/ %{_bindir}/munin-cron %{_bindir}/munindoc +%{_bindir}/munin-check %dir %{_datadir}/munin %{_datadir}/munin/munin-graph %{_datadir}/munin/munin-html %{_datadir}/munin/munin-limits %{_datadir}/munin/munin-update %{_datadir}/munin/VeraMono.ttf -%{perl_vendorlib}/Munin.pm -%dir %{perl_vendorlib}/Munin -/var/www/html/munin/cgi/munin-cgi-graph +%{perl_vendorlib}/Munin/Master %dir /etc/munin/templates %dir /etc/munin %config(noreplace) /etc/munin/templates/* %config(noreplace) /etc/cron.d/munin %config(noreplace) /etc/munin/munin.conf %config(noreplace) /etc/logrotate.d/munin - %attr(-, munin, munin) %dir /var/lib/munin +%attr(-, nobody, munin) %dir /var/lib/munin/plugin-state %attr(-, munin, munin) %dir /var/run/munin %attr(-, munin, munin) %dir /var/log/munin -%attr(-, munin, munin) %dir /var/www/html/munin -%attr(-, root, root) %dir /var/www/html/munin/cgi -%attr(-, root, root) /var/www/html/munin/style.css -%doc %{_mandir}/man8/munin-graph* -%doc %{_mandir}/man8/munin-update* -%doc %{_mandir}/man8/munin-limits* -%doc %{_mandir}/man8/munin-html* -%doc %{_mandir}/man8/munin-cron* +%attr(-, munin, munin) /var/www/html/munin +%doc %{_mandir}/man8/munin* %doc %{_mandir}/man5/munin.conf* %files node @@ -227,15 +240,12 @@ exit 0 %config(noreplace) /etc/munin/plugin-conf.d/munin-node %config(noreplace) /etc/munin/plugin-conf.d/sendmail %config(noreplace) /etc/munin/plugin-conf.d/hddtemp_smartctl -%config(noreplace) /etc/munin/plugin-conf.d/nf_conntrack %config(noreplace) /etc/munin/plugin-conf.d/postfix %config(noreplace) /etc/logrotate.d/munin-node -%{perl_vendorlib}/Munin/Plugin.pm /etc/rc.d/init.d/munin-node %{_sbindir}/munin-run %{_sbindir}/munin-node %{_sbindir}/munin-node-configure -%{_sbindir}/munin-node-configure-snmp %attr(-, munin, munin) %dir /var/log/munin %dir %{_datadir}/munin %dir /etc/munin/plugins @@ -244,11 +254,35 @@ exit 0 %dir %attr(-, munin, munin) /var/lib/munin/plugin-state %{_datadir}/munin/plugins/ %doc %{_docdir}/%{name}-%{version}/ -%doc %{_mandir}/man8/munin-run* -%doc %{_mandir}/man8/munin-node* %doc %{_mandir}/man5/munin-node* +%doc %{_mandir}/man3/Munin* +%doc %{_mandir}/man1/munin* +%{perl_vendorlib}/Munin/Node +%{perl_vendorlib}/Munin/Plugin* + +%files common +%defattr(-, root, root) +%dir %{perl_vendorlib}/Munin +%{perl_vendorlib}/Munin/Common + +%files java-plugins +%defattr(-, root, root) +%{_datadir}/java/%{name}-jmx-plugins.jar %changelog +* Fri Dec 04 2009 Kevin Fenzi - 1.4.1-1 +- Update to 1.4.1 + +* Sat Nov 28 2009 Kevin Fenzi - 1.4.0-1 +- Update to final 1.4.0 version + +* Sat Nov 21 2009 Kevin Fenzi - 1.4.0-0.1.beta +- Update to beta 1.4.0 version. +- Add common subpackage for common files. + +* Sun Nov 08 2009 Kevin Fenzi - 1.4.0-0.1.alpha +- Initial alpha version of 1.4.0 + * Sat Jul 25 2009 Fedora Release Engineering - 1.2.6-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild diff --git a/sources b/sources index be951c6..c378b32 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -45f84d58f80642ce914f147232f0d396 munin_1.2.6.tar.gz +04086f23b657e05e4e5e5a8fa6082f16 munin-1.4.1.tar.gz From 1741fc3370367f28bedca3c885af631c6802d261 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Wed, 6 Jan 2010 05:55:03 +0000 Subject: [PATCH 003/108] Update to 1.4.3 --- .cvsignore | 2 +- munin-1.4.2-fontfix.patch | 16 ++++++++++++++ munin.spec | 45 +++++++++++++++++++++++++++++++++------ sources | 2 +- 4 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 munin-1.4.2-fontfix.patch diff --git a/.cvsignore b/.cvsignore index 65c421e..2fe8546 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -munin-1.4.1.tar.gz +munin-1.4.3.tar.gz diff --git a/munin-1.4.2-fontfix.patch b/munin-1.4.2-fontfix.patch new file mode 100644 index 0000000..3b2ab34 --- /dev/null +++ b/munin-1.4.2-fontfix.patch @@ -0,0 +1,16 @@ +diff -aur ../munin-1.4.2.orig/master/lib/Munin/Master/GraphOld.pm ./master/lib/Munin/Master/GraphOld.pm +--- ../munin-1.4.2.orig/master/lib/Munin/Master/GraphOld.pm 2009-12-16 15:53:28.000000000 +0100 ++++ ./master/lib/Munin/Master/GraphOld.pm 2009-12-17 11:22:44.753518725 +0100 +@@ -1299,9 +1299,9 @@ + # The RRD 1.2 documentation says you can identify font family + # names but I never got that to work, but full font path worked + return ( +- '--font', "LEGEND:7:$libdir/DejaVuSansMono.ttf", +- '--font', "UNIT:7:$libdir/DejaVuSans.ttf", +- '--font', "AXIS:7:$libdir/DejaVuSans.ttf", ++ '--font', "LEGEND:7:/usr/share/fonts/bitstream-vera/VeraMono.ttf", ++ '--font', "UNIT:7:/usr/share/fonts/bitstream-vera/VeraMono.ttf", ++ '--font', "AXIS:7:/usr/share/fonts/bitstream-vera/VeraMono.ttf", + ); + } elsif ($RRDs::VERSION >= 1.3) { + # RRD 1.3 and up diff --git a/munin.spec b/munin.spec index 8053195..463c69a 100644 --- a/munin.spec +++ b/munin.spec @@ -1,5 +1,5 @@ Name: munin -Version: 1.4.1 +Version: 1.4.3 Release: 1%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera @@ -11,6 +11,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source0: http://downloads.sourceforge.net/sourceforge/munin/%{name}-%{version}.tar.gz Patch1: munin-1.4.0-config.patch +Patch2: munin-1.4.2-fontfix.patch Source1: munin-1.2.4-sendmail-config Source2: munin-1.2.5-hddtemp_smartctl-config @@ -24,9 +25,11 @@ BuildRequires: perl-Module-Build # needed for hostname for the defaut config BuildRequires: net-tools # java buildrequires on fedora +%if 0%{?rhel} > 4 || 0%{?fedora} > 6 BuildRequires: java-devel >= 1.6 BuildRequires: mx4j BuildRequires: jpackage-utils +%endif BuildRequires: perl-Net-SNMP Requires: %{name}-common = %{version} @@ -36,7 +39,11 @@ Requires: logrotate Requires: /bin/mail Requires(pre): shadow-utils Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +%if 0%{?rhel} > 5 || 0%{?fedora} > 6 Requires: dejavu-sans-mono-fonts +%else +Requires: bitstream-vera-fonts +%endif %description Munin is a highly flexible and powerful solution used to create graphs of @@ -100,6 +107,7 @@ maintaining a rattling ease of installation and configuration. This package contains common files that are used by both the server (munin) and node (munin-node) packages. +%if 0%{?rhel} > 4 || 0%{?fedora} > 6 %package java-plugins Group: System Environment/Daemons Summary: java-plugins for munin @@ -108,20 +116,28 @@ BuildArchitectures: noarch %description java-plugins java-plugins for munin-node. +%endif %prep %setup -q %patch1 -p1 +%if 0%{?rhel} < 6 && 0%{?fedora} < 11 +%patch2 -p0 +%endif %build +%if 0%{?rhel} > 4 || 0%{?fedora} > 6 export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$(build-classpath mx4j):$CLASSPATH +%endif make CONFIG=dists/redhat/Makefile.config %install ## Node make CONFIG=dists/redhat/Makefile.config \ +%if 0%{?rhel} > 4 || 0%{?fedora} > 6 JAVALIBDIR=%{buildroot}%{_datadir}/java \ +%endif PREFIX=%{buildroot}%{_prefix} \ DOCDIR=%{buildroot}%{_docdir}/%{name}-%{version} \ MANDIR=%{buildroot}%{_mandir} \ @@ -170,10 +186,9 @@ install -m 0644 %{SOURCE4} %{buildroot}/etc/logrotate.d/munin # install config for postfix under fedora install -m 0644 %{SOURCE6} %{buildroot}/etc/munin/plugin-conf.d/postfix -# Use font from bitstream-vera-fonts-sans-mono -rm -f $RPM_BUILD_ROOT/%{_datadir}/munin/VeraMono.ttf -ln -s /usr/share/fonts/dejavu/DejaVuSansMono.ttf $RPM_BUILD_ROOT/%{_datadir}/munin/VeraMono.ttf - +# Use system font +rm -f $RPM_BUILD_ROOT/%{_datadir}/munin/DejaVuSansMono.ttf +rm -f $RPM_BUILD_ROOT/%{_datadir}/munin/DejaVuSans.ttf %clean rm -rf $RPM_BUILD_ROOT @@ -217,7 +232,6 @@ exit 0 %{_datadir}/munin/munin-html %{_datadir}/munin/munin-limits %{_datadir}/munin/munin-update -%{_datadir}/munin/VeraMono.ttf %{perl_vendorlib}/Munin/Master %dir /etc/munin/templates %dir /etc/munin @@ -265,11 +279,30 @@ exit 0 %dir %{perl_vendorlib}/Munin %{perl_vendorlib}/Munin/Common +%if 0%{?rhel} > 4 || 0%{?fedora} > 6 %files java-plugins %defattr(-, root, root) %{_datadir}/java/%{name}-jmx-plugins.jar +%endif %changelog +* Thu Dec 31 2009 Kevin Fenzi - 1.4.3-1 +- Update to 1.4.3 + +* Thu Dec 17 2009 Ingvar Hagelund - 1.4.2-1 +- New upstream release +- Removed upstream packaged fonts +- Added a patch that makes rrdtool use the system bitstream vera fonts on + rhel < 6 and fedora < 11 + +* Fri Dec 11 2009 Ingvar Hagelund - 1.4.1-3 +- More correct fedora and el versions for previous font path fix +- Added a patch that fixes a quoting bug in GraphOld.pm, fixing fonts on el4 + +* Wed Dec 09 2009 Ingvar Hagelund - 1.4.1-2 +- Remove jmx plugins when not supported (like on el4 and older fedora) +- Correct font path on older distros like el5, el4 and fedora<11 + * Fri Dec 04 2009 Kevin Fenzi - 1.4.1-1 - Update to 1.4.1 diff --git a/sources b/sources index c378b32..76ce6f4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -04086f23b657e05e4e5e5a8fa6082f16 munin-1.4.1.tar.gz +229646facc4e2bca6511b20b3e5eb73f munin-1.4.3.tar.gz From 13cbf905457b1755ef5a23a26cf450e56341bbeb Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Fri, 22 Jan 2010 06:42:17 +0000 Subject: [PATCH 004/108] Fix owner on state files. Add some BuildRequires. Make munin-node-configure only run on install, not upgrade. bug 540687 --- munin.spec | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/munin.spec b/munin.spec index 463c69a..9ffa705 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 1.4.3 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -24,16 +24,22 @@ BuildArchitectures: noarch BuildRequires: perl-Module-Build # needed for hostname for the defaut config BuildRequires: net-tools +BuildRequires: perl-HTML-Template +BuildRequires: perl-Log-Log4perl +BuildRequires: perl-Net-Server +BuildRequires: perl-Net-SSLeay +BuildRequires: perl-Net-SNMP + # java buildrequires on fedora %if 0%{?rhel} > 4 || 0%{?fedora} > 6 BuildRequires: java-devel >= 1.6 BuildRequires: mx4j BuildRequires: jpackage-utils %endif -BuildRequires: perl-Net-SNMP Requires: %{name}-common = %{version} -Requires: perl-Net-Server perl-Net-SNMP +Requires: perl-Net-Server +Requires: perl-Net-SNMP Requires: rrdtool Requires: logrotate Requires: /bin/mail @@ -205,7 +211,10 @@ exit 0 %post node /sbin/chkconfig --add munin-node -/usr/sbin/munin-node-configure --shell 2> /dev/null | sh >& /dev/null || : +# Only run configure on a new install, not an upgrade. +if [ "$1" = "1" ]; then + /usr/sbin/munin-node-configure --shell 2> /dev/null | sh >& /dev/null || : +fi %preun node test "$1" != 0 || %{_initrddir}/munin-node stop &>/dev/null || : @@ -240,7 +249,7 @@ exit 0 %config(noreplace) /etc/munin/munin.conf %config(noreplace) /etc/logrotate.d/munin %attr(-, munin, munin) %dir /var/lib/munin -%attr(-, nobody, munin) %dir /var/lib/munin/plugin-state +%attr(-, munin, munin) %dir /var/lib/munin/plugin-state %attr(-, munin, munin) %dir /var/run/munin %attr(-, munin, munin) %dir /var/log/munin %attr(-, munin, munin) /var/www/html/munin @@ -286,6 +295,11 @@ exit 0 %endif %changelog +* Sun Jan 17 2010 Kevin Fenzi - 1.4.3-2 +- Fix owner on state files. +- Add some BuildRequires. +- Make munin-node-configure only run on install, not upgrade. bug 540687 + * Thu Dec 31 2009 Kevin Fenzi - 1.4.3-1 - Update to 1.4.3 From a41ec1093090ef7e69e7ed32665b82977f1d3e34 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Tue, 2 Mar 2010 01:56:26 +0000 Subject: [PATCH 005/108] Update to 1.4.4 Add more doc files. Fixes bug #563824 fw_forwarded_local fixed upstream in 1.4.4. Fixes bug #568500 --- .cvsignore | 2 +- munin.spec | 11 ++++++++--- sources | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.cvsignore b/.cvsignore index 2fe8546..6700c6a 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -munin-1.4.3.tar.gz +munin-1.4.4.tar.gz diff --git a/munin.spec b/munin.spec index 9ffa705..927c9bc 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 1.4.3 -Release: 2%{?dist} +Version: 1.4.4 +Release: 1%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -179,7 +179,6 @@ mkdir -p %{buildroot}/etc/cron.d mkdir -p %{buildroot}%{_docdir}/%{name}-%{version} install -m 0644 dists/redhat/munin.cron.d %{buildroot}/etc/cron.d/munin -install -m 0644 ChangeLog %{buildroot}%{_docdir}/%{name}-%{version}/ChangeLog cp -a master/www/* %{buildroot}/var/www/html/munin/ # install config for sendmail under fedora @@ -233,6 +232,7 @@ exit 0 %files %defattr(-, root, root) %doc %{_docdir}/%{name}-%{version}/ +%doc Announce-1.4.0 ChangeLog COPYING HACKING.pod perltidyrc README RELEASE UPGRADING %{_bindir}/munin-cron %{_bindir}/munindoc %{_bindir}/munin-check @@ -295,6 +295,11 @@ exit 0 %endif %changelog +* Mon Mar 01 2010 Kevin Fenzi - 1.4.4-1 +- Update to 1.4.4 +- Add more doc files. Fixes bug #563824 +- fw_forwarded_local fixed upstream in 1.4.4. Fixes bug #568500 + * Sun Jan 17 2010 Kevin Fenzi - 1.4.3-2 - Fix owner on state files. - Add some BuildRequires. diff --git a/sources b/sources index 76ce6f4..7d2ac5b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -229646facc4e2bca6511b20b3e5eb73f munin-1.4.3.tar.gz +18d864fa04134ce67042a99dd3ec23ae munin-1.4.4.tar.gz From 5cf5e6ed1e69e7827817df25c8e1fc706527eb99 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 8 May 2010 02:00:33 +0000 Subject: [PATCH 006/108] Initialize branch EL-6 for munin --- branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 branch diff --git a/branch b/branch new file mode 100644 index 0000000..46381b9 --- /dev/null +++ b/branch @@ -0,0 +1 @@ +EL-6 From 3b0154f132a7f21a2f17705cd6f82a7ca0cc0a50 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Sat, 26 Jun 2010 23:49:10 +0000 Subject: [PATCH 007/108] Add /etc/munin/conf.d/ dir Update to 1.4.5 --- .cvsignore | 2 +- munin.spec | 15 +++++++++++++-- sources | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.cvsignore b/.cvsignore index 6700c6a..808158d 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -munin-1.4.4.tar.gz +munin-1.4.5.tar.gz diff --git a/munin.spec b/munin.spec index 927c9bc..b097ed1 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 1.4.4 -Release: 1%{?dist} +Version: 1.4.5 +Release: 2%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -153,6 +153,7 @@ make CONFIG=dists/redhat/Makefile.config \ mkdir -p %{buildroot}/etc/rc.d/init.d mkdir -p %{buildroot}/etc/munin/plugins mkdir -p %{buildroot}/etc/munin/plugin-conf.d +mkdir -p %{buildroot}/etc/munin/conf.d mkdir -p %{buildroot}/etc/logrotate.d mkdir -p %{buildroot}/var/lib/munin mkdir -p %{buildroot}/var/log/munin @@ -244,6 +245,7 @@ exit 0 %{perl_vendorlib}/Munin/Master %dir /etc/munin/templates %dir /etc/munin +%dir /etc/munin/conf.d %config(noreplace) /etc/munin/templates/* %config(noreplace) /etc/cron.d/munin %config(noreplace) /etc/munin/munin.conf @@ -295,6 +297,15 @@ exit 0 %endif %changelog +* Sat Jun 12 2010 Kevin Fenzi - 1.4.5-2 +- Add /etc/munin/conf.d/ dir + +* Sat Jun 05 2010 Kevin Fenzi - 1.4.5-1 +- Update to 1.4.5 + +* Tue Jun 01 2010 Marcela Maslanova - 1.4.4-2 +- Mass rebuild with perl-5.12.0 + * Mon Mar 01 2010 Kevin Fenzi - 1.4.4-1 - Update to 1.4.4 - Add more doc files. Fixes bug #563824 diff --git a/sources b/sources index 7d2ac5b..b290057 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -18d864fa04134ce67042a99dd3ec23ae munin-1.4.4.tar.gz +4ae84b9a27b686c3819d8d7b51d8cb4c munin-1.4.5.tar.gz From f3f6aeb28644cd8ef917ac48ea9c6c2e7ece3adf Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Thu, 8 Jul 2010 00:59:26 +0000 Subject: [PATCH 008/108] Initial build for el6 Move docs to common subpackage to make sure COPYING is installed. Add /etc/munin/node.d dir --- munin.spec | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/munin.spec b/munin.spec index b097ed1..fbb9499 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 1.4.5 -Release: 2%{?dist} +Release: 4%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -31,12 +31,16 @@ BuildRequires: perl-Net-SSLeay BuildRequires: perl-Net-SNMP # java buildrequires on fedora -%if 0%{?rhel} > 4 || 0%{?fedora} > 6 -BuildRequires: java-devel >= 1.6 +%if 0%{?rhel} > 4 || 0%{?fedora} > 6 +BuildRequires: java-1.6.0-devel BuildRequires: mx4j BuildRequires: jpackage-utils %endif +%if 0%{?rhel} > 5 +ExcludeArch: ppc64 +%endif + Requires: %{name}-common = %{version} Requires: perl-Net-Server Requires: perl-Net-SNMP @@ -152,6 +156,7 @@ make CONFIG=dists/redhat/Makefile.config \ mkdir -p %{buildroot}/etc/rc.d/init.d mkdir -p %{buildroot}/etc/munin/plugins +mkdir -p %{buildroot}/etc/munin/node.d mkdir -p %{buildroot}/etc/munin/plugin-conf.d mkdir -p %{buildroot}/etc/munin/conf.d mkdir -p %{buildroot}/etc/logrotate.d @@ -233,7 +238,6 @@ exit 0 %files %defattr(-, root, root) %doc %{_docdir}/%{name}-%{version}/ -%doc Announce-1.4.0 ChangeLog COPYING HACKING.pod perltidyrc README RELEASE UPGRADING %{_bindir}/munin-cron %{_bindir}/munindoc %{_bindir}/munin-check @@ -262,6 +266,7 @@ exit 0 %defattr(-, root, root) %config(noreplace) /etc/munin/munin-node.conf %dir /etc/munin/plugin-conf.d +%dir /etc/munin/node.d %config(noreplace) /etc/munin/plugin-conf.d/munin-node %config(noreplace) /etc/munin/plugin-conf.d/sendmail %config(noreplace) /etc/munin/plugin-conf.d/hddtemp_smartctl @@ -287,6 +292,7 @@ exit 0 %files common %defattr(-, root, root) +%doc Announce-1.4.0 ChangeLog COPYING HACKING.pod perltidyrc README RELEASE UPGRADING %dir %{perl_vendorlib}/Munin %{perl_vendorlib}/Munin/Common @@ -297,6 +303,12 @@ exit 0 %endif %changelog +* Wed Jul 07 2010 Kevin Fenzi - 1.4.5-4 +- Move docs to common subpackage to make sure COPYING is installed. + +* Sat Jul 03 2010 Kevin Fenzi - 1.4.5-3 +- Add /etc/munin/node.d dir + * Sat Jun 12 2010 Kevin Fenzi - 1.4.5-2 - Add /etc/munin/conf.d/ dir From 4440f0acfebd5da3f20f2c4191085b4edd4924e9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 03:49:28 +0000 Subject: [PATCH 009/108] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- branch | 1 - 3 files changed, 22 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile delete mode 100644 branch diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index cc1c038..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: munin -# $Id$ -NAME := munin -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/branch b/branch deleted file mode 100644 index 46381b9..0000000 --- a/branch +++ /dev/null @@ -1 +0,0 @@ -EL-6 From 5829540bffa6164c59debf4c9e346f68028f4d08 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Tue, 21 Dec 2010 14:41:28 -0700 Subject: [PATCH 010/108] Build for ppc64 in epel6 again, just exclude java plugins subpackage. --- munin.spec | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/munin.spec b/munin.spec index fbb9499..eb97ea4 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 1.4.5 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -31,16 +31,12 @@ BuildRequires: perl-Net-SSLeay BuildRequires: perl-Net-SNMP # java buildrequires on fedora -%if 0%{?rhel} > 4 || 0%{?fedora} > 6 +%if 0%{?rhel} == 5 || 0%{?fedora} > 6 BuildRequires: java-1.6.0-devel BuildRequires: mx4j BuildRequires: jpackage-utils %endif -%if 0%{?rhel} > 5 -ExcludeArch: ppc64 -%endif - Requires: %{name}-common = %{version} Requires: perl-Net-Server Requires: perl-Net-SNMP @@ -117,7 +113,7 @@ maintaining a rattling ease of installation and configuration. This package contains common files that are used by both the server (munin) and node (munin-node) packages. -%if 0%{?rhel} > 4 || 0%{?fedora} > 6 +%if 0%{?rhel} == 5 || 0%{?fedora} > 6 %package java-plugins Group: System Environment/Daemons Summary: java-plugins for munin @@ -131,12 +127,12 @@ java-plugins for munin-node. %prep %setup -q %patch1 -p1 -%if 0%{?rhel} < 6 && 0%{?fedora} < 11 +%if 0%{?rhel} == 5 %patch2 -p0 %endif %build -%if 0%{?rhel} > 4 || 0%{?fedora} > 6 +%if 0%{?rhel} == 5 || 0%{?fedora} > 6 export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$(build-classpath mx4j):$CLASSPATH %endif make CONFIG=dists/redhat/Makefile.config @@ -145,7 +141,7 @@ make CONFIG=dists/redhat/Makefile.config ## Node make CONFIG=dists/redhat/Makefile.config \ -%if 0%{?rhel} > 4 || 0%{?fedora} > 6 +%if 0%{?rhel} == 5 || 0%{?fedora} > 6 JAVALIBDIR=%{buildroot}%{_datadir}/java \ %endif PREFIX=%{buildroot}%{_prefix} \ @@ -296,13 +292,16 @@ exit 0 %dir %{perl_vendorlib}/Munin %{perl_vendorlib}/Munin/Common -%if 0%{?rhel} > 4 || 0%{?fedora} > 6 +%if 0%{?rhel} == 5 || 0%{?fedora} > 6 %files java-plugins %defattr(-, root, root) %{_datadir}/java/%{name}-jmx-plugins.jar %endif %changelog +* Tue Dec 21 2010 Kevin Fenzi - 1.4.5-5 +- Build for ppc64 in epel6 again, just exclude java plugins subpackage. + * Wed Jul 07 2010 Kevin Fenzi - 1.4.5-4 - Move docs to common subpackage to make sure COPYING is installed. From faf01a13389d52609f5e31e0e7411bb04c6c9888 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Tue, 8 Feb 2011 19:36:34 -0700 Subject: [PATCH 011/108] Add patch for uppercase nodes (fixes 673263) --- munin-1.4.5-uppercase.patch | 21 +++++++++++++++++++++ munin.spec | 7 ++++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 munin-1.4.5-uppercase.patch diff --git a/munin-1.4.5-uppercase.patch b/munin-1.4.5-uppercase.patch new file mode 100644 index 0000000..3dcd53d --- /dev/null +++ b/munin-1.4.5-uppercase.patch @@ -0,0 +1,21 @@ +diff -Nur munin-1.4.5.orig/node/lib/Munin/Node/Server.pm munin-1.4.5/node/lib/Munin/Node/Server.pm +--- munin-1.4.5.orig/node/lib/Munin/Node/Server.pm 2010-05-22 16:54:31.000000000 -0600 ++++ munin-1.4.5/node/lib/Munin/Node/Server.pm 2011-02-07 15:15:51.527998974 -0700 +@@ -171,7 +171,7 @@ + + logger ("DEBUG: Running command \"$_\".") if $config->{DEBUG}; + if (/^list\s*([0-9a-zA-Z\.\-]+)?/i) { +- _list_services($session, $1); ++ _list_services($session, lc($1)); + } + elsif (/^cap\s?(.*)/i) { + _negotiate_session_capabilities($session, $1); +@@ -309,7 +309,7 @@ + sub _list_services { + my ($session, $node) = @_; + +- $node ||= $config->{fqdn}; ++ $node ||= lc($config->{fqdn}); + + if (exists $nodes{$node}) { + my @services = @{$nodes{$node}}; diff --git a/munin.spec b/munin.spec index eb97ea4..1fa4145 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 1.4.5 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -12,6 +12,7 @@ Source0: http://downloads.sourceforge.net/sourceforge/munin/%{name}-%{version}.t Patch1: munin-1.4.0-config.patch Patch2: munin-1.4.2-fontfix.patch +Patch3: munin-1.4.5-uppercase.patch Source1: munin-1.2.4-sendmail-config Source2: munin-1.2.5-hddtemp_smartctl-config @@ -130,6 +131,7 @@ java-plugins for munin-node. %if 0%{?rhel} == 5 %patch2 -p0 %endif +%patch3 -p1 %build %if 0%{?rhel} == 5 || 0%{?fedora} > 6 @@ -299,6 +301,9 @@ exit 0 %endif %changelog +* Tue Feb 08 2011 Kevin Fenzi - 1.4.5-6 +- Add patch for uppercase nodes (fixes 673263) + * Tue Dec 21 2010 Kevin Fenzi - 1.4.5-5 - Build for ppc64 in epel6 again, just exclude java plugins subpackage. From 5c16be04f8f3eb59bb4fde0f84096bb69fdf7b38 Mon Sep 17 00:00:00 2001 From: "D. Johnson" Date: Wed, 14 Mar 2012 16:09:56 -0500 Subject: [PATCH 012/108] updated for 1.4.7 release --- .gitignore | 2 ++ munin.spec | 7 +++++-- sources | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2d51cfd..3d5c7bd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ /munin.conf /munin-1.4.5-no-such-object.patch /munin-1.4.6.tar.gz +/munin-1.4.7.tar.gz +/munin-1.4.7.tar.gz.sha256sum diff --git a/munin.spec b/munin.spec index 58a5438..976a45c 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 1.4.6 -Release: 4%{?dist}.2 +Version: 1.4.7 +Release: 1%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) License: GPLv2 and Bitstream Vera Group: System Environment/Daemons @@ -346,6 +346,9 @@ exit 0 %changelog +* Wed Mar 14 2012 D. Johnson - 1.4.7-1 +- updated for 1.4.7 release + * Sat Aug 27 2011 Kevin Fenzi - 1.4.6-4.1 - Add patch to run restorecon in the sysvinit script. - This doesn't matter on f16+ diff --git a/sources b/sources index ff2fdd7..187630f 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -b54f320ba75f97ad2ddba3664f7158f2 munin-1.4.6.tar.gz +bb61f2022d215e8a3bbe4a7a4b77bc43 munin-1.4.7.tar.gz +76c435790a05cfa0615410cd9de65fa0 munin-1.4.7.tar.gz.sha256sum From 91d9630c7e38e864bf714c86ed6c44f7bed17de7 Mon Sep 17 00:00:00 2001 From: "D. Johnson" Date: Sat, 23 Mar 2013 22:34:17 -0500 Subject: [PATCH 013/108] unbork previous merge --- munin-asyncd.service | 3 +-- munin.spec | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/munin-asyncd.service b/munin-asyncd.service index b3e8a0d..18f7397 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -5,8 +5,7 @@ Requires=munin-node.service After=network.target munin-node.service [Service] -Type=forking -PIDFile=/var/run/munin/munin-node.pid +Type=simple ExecStart=/usr/sbin/munin-asyncd PrivateTmp=true diff --git a/munin.spec b/munin.spec index b7b4bcd..d68fe53 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.12 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -359,6 +359,7 @@ install -m 0644 %{SOURCE14} %{buildroot}/lib/systemd/system/munin-asyncd.service install -m 0644 %{SOURCE15} %{buildroot}/lib/systemd/system/munin-fcgi-html.service install -m 0644 %{SOURCE16} %{buildroot}/lib/systemd/system/munin-fcgi-graph.service %endif +mkdir -p %{buildroot}/var/lib/munin/spool # install tmpfiles.d entry %if 0%{?rhel} > 6 || 0%{?fedora} > 14 @@ -523,28 +524,23 @@ fi %endif %endif + %preun node %if 0%{?rhel} > 6 || 0%{?fedora} > 15 # Newer installs use systemd %if 0%{?systemd_preun:1} - for svc in node ; do - %systemd_preun munin-${svc}.service - done + %systemd_preun munin-node.service %else if [ "$1" = 0 ]; then - for svc in node ; do - /bin/systemctl --no-reload disable munin-${svc}.service >/dev/null 2>&1 || : - /bin/systemctl stop munin-${svc}.service >/dev/null 2>&1 || : - done + /bin/systemctl --no-reload disable munin-node.service >/dev/null 2>&1 || : + /bin/systemctl stop munin-node.service >/dev/null 2>&1 || : fi %endif %else # Older installs use sysvinit / upstart if [ "$1" = 0 ]; then - for svc in node fcgi-html fcgi-graph; do - service munin-${svc} stop &>/dev/null || : - /sbin/chkconfig --del munin-${svc} - done + service munin-node stop &>/dev/null || : + /sbin/chkconfig --del munin-node fi %endif @@ -683,6 +679,7 @@ exit 0 %defattr(-,root,root) %{_sbindir}/munin-asyncd %{_datadir}/munin/munin-async +%dir /var/lib/munin/spool %if 0%{?rhel} > 6 || 0%{?fedora} > 15 /lib/systemd/system/munin-asyncd.service %else @@ -725,6 +722,9 @@ exit 0 %changelog +* Sun Mar 24 2013 D. Johnson - 2.0.12-2 +- BZ# 917002 minor edits for asyncd + * Fri Mar 22 2013 D. Johnson - 2.0.12-1 - Upstream release 2.0.12 From f8698d362a01b8fb1267b91686f58fb4b5a2a07b Mon Sep 17 00:00:00 2001 From: "D. Johnson" Date: Sun, 28 Apr 2013 13:36:49 -0500 Subject: [PATCH 014/108] Re-merge spec file --- munin.spec | 8 -------- 1 file changed, 8 deletions(-) diff --git a/munin.spec b/munin.spec index fd9d91d..44b579f 100644 --- a/munin.spec +++ b/munin.spec @@ -1,11 +1,6 @@ Name: munin -<<<<<<< HEAD -Version: 2.0.12 -Release: 2%{?dist} -======= Version: 2.0.13 Release: 1%{?dist} ->>>>>>> origin/master Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -777,8 +772,6 @@ exit 0 %changelog -<<<<<<< HEAD -======= * Fri Apr 26 2013 D. Johnson - 2.0.13-1 - Upstream released 2.0.13 @@ -789,7 +782,6 @@ exit 0 * Mon Apr 01 2013 D. Johnson - 2.0.12-3 - Add fw_ default config ->>>>>>> origin/master * Sun Mar 24 2013 D. Johnson - 2.0.12-2 - BZ# 917002 minor edits for asyncd From 66c2ce547e5be887029ec0da6edd1cb23af6736a Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 28 Apr 2014 16:56:21 +0200 Subject: [PATCH 015/108] Carp::Always is not actually required --- munin.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/munin.spec b/munin.spec index cd9cf46..4f5f15e 100644 --- a/munin.spec +++ b/munin.spec @@ -111,7 +111,6 @@ BuildRequires: systemd-units # Munin node requires Requires: perl(Cache::Memcached) -Requires: perl(Carp::Always) Requires: perl(Crypt::DES) Requires: perl(Digest::HMAC) Requires: perl(Digest::SHA1) From e14d8ca8794836b609a05e462f695c1e8de0e30b Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 28 Apr 2014 16:56:47 +0200 Subject: [PATCH 016/108] No Cache::Memcached in el7 --- munin.spec | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/munin.spec b/munin.spec index 4f5f15e..2b18bdd 100644 --- a/munin.spec +++ b/munin.spec @@ -110,7 +110,9 @@ BuildRequires: systemd-units %endif # Munin node requires +%if 0%{?rhel} == 0 Requires: perl(Cache::Memcached) +%endif Requires: perl(Crypt::DES) Requires: perl(Digest::HMAC) Requires: perl(Digest::SHA1) @@ -313,6 +315,11 @@ Munin plugins that require Net::IP. This is only dhcpd3 and ntp currently. install -c %{SOURCE12} ./plugins/node.d.linux/cpuspeed.in %endif +%if 0%{?rhel} +# This one relies on Cache::Memcached, which is not shipped with el7 +rm -f plugins/node.d/memcached_.in +%endif + %patch4 -p0 %patch5 -p0 #% patch7 -p1 From ab459e769905967251b616b9d5ae9c49d9a8a598 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 28 Apr 2014 16:57:06 +0200 Subject: [PATCH 017/108] No Net::CIDR in el7 --- munin.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/munin.spec b/munin.spec index 2b18bdd..7ec0aea 100644 --- a/munin.spec +++ b/munin.spec @@ -116,7 +116,6 @@ Requires: perl(Cache::Memcached) Requires: perl(Crypt::DES) Requires: perl(Digest::HMAC) Requires: perl(Digest::SHA1) -Requires: perl(Net::CIDR) Requires: perl(Net::Server) Requires: perl(Net::Server::Fork) Requires: perl(Net::SNMP) @@ -164,7 +163,11 @@ Summary: Network-wide graphing framework (node) BuildArch: noarch Requires: %{name}-common = %{version} Requires: perl-Net-Server -Requires: perl-Net-CIDR +%if 0%{?rhel} == 0 +# This one is in fact optional, only needed for cidr_allow in munin-node, +# which is documented in the manual page. Not present in el7. +Requires: perl(Net::CIDR) +%endif Requires: procps >= 2.0.7 Requires: sysstat, /usr/bin/which, hdparm Requires: perl(LWP::UserAgent) From 86f91ad78464d6a421e292a6f61960626e5617cc Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 28 Apr 2014 16:57:21 +0200 Subject: [PATCH 018/108] RHEL 7 Actually uses systemd too --- munin.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/munin.spec b/munin.spec index 7ec0aea..5ef0fbc 100644 --- a/munin.spec +++ b/munin.spec @@ -403,7 +403,7 @@ install -m 0644 %{SOURCE14} %{buildroot}/lib/systemd/system/munin-asyncd.service install -m 0644 %{SOURCE15} %{buildroot}/lib/systemd/system/munin-fcgi-html.service install -m 0644 %{SOURCE16} %{buildroot}/lib/systemd/system/munin-fcgi-graph.service %endif -%if 0%{?fedora} > 16 +%if 0%{?rhel} > 6 || 0%{?fedora} > 16 install -m 0644 %{SOURCE11} %{buildroot}/lib/systemd/system/munin-node.service install -m 0644 %{SOURCE14} %{buildroot}/lib/systemd/system/munin-asyncd.service install -m 0644 %{SOURCE15} %{buildroot}/lib/systemd/system/munin-fcgi-html.service @@ -418,7 +418,7 @@ install -m 0644 %{SOURCE9} %{buildroot}%{_sysconfdir}/tmpfiles.d/%{name}.conf %endif # Fedora 15 and rhel use sysvinit / upstart -%if 0%{?rhel} > 4 || 0%{?fedora} == 15 +%if (0%{?rhel} > 4 && 0%{?rhel} <= 6) || 0%{?fedora} == 15 mkdir -p %{buildroot}/etc/rc.d/init.d cat %{SOURCE18} | sed -e 's/2345/\-/' > %{buildroot}/etc/rc.d/init.d/munin-node chmod 755 %{buildroot}/etc/rc.d/init.d/munin-node From f4ebf579823f436e5492923462fbbd18702e48e9 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 28 Apr 2014 16:57:34 +0200 Subject: [PATCH 019/108] mx4j is not a build time dependency --- munin.spec | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/munin.spec b/munin.spec index 5ef0fbc..5e32c1b 100644 --- a/munin.spec +++ b/munin.spec @@ -133,7 +133,6 @@ BuildRequires: java-1.7.0-devel # java buildrequires on fedora 17 and higher BuildRequires: java-1.6.0-devel %endif -BuildRequires: mx4j BuildRequires: jpackage-utils # CGI requires @@ -336,7 +335,7 @@ sed -i -e 's,^PERLSITELIB := \(.*\),PERLSITELIB := %{perl_vendorlib},;' Makefile %build -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$(build-classpath mx4j):$CLASSPATH +export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH make CONFIG=Makefile.config-dist # Convert to utf-8 @@ -356,7 +355,7 @@ done rm -rf ${buildroot} ## Node -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$(build-classpath mx4j):$CLASSPATH +export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH make CONFIG=Makefile.config-dist \ DESTDIR=%{buildroot} \ %if 0%{?rhel} > 7 || 0%{?fedora} > 19 From bc564c13669e2dd0a1e1e27e57401895fbbbbfe3 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 28 Apr 2014 17:02:43 +0200 Subject: [PATCH 020/108] Bump epel7 branch release --- munin.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 5e32c1b..a8523e7 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.21 -Release: 1%{?dist} +Release: 1%{?dist}.1 Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -804,6 +804,13 @@ exit 0 %changelog +* Mon Apr 28 2014 Lubomir Rintel - 2.0.21-1.1 +- mx4j is not a build time dependency +- RHEL 7 Actually uses systemd too +- No Net::CIDR in el7 +- No Cache::Memcached in el7 +- Carp::Always is not actually required + * Fri Apr 25 2014 "D. Johnson" - 2.0.21-1 - Upstream released 2.0.21 From 9a5c1177a7d5f5b6793b8484fc0b8101d57d6481 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 25 May 2017 12:24:25 +0200 Subject: [PATCH 021/108] Fix building on Perl without '.' in @INC --- ...-building-on-Perl-without-dot-in-INC.patch | 24 +++++++++++++++++++ munin.spec | 7 +++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch diff --git a/munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch b/munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch new file mode 100644 index 0000000..d170b42 --- /dev/null +++ b/munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch @@ -0,0 +1,24 @@ +diff -up munin-2.0.33/master/Build.PL.orig munin-2.0.33/master/Build.PL +--- munin-2.0.33/master/Build.PL.orig 2017-05-25 12:15:34.037053427 +0200 ++++ munin-2.0.33/master/Build.PL 2017-05-25 12:15:53.935936213 +0200 +@@ -1,3 +1,4 @@ ++BEGIN { push @INC, '.'; } + use MasterBuilder; + + use warnings; +diff -up munin-2.0.33/node/Build.PL.orig munin-2.0.33/node/Build.PL +--- munin-2.0.33/node/Build.PL.orig 2017-05-25 12:16:06.121864433 +0200 ++++ munin-2.0.33/node/Build.PL 2017-05-25 12:16:17.849795350 +0200 +@@ -1,3 +1,4 @@ ++BEGIN { push @INC, '.'; } + use NodeBuilder; + + use warnings; +diff -up munin-2.0.33/plugins/Build.PL.orig munin-2.0.33/plugins/Build.PL +--- munin-2.0.33/plugins/Build.PL.orig 2017-05-25 12:16:30.426721266 +0200 ++++ munin-2.0.33/plugins/Build.PL 2017-05-25 12:16:40.500661926 +0200 +@@ -1,3 +1,4 @@ ++BEGIN { push @INC, '.'; } + use PluginsBuilder; + + use warnings; diff --git a/munin.spec b/munin.spec index 2aa86ea..b177d9c 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.33 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -52,6 +52,7 @@ Patch14: mariadb-innodb.patch #Patch15: https://patch-diff.githubusercontent.com/raw/munin-monitoring/munin/pull/737.patch #Patch16: https://patch-diff.githubusercontent.com/raw/munin-monitoring/munin/pull/759.patch #Patch17: https://patch-diff.githubusercontent.com/raw/munin-monitoring/munin/pull/797.patch +Patch18: munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch BuildArch: noarch @@ -356,6 +357,7 @@ rm -f plugins/node.d/memcached_.in %patch14 -p1 #% patch15 -p1 #% patch16 -p1 +%patch18 -p1 install -c %{SOURCE13} ./resources/ # Create Makefile.config-dist @@ -880,6 +882,9 @@ exit 0 %changelog +* Thu May 25 2017 Jitka Plesnikova - 2.0.33-2 +- Fix building on Perl without '.' in @INC + * Fri Mar 03 2017 "D. Johnson" - 2.0.33-1 - Upstream released 2.0.33 From 90da3369f7b5cb84831a786f02bee52c1e05bd3d Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 6 Jun 2017 16:12:44 +0200 Subject: [PATCH 022/108] Perl 5.26 rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index b177d9c..6cf2408 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.33 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -882,6 +882,9 @@ exit 0 %changelog +* Tue Jun 06 2017 Jitka Plesnikova - 2.0.33-3 +- Perl 5.26 rebuild + * Thu May 25 2017 Jitka Plesnikova - 2.0.33-2 - Fix building on Perl without '.' in @INC From 4f41a72a9b528a283aac3766353ac6257682584e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 13 Jul 2017 10:36:28 +0200 Subject: [PATCH 023/108] perl dependency renamed to perl-interpreter --- munin.spec | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/munin.spec b/munin.spec index 6cf2408..fdbc149 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.33 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -61,7 +61,7 @@ BuildRequires: /usr/bin/hostname %else BuildRequires: /bin/hostname %endif -BuildRequires: perl >= 5.8 +BuildRequires: perl-interpreter >= 5.8 %if 0%{?rhel} > 6 || 0%{?fedora} > 12 BuildRequires: perl(Directory::Scratch) %endif @@ -93,7 +93,7 @@ Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $versi # Munin server requires Requires: logrotate -Requires: perl >= 5.8 +Requires: perl-interpreter >= 5.8 Requires: perl(CGI::Fast) Requires: perl(FCGI) Requires: perl(Digest::MD5) @@ -882,6 +882,10 @@ exit 0 %changelog +* Thu Jul 13 2017 Petr Pisar - 2.0.33-4 +- perl dependency renamed to perl-interpreter + + * Tue Jun 06 2017 Jitka Plesnikova - 2.0.33-3 - Perl 5.26 rebuild From 211802288f4ddec8e3b4432087a3116290d2e9b5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 26 Jul 2017 22:27:59 +0000 Subject: [PATCH 024/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index fdbc149..e59b964 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.33 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -882,6 +882,9 @@ exit 0 %changelog +* Wed Jul 26 2017 Fedora Release Engineering - 2.0.33-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Thu Jul 13 2017 Petr Pisar - 2.0.33-4 - perl dependency renamed to perl-interpreter From ed450ae754c7752c3751dd467bb20c67139baee4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 8 Feb 2018 03:31:52 +0000 Subject: [PATCH 025/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index e59b964..21ded61 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.33 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -882,6 +882,9 @@ exit 0 %changelog +* Thu Feb 08 2018 Fedora Release Engineering - 2.0.33-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Wed Jul 26 2017 Fedora Release Engineering - 2.0.33-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From 0d0be0dc34436f890ca2a5dcd31040f35ca35375 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Tue, 13 Feb 2018 23:52:13 +0100 Subject: [PATCH 026/108] Remove BuildRoot definition None of currently supported distributions need that. It was needed last for EL5 which is EOL now Signed-off-by: Igor Gnatenko --- munin.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/munin.spec b/munin.spec index 21ded61..f2111e3 100644 --- a/munin.spec +++ b/munin.spec @@ -6,7 +6,6 @@ Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons License: GPLv2 URL: http://munin-monitoring.org/ -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz Source10: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.sha256sum Source1: munin-1.2.4-sendmail-config From ded84d702859796dbabfe96867151a9890fc85ff Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Wed, 14 Feb 2018 07:22:06 +0100 Subject: [PATCH 027/108] Remove %clean section None of currently supported distributions need that. Last one was EL5 which is EOL for a while. Signed-off-by: Igor Gnatenko --- munin.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/munin.spec b/munin.spec index f2111e3..e4e7ee9 100644 --- a/munin.spec +++ b/munin.spec @@ -590,9 +590,6 @@ mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services/ cp %{SOURCE25} %{buildroot}/%{_prefix}/lib/firewalld/services/munin-node.xml %endif -%clean -rm -rf %{buildroot} - # # node package scripts From 689b1a045eb8db63d355a8500c43be4b338172ce Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Sat, 30 Jun 2018 08:07:36 +0200 Subject: [PATCH 028/108] Perl 5.28 rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index e4e7ee9..a55d459 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.33 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -878,6 +878,9 @@ exit 0 %changelog +* Sat Jun 30 2018 Jitka Plesnikova - 2.0.33-7 +- Perl 5.28 rebuild + * Thu Feb 08 2018 Fedora Release Engineering - 2.0.33-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild From 2f3bbcea3c0ab415a865d25f75a54e4956b7e43e Mon Sep 17 00:00:00 2001 From: Jason Tibbitts Date: Tue, 10 Jul 2018 02:06:50 -0500 Subject: [PATCH 029/108] Remove needless use of %defattr --- munin.spec | 9 --------- 1 file changed, 9 deletions(-) diff --git a/munin.spec b/munin.spec index a55d459..ff62086 100644 --- a/munin.spec +++ b/munin.spec @@ -721,7 +721,6 @@ exit 0 %files -%defattr(-,root,root) %doc %{_mandir}/man1/munindoc* %doc %{_mandir}/man1/munin-sched* %doc %{_mandir}/man3/Munin::Master* @@ -769,7 +768,6 @@ exit 0 %files node -%defattr(-,root,root) %doc %{_mandir}/man1/munin-node* %doc %{_mandir}/man1/munin-run* %doc %{_mandir}/man3/Munin::Common* @@ -815,7 +813,6 @@ exit 0 %files async -%defattr(-,root,root) %{_sbindir}/munin-asyncd %{_datadir}/munin/munin-async %dir /var/lib/munin/spool @@ -827,7 +824,6 @@ exit 0 %files common -%defattr(-,root,root) %doc Announce-2.0 COPYING ChangeLog Checklist HACKING.pod README RELEASE UPGRADING UPGRADING-1.4 %dir %{perl_vendorlib}/Munin %dir %attr(-,munin,munin) %{_localstatedir}/run/%{name}/ @@ -838,18 +834,15 @@ exit 0 %files java-plugins -%defattr(-,root,root) %{_datadir}/java/munin-jmx-plugins.jar %{_datadir}/munin/plugins/jmx_ %files ruby-plugins -%defattr(-,root,root) %{_datadir}/munin/plugins/tomcat_ %files cgi -%defattr(-,root,root) %config(noreplace) %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %if 0%{?rhel} > 6 || 0%{?fedora} > 15 /lib/systemd/system/munin-fcgi-html.service @@ -860,7 +853,6 @@ exit 0 %files nginx -%defattr(-,root,root) %config(noreplace) %{_sysconfdir}/nginx/conf.d/munin.conf %if 0%{?rhel} > 6 || 0%{?fedora} > 15 /lib/systemd/system/munin-fcgi-html.service @@ -872,7 +864,6 @@ exit 0 %files netip-plugins -%defattr(-,root,root) %{_datadir}/munin/plugins/dhcpd3 %{_datadir}/munin/plugins/ntp_ From 682abd380200fad021ad331cf36ec071e13f09d2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 13 Jul 2018 11:11:59 +0000 Subject: [PATCH 030/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index ff62086..2e3d639 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.33 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Network-wide graphing framework (grapher/gatherer) Group: System Environment/Daemons @@ -869,6 +869,9 @@ exit 0 %changelog +* Fri Jul 13 2018 Fedora Release Engineering - 2.0.33-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Sat Jun 30 2018 Jitka Plesnikova - 2.0.33-7 - Perl 5.28 rebuild From 5c2cefb8d76c31bad04db2d7fd6a86d4c25542e7 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 24 Aug 2018 19:52:58 +0300 Subject: [PATCH 031/108] Major update to 2.0.40 --- .gitignore | 40 +- 00-default | 74 + 274.patch | 32 - ...-building-on-Perl-without-dot-in-INC.patch | 0 Makefile.config-dist | 25 - asyncd-ssh.config | 5 + asyncd_retry_connect.patch | 19 + asyncd_unknown_email_flood.patch | 26 + bind9-category_dns.patch | 24 + bz1049262-ntp_.patch | 29 - cpuspeed.in.rev1243 | 59 - httpd_munin-cgi.conf | 48 - httpd_munin.conf | 37 + linux-init.d_munin-asyncd.in | 172 -- mariadb-innodb.patch | 45 - mariadb-show-status.patch | 50 - munin-1.2.4-sendmail-config | 3 - munin-1.2.5-hddtemp_smartctl-config | 2 - munin-1.2.6-postfix-config | 4 - munin-1.4.5-df-config | 2 - munin-2.0.25-postgresql-config | 6 - munin-2.0.33.tar.gz.sha256sum | 1 - munin-2.0.4-Utils-cluck.patch | 12 - munin-2.0.9-amavis-config | 4 - munin-2.0.9_HTMLConfig.pm.patch | 20 - munin-asyncd.rc | 94 + munin-asyncd.service | 9 +- munin-cgi-graph.rc | 105 + munin-cgi-graph.service | 9 + munin-cgi-graph.socket | 10 + munin-cgi-html.rc | 105 + munin-cgi-html.service | 9 + munin-cgi-html.socket | 10 + munin-fcgi-graph.rc | 56 - munin-fcgi-graph.service | 11 - munin-fcgi-html.rc | 56 - munin-fcgi-html.service | 11 - munin-node | 5 + munin-node.conf | 65 + munin-node.logrotate | 6 +- munin-node.rc | 151 +- munin-node.service | 10 +- munin-node.service-privatetmp | 14 - munin-rrdcached.service | 18 + munin.conf | 151 +- munin.cron.d | 8 +- munin.logrotate | 66 +- munin.spec | 1203 ++++---- munin.tmpfilesd | 3 + mysql_ | 2541 +++++++++++++++++ nginx_munin.conf | 65 +- nginx_requests-remove-unused-port.patch | 20 + squid.patch | 12 + 53 files changed, 4055 insertions(+), 1507 deletions(-) create mode 100644 00-default delete mode 100644 274.patch rename munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch => Fix-building-on-Perl-without-dot-in-INC.patch (100%) delete mode 100644 Makefile.config-dist create mode 100644 asyncd-ssh.config create mode 100644 asyncd_retry_connect.patch create mode 100644 asyncd_unknown_email_flood.patch create mode 100644 bind9-category_dns.patch delete mode 100644 bz1049262-ntp_.patch delete mode 100644 cpuspeed.in.rev1243 delete mode 100644 httpd_munin-cgi.conf create mode 100644 httpd_munin.conf delete mode 100644 linux-init.d_munin-asyncd.in delete mode 100644 mariadb-innodb.patch delete mode 100644 mariadb-show-status.patch delete mode 100644 munin-1.2.4-sendmail-config delete mode 100644 munin-1.2.5-hddtemp_smartctl-config delete mode 100644 munin-1.2.6-postfix-config delete mode 100644 munin-1.4.5-df-config delete mode 100644 munin-2.0.25-postgresql-config delete mode 100644 munin-2.0.33.tar.gz.sha256sum delete mode 100644 munin-2.0.4-Utils-cluck.patch delete mode 100644 munin-2.0.9-amavis-config delete mode 100644 munin-2.0.9_HTMLConfig.pm.patch create mode 100755 munin-asyncd.rc create mode 100755 munin-cgi-graph.rc create mode 100644 munin-cgi-graph.service create mode 100644 munin-cgi-graph.socket create mode 100755 munin-cgi-html.rc create mode 100644 munin-cgi-html.service create mode 100644 munin-cgi-html.socket delete mode 100644 munin-fcgi-graph.rc delete mode 100644 munin-fcgi-graph.service delete mode 100644 munin-fcgi-html.rc delete mode 100644 munin-fcgi-html.service create mode 100644 munin-node create mode 100644 munin-node.conf mode change 100644 => 100755 munin-node.rc delete mode 100644 munin-node.service-privatetmp create mode 100644 munin-rrdcached.service create mode 100644 munin.tmpfilesd create mode 100755 mysql_ create mode 100644 nginx_requests-remove-unused-port.patch create mode 100644 squid.patch diff --git a/.gitignore b/.gitignore index a5c75d7..4d7500b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,39 +1 @@ -munin-1.4.5.tar.gz -/munin-node.service -/munin-1.4.5.tar.gz -/munin-1.4.5-rundir-conf.patch -/munin.conf -/munin-1.4.5-no-such-object.patch -/munin-1.4.6.tar.gz -/munin-1.4.7.tar.gz -/munin-2.0.2.tar.gz -/munin-2.0.4.tar.gz -/munin-2.0.5.tar.gz -/munin-2.0.6.tar.gz -/munin-2.0.7.tar.gz -/munin-2.0.8.tar.gz -/munin-2.0.9.tar.gz -/munin-2.0.10.tar.gz -/munin-2.0.11.tar.gz -/munin-2.0.11.1.tar.gz -/munin-2.0.12.tar.gz -/munin-2.0.13.tar.gz -/munin-2.0.14.tar.gz -/munin-2.0.15.tar.gz -/munin-2.0.16.tar.gz -/munin-2.0.17.tar.gz -/munin-2.0.18.tar.gz -/munin-2.0.19.tar.gz -/munin-2.0.20.tar.gz -/munin-2.0.21.tar.gz -/munin-2.0.22.tar.gz -/munin-2.0.23.tar.gz -/munin-2.0.24.tar.gz -/munin-2.0.25.tar.gz -/munin-2.0.26.tar.gz -/munin-2.0.27.tar.gz -/munin-2.0.28.tar.gz -/munin-2.0.29.tar.gz -/munin-2.0.30.tar.gz -/munin-2.0.32.tar.gz -/munin-2.0.33.tar.gz +munin-*.tar.gz diff --git a/00-default b/00-default new file mode 100644 index 0000000..2a8fcd0 --- /dev/null +++ b/00-default @@ -0,0 +1,74 @@ +# This file is used to configure how the plugins are invoked. +# Place in /etc/munin/plugin-conf.d/ or corresponding directory. +# +# PLEASE NOTE: Changes in the plugin-conf.d directory are only +# read at munin-node startup, so restart at any changes. +# +# user # Set the user to run the plugin as +# group # Set the group to run the plugin as +# command # Run instead of the plugin. %c +# expands to what would normally be run. +# env. # Sets in the plugin's environment, see the +# individual plugins to find out which variables they +# care about. + +[bind9_rndc] +user root +env.rndc /usr/sbin/rndc +env.querystats /var/named/data/named_stats.txt + +[cps*] +user root + +[df*] +user root +env.exclude none unknown binfmt_misc cgroup_root debugfs devpts devtmpfs fuse.gvfs-fuse-daemon iso9660 ramfs romfs rootfs rpc_pipefs squashfs udf +env.exclude_re ^/run/user/ ^/sys/ ^/var/lib/docker ^/media/ ^/var/lib/mock/ + +[exim*] +group mail + +[fw_*] +user root + +[hddtemp_smartctl] +user root + +[if_*] +user root + +[load] +env.load_warning 100 + +[munin_stats] +env.fields update limits + +[mysql*] +#env.mysqlopts -u someuser + +[mysql_replication] +env.slave_io_running_warning 0.5 +env.slave_sql_running_warning 0.5 +env.seconds_behind_master_warning 3600 +env.seconds_behind_master_critical 86400 + +[mysql_wsrep_flow_paused_ns] +env.wsrep_flow_control_paused_ns_warning 200000000 +env.wsrep_flow_control_paused_ns_critical 10000000000 + +[postfix*] +user root +env.logfile maillog +env.logdir /var/log + +[postgres_*] +user postgres +env.PGUSER postgres +env.PGPORT 5432 + +[sendmail*] +user root +env.mspqueue /var/spool/clientmqueue + +[vlan*] +user root diff --git a/274.patch b/274.patch deleted file mode 100644 index 6638a9e..0000000 --- a/274.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 4a39b56c7aefdd9794add4468c7dbe87ff683ce8 Mon Sep 17 00:00:00 2001 -From: Daniel Black -Date: Sun, 26 Oct 2014 17:36:29 +1100 -Subject: [PATCH] Run munin-asyncd fetching on wall clock type - -Patch by Picnic Pete: https://github.com/picnicpete ---- - node/_bin/munin-asyncd.in | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/node/_bin/munin-asyncd.in b/node/_bin/munin-asyncd.in -index 8efe50f..4811b2d 100644 ---- a/node/_bin/munin-asyncd.in -+++ b/node/_bin/munin-asyncd.in -@@ -160,9 +160,14 @@ MAIN: while($keepgoing) { - next; - } - -- # Should update it -- $last_updated{$plugin} = $when; -- $when_next = min($when_next, $when + max($plugin_rate, $minrate)); -+ # Should update it - based on wall clock time -+ my $should_have_been = $when - ($when % $plugin_rate); -+ my $should_be_next = $should_have_been + $plugin_rate; -+ -+ $last_updated{$plugin} = $should_have_been; -+ if ($should_be_next < $when_next) { -+ $when_next = $should_be_next; -+ } - - if ($do_fork && fork()) { - # parent, return directly diff --git a/munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch b/Fix-building-on-Perl-without-dot-in-INC.patch similarity index 100% rename from munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch rename to Fix-building-on-Perl-without-dot-in-INC.patch diff --git a/Makefile.config-dist b/Makefile.config-dist deleted file mode 100644 index baa0663..0000000 --- a/Makefile.config-dist +++ /dev/null @@ -1,25 +0,0 @@ -include Makefile.config - -CGIDIR = $(DESTDIR)/var/www/cgi-bin -CGITMPDIR = /var/tmp -CHGRP := echo Not done: chgrp -CHMOD := echo Not done: chmod -CHOWN := echo Not done: chown -CONFDIR = $(DESTDIR)/etc/munin -DBDIR = $(DESTDIR)/var/lib/munin -DBDIRNODE = $(DESTDIR)/var/lib/munin-node -DOCDIR = $(DESTDIR)/usr/share/doc/munin-$(VERSION) -GROUP := nobody -HOSTNAME = localhost.localdomain -HTMLDIR = $(DESTDIR)/var/www/html/munin -JAVALIBDIR = $(DESTDIR)/usr/share/java -LIBDIR = $(DESTDIR)/usr/share/munin -LOGDIR = $(DESTDIR)/var/log/munin -PERLSITELIB := $(DESTDIR)/usr/share/perl5/vendor_perl -PERL := /usr/bin/perl -PLUGSTATE = $(DBDIR)/plugin-state -PREFIX = $(DESTDIR)/usr -PYTHON := /usr/bin/python -RUBY := /usr/bin/ruby -USER := nobody - diff --git a/asyncd-ssh.config b/asyncd-ssh.config new file mode 100644 index 0000000..b710158 --- /dev/null +++ b/asyncd-ssh.config @@ -0,0 +1,5 @@ +Host * + Compression yes + ConnectTimeout 15 + ServerAliveInterval 15 + ServerAliveCountMax 5 diff --git a/asyncd_retry_connect.patch b/asyncd_retry_connect.patch new file mode 100644 index 0000000..68cc4ca --- /dev/null +++ b/asyncd_retry_connect.patch @@ -0,0 +1,19 @@ +diff -ur munin-2.0.25.orig/node/_bin/munin-asyncd.in munin-2.0.25/node/_bin/munin-asyncd.in +--- munin-2.0.25.orig/node/_bin/munin-asyncd.in 2016-06-28 12:11:38.423775572 +0300 ++++ munin-2.0.25/node/_bin/munin-asyncd.in 2016-06-28 12:15:23.841540075 +0300 +@@ -76,7 +76,14 @@ + my $sock = new IO::Socket::INET( + PeerAddr => "$host", + Proto => 'tcp' +-) || die "Error creating socket: $!"; ++); ++if (!$sock) { ++ sleep 20; ++ $sock = new IO::Socket::INET( ++ PeerAddr => "$host", ++ Proto => 'tcp' ++ ) || die "Error creating socket: $!"; ++} + my $nodeheader = <$sock>; + print $sock "quit\n"; + close ($sock); diff --git a/asyncd_unknown_email_flood.patch b/asyncd_unknown_email_flood.patch new file mode 100644 index 0000000..b12d4e4 --- /dev/null +++ b/asyncd_unknown_email_flood.patch @@ -0,0 +1,26 @@ +diff -ur munin-2.0.18.orig/node/_bin/munin-asyncd.in munin-2.0.18/node/_bin/munin-asyncd.in +--- munin-2.0.18.orig/node/_bin/munin-asyncd.in 2013-11-12 22:13:23.000000000 +0200 ++++ munin-2.0.18/node/_bin/munin-asyncd.in 2013-12-03 15:52:45.215544280 +0200 +@@ -143,7 +143,11 @@ + MAIN: while($keepgoing) { + my $when = time; + +- my $when_next = $when + $timeout; # wake up at least every $timeout sec ++ my $when_next = int($when / $minrate) * $minrate + 180; ++ if ($when_next <= $when) { ++ $when_next = $when_next + $minrate; ++ } ++ + my $sock; + PLUGIN: foreach my $plugin (@plugins) { + # See if this plugin should be updated +@@ -154,8 +158,7 @@ + } + + # Should update it +- $last_updated{$plugin} = $when; +- $when_next = min($when_next, $when + max($plugin_rate, $minrate)); ++ $last_updated{$plugin} = $when - 180; + + if ($do_fork && fork()) { + # parent, return directly diff --git a/bind9-category_dns.patch b/bind9-category_dns.patch new file mode 100644 index 0000000..330380e --- /dev/null +++ b/bind9-category_dns.patch @@ -0,0 +1,24 @@ +diff -up munin-2.0.21/plugins/node.d/bind9.in.category_dns munin-2.0.21/plugins/node.d/bind9.in +--- munin-2.0.21/plugins/node.d/bind9.in.category_dns 2014-04-22 22:29:32.000000000 +0300 ++++ munin-2.0.21/plugins/node.d/bind9.in 2014-08-08 09:25:27.446004831 +0300 +@@ -106,7 +106,7 @@ sub do_config { + my $k; + + print "graph_title DNS Queries by type +-graph_category BIND ++graph_category dns + graph_vlabel Queries / \${graph_period} + query_other.label Other + query_other.type DERIVE +diff -up munin-2.0.21/plugins/node.d/bind9_rndc.in.category_dns munin-2.0.21/plugins/node.d/bind9_rndc.in +--- munin-2.0.21/plugins/node.d/bind9_rndc.in.category_dns 2014-04-22 22:29:32.000000000 +0300 ++++ munin-2.0.21/plugins/node.d/bind9_rndc.in 2014-08-08 09:25:45.791004399 +0300 +@@ -197,7 +197,7 @@ close($stats); + if (defined($ARGV[0]) and ($ARGV[0] eq 'config')) { + print "graph_title DNS Queries by status\n"; + print "graph_vlabel queries / \${graph_period}\n"; +- print "graph_category BIND\n"; ++ print "graph_category dns\n"; + + for my $key (keys %IN) { + print "query_$key.label $key\n"; diff --git a/bz1049262-ntp_.patch b/bz1049262-ntp_.patch deleted file mode 100644 index d26322f..0000000 --- a/bz1049262-ntp_.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- ./plugins/node.d/ntp_.in.orig 2014-03-26 18:45:21.374305323 -0500 -+++ ./plugins/node.d/ntp_.in 2015-03-06 22:31:31.154285245 -0600 -@@ -77,7 +77,7 @@ - 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"`); -- $peerinfo =~ s/\R/ /g; -+ $peerinfo =~ s/\n/ /g; - my ($peer_addr) = ($peerinfo =~ m/srcadr=(.*)/); - print $peer_addr, "\n" unless $peer_addr eq "0.0.0.0"; - } -@@ -114,7 +114,7 @@ - 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,delay,offset,jitter"`); -- $peerinfo =~ s/\R/ /g; -+ $peerinfo =~ s/\n/ /g; - ($srcadr) = ($peerinfo =~ m/srcadr=([^, ]+)/); - ($delay) = ($peerinfo =~ m/delay=([^, ]+)/); - ($offset) = ($peerinfo =~ m/offset=([^, ]+)/); -@@ -152,7 +152,7 @@ - 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,delay,offset,jitter"`); -- $peerinfo =~ s/\R/ /g; -+ $peerinfo =~ s/\n/ /g; - ($srcadr) = ($peerinfo =~ m/srcadr=([^, ]+)/); - ($delay) = ($peerinfo =~ m/delay=([^, ]+)/); - ($offset) = ($peerinfo =~ m/offset=([^, ]+)/); diff --git a/cpuspeed.in.rev1243 b/cpuspeed.in.rev1243 deleted file mode 100644 index c5b4b3b..0000000 --- a/cpuspeed.in.rev1243 +++ /dev/null @@ -1,59 +0,0 @@ -#!@@GOODSH@@ -# -# Plugin to monitor CPU speed -# -# Usage: Place in /etc/munin/node.d/ (or link it there using ln -s) -# -# Parameters understood: -# -# config (required) -# autoconf (optional - used by munin-config) -# -# Magic markers - optional - used by installation scripts and -# munin-config: -# -#%# family=auto -#%# capabilities=autoconf - -if [ "$1" = "autoconf" ]; then - if [ -r /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq ]; then - echo yes - exit 0 - else - echo no - exit 1 - fi -fi - - -if [ "$1" = "config" ]; then - cat < - #ServerName munin.example.org - #ServerAlias munin - #ServerAdmin info@example.org - - DocumentRoot /var/www/html/munin - - ErrorLog /var/log/httpd/munin.example.org-error.log - CustomLog /var/log/httpd/munin.example.org-access.log combined - - # Rewrites - RewriteEngine On - - # Static content in /static - RewriteRule ^/favicon.ico /var/www/html/munin/static/favicon.ico [L] - RewriteRule ^/static/(.*) /var/www/html/munin/static/$1 [L] - - # workaround for some static content - RewriteRule /favicon.ico /var/www/html/munin/static/favicon.ico [L] - RewriteRule /static/(.*) /var/www/html/munin/static/$1 [L] - - # HTML - RewriteCond %{REQUEST_URI} .html$ [or] - RewriteCond %{REQUEST_URI} =/ - RewriteRule ^/(.*) /var/www/cgi-bin/munin-cgi-html/$1 [L] - - # Images - # - remove path to munin-cgi-graph, if present - RewriteRule ^/munin-cgi/munin-cgi-graph/(.*) /$1 - - RewriteCond %{REQUEST_URI} .png$ - RewriteRule ^/(.*) /var/www/cgi-bin/munin-cgi-graph/$1 [L] - - #ScriptAlias /munin-cgi/munin-cgi-graph /var/www/cgi-bin/munin-cgi-graph - - # Ensure we can run (fast)cgi scripts - - Options +ExecCGI - - SetHandler fcgid-script - - - SetHandler cgi-script - - - - diff --git a/httpd_munin.conf b/httpd_munin.conf new file mode 100644 index 0000000..5178d28 --- /dev/null +++ b/httpd_munin.conf @@ -0,0 +1,37 @@ +# Example configuration! Change this to suit your needs. +# Access Munin at http://localhost/munin/ +# +# To use cgi generated files copy this file to /etc/httpd/conf.d/ and add +# following three lines to /etc/munin/conf.d/local.conf (uncommented): +# +# graph_strategy cgi +# html_strategy cgi +# cgiurl_graph /munin/graph + + + + ServerName localhost + ServerAdmin root@localhost + ErrorLog /var/log/httpd/munin.localhost-error.log + CustomLog /var/log/httpd/munin.localhost-access.log combined + DocumentRoot /var/www/html + + # Rewrites for graph/html generated by cgi + RewriteEngine On + RewriteRule ^/munin/static/(.*) /var/www/html/munin/static/$1 [L] + RewriteRule ^/munin/graph/(.*) /munin-cgi/munin-cgi-graph/$1 [L,PT] + RewriteRule ^/munin/(.*) /munin-cgi/munin-cgi-html/$1 [L,PT] + RewriteRule ^/munin$ /munin/ [R] + ScriptAlias /munin-cgi/ /var/www/html/munin/cgi/ + + # FastCGI + + Options +ExecCGI + + SetHandler fcgid-script + + + SetHandler cgi-script + + + diff --git a/linux-init.d_munin-asyncd.in b/linux-init.d_munin-asyncd.in deleted file mode 100644 index 239cea7..0000000 --- a/linux-init.d_munin-asyncd.in +++ /dev/null @@ -1,172 +0,0 @@ -#!/bin/bash -# -### BEGIN INIT INFO -# chkconfig: 2345 91 10 -# processname: munin-node -# config: /etc/munin/munin-node.conf -# pidfile: /var/run/munin-asyncd.pid -# Provides: munin-asyncd -# Required-Start: $local_fs $remote_fs $network munin-node -# 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 - -ASYNC_BIN=munin-asyncd -PATH=/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/sbin/${ASYNC_BIN} -PIDFILE=/var/run/munin/${ASYNC_BIN}.pid - -is_running () { - if [ ! -e "$PIDFILE" ]; then - return 3 # No PID file exists, ${ASYNC_BIN} must not be running - else - kill -0 $(cat $PIDFILE) 2> /dev/null - if [ "$?" -eq "0" ]; then - return 0 # PID file exists, and PID found in file is in use - else - rm $PIDFILE 2> /dev/null - if [ "$?" -eq "0" ]; then - return 1 # PID file exists, but no process with the PID was found. Deletion of the PID file was a success - else - return 2 # PID file exists, but no process with the PID was found. Deletion of the PID file failed - fi - fi - fi -} - -check_root () { - operation=$1 - if [ "$(id -u)" -ne "0" ]; then - echo "Root permissions are required in order to perform the \"$operation\" operation." - exit 4 - fi -} - -sanity_check () { - if [ ! "$(type -p pidof)" ]; then - echo "The program \"pidof\" is required in order for this script to work properly, and will not run without it." - exit 1 - fi - - if [ ! -d "$(dirname $PIDFILE)" ]; then - mkdir -p $(dirname $PIDFILE) 2> /dev/null - if [ "$?" -ne "0" ]; then - echo "The directory for a PID file is missing ($(dirname $PIDFILE)), and could not be created automatically. Please correct this and try again." - exit 1 - fi - fi - - if [ ! -x "$DAEMON" ]; then - echo "${ASYNC_BIN} was expected at $DAEMON, but was not found. Are you sure Munin is correctly installed?" - exit 5 - fi -} - -case $1 in - start) - check_root $1 - sanity_check - - echo -n "Starting ${ASYNC_BIN} ... " - - is_running - if [ "$?" -eq "0" ]; then - echo "Already running (PID: $(cat $PIDFILE))." - exit 0 - fi - - $DAEMON > /dev/null 2> /dev/null < /dev/null & - - sleep 0.5 # Give ${ASYNC_BIN} time to fail, if it fails - - pid=$(pidof -o %PPID -x $DAEMON) - if [ "$?" -eq "0" ]; then - echo $pid > $PIDFILE - echo "Done." - exit 0 - else - echo "Start failed for some reason, restarting ${ASYNC_BIN} so you can see why:" - $DAEMON - echo - echo "A \"Connection refused\" message typically is because munin-node is not started prior to ${ASYNC_BIN}." - fi - ;; - stop) - check_root $1 - sanity_check - - echo -n "Stopping ${ASYNC_BIN} ... " - - # If a PID file is not found, we perform an extra check if ${ASYNC_BIN} still should be running, and if it does, then create a PID file - if [ ! -e "$PIDFILE" ]; then - pid=$(pidof -o %PPID -x $DAEMON) - if [ "$?" -eq "0" ]; then - echo $pid > $PIDFILE - fi - fi - - is_running - if [ "$?" -ne "0" ]; then - echo "Not running." - exit 0 - fi - - PID=$(cat $PIDFILE) - kill -15 $PID 2> /dev/null - HALFSECONDS="0" - while true; do - kill -0 $PID 2> /dev/null - if [ "$?" -eq "1" ]; then - break - fi - sleep 0.5 - HALFSECONDS=$(expr $HALFSECONDS + 1) - if [ "$HALFSECONDS" -ge "10" ]; then - kill -9 $PID 2> /dev/null - echo "Not stopping gracefully, killed!" - exit 0 - fi - done - echo "Done." - exit 0 - ;; - restart|try-restart|force-reload) - check_root $1 - sanity_check - - $0 stop - $0 start - - exit 0 - ;; - reload) - echo "The \"reload\" operation is not supported by ${ASYNC_BIN}. You probably want to run \"restart\" instead." - exit 3 - ;; - status) - is_running - return="$?" - if [ "$return" -eq "0" ]; then - echo "${ASYNC_BIN} is running (PID: $(cat $PIDFILE))." - exit 0 - elif [ "$return" -eq "1" ]; then - echo "${ASYNC_BIN} is not running, but PID file still existed (has been removed now)." - exit 1 - elif [ "$return" -eq "2" ]; then - echo "${ASYNC_BIN} is not running, but PID file still exists (could not be removed)." - exit 1 - elif [ "$return" -eq "3" ]; then - echo "${ASYNC_BIN} is not running." - exit 3 - fi - exit 4 - ;; - *) - echo "Usage: $0 {start|stop|restart|try-restart|force-reload|reload|status}" - exit 2 - ;; -esac diff --git a/mariadb-innodb.patch b/mariadb-innodb.patch deleted file mode 100644 index d2a2f65..0000000 --- a/mariadb-innodb.patch +++ /dev/null @@ -1,45 +0,0 @@ -commit 997d82d30040dc9749db46823a933555e586e645 -Author: Daniel Black -Date: Thu Jan 30 11:34:54 2014 +1100 - - Break mysql innodb data on full sections - - Patch from Jan Mara - https://github.com/jmara/ubuntu-munin-mysql/commit/77ae2b2d8bc1233e0f0b0e6346d66b955441ba14 - -diff --git a/plugins/node.d/mysql_.in b/plugins/node.d/mysql_.in -index 3376036..fb70e24 100644 ---- a/plugins/node.d/mysql_.in -+++ b/plugins/node.d/mysql_.in -@@ -1070,7 +1070,7 @@ sub parse_innodb_status { - - # Add a dummy section to the end in case the innodb status output - # has been truncated (Happens for status > 64K characters) -- $_ .= "\n----------\nDUMMY\n"; -+ $_ .= "\n----------\nDUMMY\n----------\n"; - - my %section_map = ( - -@@ -1114,7 +1114,12 @@ sub parse_innodb_status { - my $innodb_bigint_rx = qr{([[a-fA-F\d]+)(?: (\d+))?}; - - --sub match_dashes { return m/\G-+\n(?!-)/gc; } -+sub match_new_section { -+ return m/\G -+ -+\n # --------------------------- -+ (?= [A-Z\/ ]+\n # SECTION NAME -+ [=-]+\n)/gcx; # --------------------------- ('=' on end of output) -+} - - - sub skip_line { return m/\G.*\n/gc; } -@@ -1133,7 +1138,7 @@ sub parse_section { - - #warn substr($_, pos(), 10); - for (;;) { -- return if match_dashes(); -+ return if match_new_section; - next if $parser->(); - skip_line(); - } diff --git a/mariadb-show-status.patch b/mariadb-show-status.patch deleted file mode 100644 index c5218bd..0000000 --- a/mariadb-show-status.patch +++ /dev/null @@ -1,50 +0,0 @@ -commit e5f12ef57c75d37aa2e3444cc448598f3c32b0ea -Author: Daniel Black -Date: Tue Jun 17 11:45:13 2014 +1000 - - Mariadb-10 show innodb status compatiblity - - show innodb status on mariadb-10 if in a transaction will show - - -------------- - ROW OPERATIONS - -------------- - 0 queries inside InnoDB, 0 queries in queue - 1 read views open inside InnoDB - 1 RW transactions active inside InnoDB - 0 RO transactions active inside InnoDB - 1 out of 1000 descriptors used - ---OLDEST VIEW--- - Normal read view - Read view low limit trx n:o 726056894 - Read view up limit trx id 726056894 - Read view low limit trx id 726056894 - Read view individually stored trx ids: - ----------------- - Main thread process no. 13048, id 140163878000384, state: sleeping - Number of rows inserted 0, updated 0, deleted 0, read 1666121005 - 0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 17566.53 reads/s - ------------ - - In this patch we just skip sections like "Main thread process.." that we - don't know about. - -diff --git a/plugins/node.d/mysql_.in b/plugins/node.d/mysql_.in -index 9b6914b..1d83115 100644 ---- a/plugins/node.d/mysql_.in -+++ b/plugins/node.d/mysql_.in -@@ -1102,8 +1102,12 @@ sub parse_innodb_status { - last; - } - -- die "Unknown section: $1" unless exists $section_map{$sec}; -- die "Parse error. Expected a section separator" unless m/\G-+\n/gc; -+ if (exists $section_map{$sec}) { -+ $section_map{$sec}->(); -+ } else { -+ #warn "Unknown section: $1"; -+ skip(); -+ } - - $section_map{$sec}->(); - } diff --git a/munin-1.2.4-sendmail-config b/munin-1.2.4-sendmail-config deleted file mode 100644 index e062fbb..0000000 --- a/munin-1.2.4-sendmail-config +++ /dev/null @@ -1,3 +0,0 @@ -[sendmail*] -user root -env.mspqueue /var/spool/clientmqueue diff --git a/munin-1.2.5-hddtemp_smartctl-config b/munin-1.2.5-hddtemp_smartctl-config deleted file mode 100644 index dcdb2b6..0000000 --- a/munin-1.2.5-hddtemp_smartctl-config +++ /dev/null @@ -1,2 +0,0 @@ -[hddtemp_smartctl] -user root diff --git a/munin-1.2.6-postfix-config b/munin-1.2.6-postfix-config deleted file mode 100644 index 8a63875..0000000 --- a/munin-1.2.6-postfix-config +++ /dev/null @@ -1,4 +0,0 @@ -[postfix*] -user root -env.logfile maillog -env.logdir /var/log diff --git a/munin-1.4.5-df-config b/munin-1.4.5-df-config deleted file mode 100644 index b4f0ef5..0000000 --- a/munin-1.4.5-df-config +++ /dev/null @@ -1,2 +0,0 @@ -[df*] -env.exclude none unknown binfmt_misc debugfs devtmpfs fuse.gvfs-fuse-daemon iso9660 ramfs romfs rpc_pipefs squashfs tmpfs udf diff --git a/munin-2.0.25-postgresql-config b/munin-2.0.25-postgresql-config deleted file mode 100644 index ce59c44..0000000 --- a/munin-2.0.25-postgresql-config +++ /dev/null @@ -1,6 +0,0 @@ -[postgres_*] - -# for more detail run "man Munin::Plugin::Pgsql" -user postgres -env.PGUSER postgres -env.PGPORT 5432 diff --git a/munin-2.0.33.tar.gz.sha256sum b/munin-2.0.33.tar.gz.sha256sum deleted file mode 100644 index eed39ff..0000000 --- a/munin-2.0.33.tar.gz.sha256sum +++ /dev/null @@ -1 +0,0 @@ -1c6f994bf62d6dee89554efba0733b6f96d4130ba906162c32f77587088974c4 munin-2.0.33.tar.gz diff --git a/munin-2.0.4-Utils-cluck.patch b/munin-2.0.4-Utils-cluck.patch deleted file mode 100644 index 5ba660a..0000000 --- a/munin-2.0.4-Utils-cluck.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- master/lib/Munin/Master/Utils.pm.orig 2012-07-30 09:25:33.000000000 -0500 -+++ master/lib/Munin/Master/Utils.pm 2012-08-05 14:07:57.236121331 -0500 -@@ -904,6 +904,9 @@ - - my $storable_filename_tmp = $storable_filename . ".tmp.$$"; - -+ use Carp qw(cluck); -+ cluck "data is null at " unless $data; -+ - # Write datafile.storable, in network order to be architecture indep - Storable::nstore($data, $storable_filename_tmp); - diff --git a/munin-2.0.9-amavis-config b/munin-2.0.9-amavis-config deleted file mode 100644 index 0a7f0ba..0000000 --- a/munin-2.0.9-amavis-config +++ /dev/null @@ -1,4 +0,0 @@ -[amavis] -group adm -env.MUNIN_MKTEMP /bin/mktemp -p /tmp/ $1 -env.amavislog /var/log/mail.info diff --git a/munin-2.0.9_HTMLConfig.pm.patch b/munin-2.0.9_HTMLConfig.pm.patch deleted file mode 100644 index 3abae3a..0000000 --- a/munin-2.0.9_HTMLConfig.pm.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -ru munin-2.0.9.orig/master/lib/Munin/Master/HTMLConfig.pm munin-2.0.9/master/lib/Munin/Master/HTMLConfig.pm ---- munin-2.0.9.orig/master/lib/Munin/Master/HTMLConfig.pm 2012-12-05 13:19:35.000000000 -0600 -+++ munin-2.0.9/master/lib/Munin/Master/HTMLConfig.pm 2012-12-20 21:37:22.364028610 -0600 -@@ -499,11 +499,11 @@ - my $start_year = $epoch_now - (3600 * 24 * 400); - my $size_x = 800; - my $size_y = 400; -- my $common_url = "$root_path/static/dynazoom.html?cgiurl_graph=$config->{'cgiurl_graph'}&plugin_name=$path&size_x=$size_x&size_y=$size_y"; -- $srv{zoomday} = "$common_url&start_epoch=$start_day&stop_epoch=$epoch_now"; -- $srv{zoomweek} = "$common_url&start_epoch=$start_week&stop_epoch=$epoch_now"; -- $srv{zoommonth} = "$common_url&start_epoch=$start_month&stop_epoch=$epoch_now"; -- $srv{zoomyear} = "$common_url&start_epoch=$start_year&stop_epoch=$epoch_now"; -+ my $common_url = "$root_path/static/dynazoom.html?cgiurl_graph=$config->{'cgiurl_graph'}&plugin_name=$path&size_x=$size_x&size_y=$size_y"; -+ $srv{zoomday} = "$common_url&start_epoch=$start_day&stop_epoch=$epoch_now"; -+ $srv{zoomweek} = "$common_url&start_epoch=$start_week&stop_epoch=$epoch_now"; -+ $srv{zoommonth} = "$common_url&start_epoch=$start_month&stop_epoch=$epoch_now"; -+ $srv{zoomyear} = "$common_url&start_epoch=$start_year&stop_epoch=$epoch_now"; - } - - for my $scale (@times) { diff --git a/munin-asyncd.rc b/munin-asyncd.rc new file mode 100755 index 0000000..a9da4f3 --- /dev/null +++ b/munin-asyncd.rc @@ -0,0 +1,94 @@ +#!/bin/sh +# +# /etc/init.d/munin-asyncd +# +# chkconfig: - 91 9 +# description: Network-wide resource monitoring tool (async proxy) +# processname: munin-asyncd +# +### BEGIN INIT INFO +# Provides: munin-asyncd +# Required-Start: $network $syslog +# Required-Stop: +# Default-Stop: 0 1 2 6 +# Short-Description: Network-wide resource monitoring tool (async proxy) +# Description: Munin is a highly flexible and powerful solution used to create +# graphs of virtually everything imaginable throughout your network, +# while still maintaining a rattling ease of installation and +# configuration. +### END INIT INFO + +# Source function library. +. /etc/init.d/functions + +# Source networking configuration. +. /etc/sysconfig/network + +# Check that networking is up. +[ ${NETWORKING} = "no" ] && exit 0 + +# Read config +ASYNCD=yes +[ -f /etc/sysconfig/munin-node ] && . /etc/sysconfig/munin-node + +progasync=munin-asyncd +binasync=/usr/sbin/$progasync +RETVAL=0 + +start() { + echo -n $"Starting $progasync: " + mkdir -p /var/run/munin 2>/dev/null + chown munin:munin /var/run/munin + restorecon /var/run/munin 2>/dev/null + ${binasync} < /dev/null > /dev/null 2>&1 & + sleep 1 + pkill -0 $progasync + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + echo_success + touch /var/lock/subsys/$progasync + else + echo_failure + fi + echo + return $RETVAL +} + +stop() { + echo -n $"Stopping $progasync: " + killproc ${binasync} + RETVAL=$? + echo + [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$progasync + return $RETVAL +} + +restart() { + stop + start +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + condrestart) + [ -f /var/lock/subsys/$progasync ] && restart + ;; + status) + status ${binasync} + RETVAL=$? + ;; + *) + echo "Usage: $0 {start|stop|restart|condrestart|status}" + RETVAL=2 +esac + +exit $RETVAL diff --git a/munin-asyncd.service b/munin-asyncd.service index 6a73b77..7dc783a 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -1,14 +1,15 @@ [Unit] -Description=Munin Async Server. -Documentation=man:munin-node +Description=Munin Node - Asynchronous Proxy +Documentation=man:munin-async http://munin.readthedocs.org/en/stable-2.0/reference/munin-async.html Requires=munin-node.service -After=network-online.target munin-node.service -Wants=network-online.target +After=network.target network-online.target munin-node.service [Service] Type=simple +User=munin ExecStart=/usr/sbin/munin-asyncd PrivateTmp=true +TimeoutStopSec=20s [Install] WantedBy=multi-user.target diff --git a/munin-cgi-graph.rc b/munin-cgi-graph.rc new file mode 100755 index 0000000..b56c7ac --- /dev/null +++ b/munin-cgi-graph.rc @@ -0,0 +1,105 @@ +#!/bin/sh +# +# munin-cgi-graph Start and stop Munin FastCGI processes for NGINX +# +# chkconfig: - 80 20 +# description: Spawn Munin FastCGI scripts to be used by NGINX web server + +### BEGIN INIT INFO +# Provides: +# Required-Start: $network $syslog +# Required-Stop: +# Should-Start: +# Should-Stop: +# Default-Start: +# Default-Stop: 0 1 2 6 +# Short-Description: Start and stop Munin FastCGI processes +# Description: Spawn Munin FastCGI scripts to be used by NGINX web server +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec=/usr/bin/spawn-fcgi +lockfile=/var/lock/subsys/munin-cgi-graph + +graphprog=/var/www/html/munin/cgi/munin-cgi-graph +graphsock=/var/run/munin/munin-cgi-graph.sock +graphpid=/var/run/munin/munin-cgi-graph.pid + +GRAPHOPTIONS="-u munin -U nginx -S -M 0600 -F 2" +[ -f /etc/sysconfig/munin-cgi-graph ] && . /etc/sysconfig/munin-cgi-graph + +munin_cleanup() { + # Remove the socket if it exists + [ -n "${graphsock}" -a -S "${graphsock}" ] && rm -f ${graphsock} +} + +start() { + munin_cleanup + echo -n $"Starting munin-cgi-graph: " + daemon "${exec} -s ${graphsock} -P ${graphpid} ${GRAPHOPTIONS} -- ${graphprog} >/dev/null" + RETVAL=$? + echo + if [ $RETVAL -eq 0 ]; then + touch $lockfile + fi + return $RETVAL +} + +stop() { + echo -n $"Stopping munin-cgi-graph: " + killproc $graphprog + RETVAL=$? + echo + munin_cleanup + [ $RETVAL -eq 0 ] && rm -f $lockfile + return $RETVAL +} + +restart() { + stop + start +} + +reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $graphprog +} + +rh_status_q() { + rh_status &>/dev/null +} + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload}" + exit 2 +esac +exit $? diff --git a/munin-cgi-graph.service b/munin-cgi-graph.service new file mode 100644 index 0000000..b089451 --- /dev/null +++ b/munin-cgi-graph.service @@ -0,0 +1,9 @@ +[Unit] +Description=Munin FastCGI Graphs Service +After=network.target +Requires=munin-cgi-graph.socket + +[Service] +User=munin +ExecStart=/var/www/html/munin/cgi/munin-cgi-graph +StandardInput=socket diff --git a/munin-cgi-graph.socket b/munin-cgi-graph.socket new file mode 100644 index 0000000..3e4dd3d --- /dev/null +++ b/munin-cgi-graph.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Munin FastCGI Graphs Socket + +[Socket] +ListenStream=/run/munin/munin-cgi-graph.sock +SocketMode=0600 +SocketUser=nginx + +[Install] +WantedBy=sockets.target diff --git a/munin-cgi-html.rc b/munin-cgi-html.rc new file mode 100755 index 0000000..f27430e --- /dev/null +++ b/munin-cgi-html.rc @@ -0,0 +1,105 @@ +#!/bin/sh +# +# munin-cgi-html Start and stop Munin FastCGI processes for NGINX +# +# chkconfig: - 80 20 +# description: Spawn Munin FastCGI scripts to be used by NGINX web server + +### BEGIN INIT INFO +# Provides: +# Required-Start: $network $syslog +# Required-Stop: +# Should-Start: +# Should-Stop: +# Default-Start: +# Default-Stop: 0 1 2 6 +# Short-Description: Start and stop Munin FastCGI processes +# Description: Spawn Munin FastCGI scripts to be used by NGINX web server +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec=/usr/bin/spawn-fcgi +lockfile=/var/lock/subsys/munin-cgi-html + +htmlprog=/var/www/html/munin/cgi/munin-cgi-html +htmlsock=/var/run/munin/munin-cgi-html.sock +htmlpid=/var/run/munin/munin-cgi-html.pid + +HTMLOPTIONS="-u munin -U nginx -S -M 0600 -F 1" +[ -f /etc/sysconfig/munin-cgi-html ] && . /etc/sysconfig/munin-cgi-html + +munin_cleanup() { + # Remove the socket if it exists + [ -n "${htmlsock}" -a -S "${htmlsock}" ] && rm -f ${htmlsock} +} + +start() { + munin_cleanup + echo -n $"Starting munin-cgi-html: " + daemon "${exec} -s ${htmlsock} -P ${htmlpid} ${HTMLOPTIONS} -- ${htmlprog} >/dev/null" + RETVAL=$? + echo + if [ $RETVAL -eq 0 ]; then + touch $lockfile + fi + return $RETVAL +} + +stop() { + echo -n $"Stopping munin-cgi-html: " + killproc $htmlprog + RETVAL=$? + echo + munin_cleanup + [ $RETVAL -eq 0 ] && rm -f $lockfile + return $RETVAL +} + +restart() { + stop + start +} + +reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $htmlprog +} + +rh_status_q() { + rh_status &>/dev/null +} + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload}" + exit 2 +esac +exit $? diff --git a/munin-cgi-html.service b/munin-cgi-html.service new file mode 100644 index 0000000..95be1d8 --- /dev/null +++ b/munin-cgi-html.service @@ -0,0 +1,9 @@ +[Unit] +Description=Munin FastCGI HTML Pages Service +After=network.target +Requires=munin-cgi-html.socket + +[Service] +User=munin +ExecStart=/var/www/html/munin/cgi/munin-cgi-html +StandardInput=socket diff --git a/munin-cgi-html.socket b/munin-cgi-html.socket new file mode 100644 index 0000000..c85a046 --- /dev/null +++ b/munin-cgi-html.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Munin FastCGI HTML Pages Socket + +[Socket] +ListenStream=/run/munin/munin-cgi-html.sock +SocketMode=0600 +SocketUser=nginx + +[Install] +WantedBy=sockets.target diff --git a/munin-fcgi-graph.rc b/munin-fcgi-graph.rc deleted file mode 100644 index 195281c..0000000 --- a/munin-fcgi-graph.rc +++ /dev/null @@ -1,56 +0,0 @@ -#! /bin/sh -# -# munin-fcgi-graph -# -# chkconfig: 2345 90 10 -# description: munin fcgi graph service process -# pidfile: /var/run/munin/fcgi-graph.pid - -# Source function library. -. /etc/rc.d/init.d/functions - -RETVAL=0 - -mkdir -p /var/run/munin 2>/dev/null -chown munin /var/run/munin -restorecon /var/run/munin 2>/dev/null - -# See how we were called. -case "$1" in - start) - echo -n "Starting Munin fcgi-graph: " - /usr/bin/spawn-fcgi -s /var/run/munin/fcgi-graph.sock -u munin -g munin /var/www/cgi-bin/munin-cgi-graph -P /var/run/munin/fcgi-graph.pid - RETVAL=$? - if [ $RETVAL -eq 0 ] - then - echo_success - touch /var/lock/subsys/munin-fcgi-graph - else - echo_failure - fi - echo - ;; - stop) - echo -n "Stopping Munin fcgi-graph: " - kill $(cat /var/run/munin/fcgi-graph.pid) - RETVAL=$? - if [ $RETVAL -eq 0 ] - then - echo_success - rm -f /var/lock/subsys/munin-fcgi-graph - else - echo_failure - fi - echo - ;; - restart|reload) - $0 stop - $0 start - RETVAL=$? - ;; - *) - echo "Usage: munin-fcgi-graph {start|stop|restart}" - exit 1 -esac - -exit $RETVAL diff --git a/munin-fcgi-graph.service b/munin-fcgi-graph.service deleted file mode 100644 index 800d13a..0000000 --- a/munin-fcgi-graph.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Munin FastCGI Graph -Documentation=man:spawn-fcgi - -[Service] -Type=forking -PIDFile=/run/munin/fcgi-graph.pid -ExecStart=/usr/bin/spawn-fcgi -s /run/munin/fcgi-graph.sock -u munin -g munin /var/www/cgi-bin/munin-cgi-graph -P /run/munin/fcgi-graph.pid - -[Install] -WantedBy=multi-user.target diff --git a/munin-fcgi-html.rc b/munin-fcgi-html.rc deleted file mode 100644 index 879ea4f..0000000 --- a/munin-fcgi-html.rc +++ /dev/null @@ -1,56 +0,0 @@ -#! /bin/sh -# -# munin-fcgi-html -# -# chkconfig: 2345 90 10 -# description: munin fcgi html service process -# pidfile: /var/run/munin/fcgi-html.pid - -# Source function library. -. /etc/rc.d/init.d/functions - -RETVAL=0 - -mkdir -p /var/run/munin 2>/dev/null -chown munin /var/run/munin -restorecon /var/run/munin 2>/dev/null - -# See how we were called. -case "$1" in - start) - echo -n "Starting Munin fcgi-html: " - /usr/bin/spawn-fcgi -s /var/run/munin/fcgi-html.sock -u munin -g munin /var/www/cgi-bin/munin-cgi-html -P /var/run/munin/fcgi-html.pid - RETVAL=$? - if [ $RETVAL -eq 0 ] - then - echo_success - touch /var/lock/subsys/munin-fcgi-html - else - echo_failure - fi - echo - ;; - stop) - echo -n "Stopping Munin fcgi-html: " - kill $(cat /var/run/munin/fcgi-html.pid) - RETVAL=$? - if [ $RETVAL -eq 0 ] - then - echo_success - rm -f /var/lock/subsys/munin-fcgi-html - else - echo_failure - fi - echo - ;; - restart|reload) - $0 stop - $0 start - RETVAL=$? - ;; - *) - echo "Usage: munin-fcgi-html {start|stop|restart}" - exit 1 -esac - -exit $RETVAL diff --git a/munin-fcgi-html.service b/munin-fcgi-html.service deleted file mode 100644 index 3fa4640..0000000 --- a/munin-fcgi-html.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Munin FastCGI HTML -Documentation=man:spawn-fcgi - -[Service] -Type=forking -PIDFile=/run/munin/fcgi-html.pid -ExecStart=/usr/bin/spawn-fcgi -s /run/munin/fcgi-html.sock -u munin -g munin /var/www/cgi-bin/munin-cgi-html -P /run/munin/fcgi-html.pid - -[Install] -WantedBy=multi-user.target diff --git a/munin-node b/munin-node new file mode 100644 index 0000000..34083c3 --- /dev/null +++ b/munin-node @@ -0,0 +1,5 @@ +# We moved the default config to file 00-default +# as config files in this directory are read in alphabetical order. +# +# Documentation can be found in Munin-Guide: +# http://guide.munin-monitoring.org/en/latest/plugin/use.html#configuring diff --git a/munin-node.conf b/munin-node.conf new file mode 100644 index 0000000..1d4fb01 --- /dev/null +++ b/munin-node.conf @@ -0,0 +1,65 @@ +# +# Example config file for munin-node. You don't have to edit anything in +# this file if you are using munin-asyncd. +# + +log_level 4 +log_file /var/log/munin-node/munin-node.log +pid_file /var/run/munin/munin-node.pid + +background 1 +setsid 1 + +user root +group root + +# This is the timeout for the whole transaction. +# Units are in sec. Default is 15 min +# +# global_timeout 900 + +# This is the timeout for each plugin. +# Units are in sec. Default is 1 min +# +# timeout 60 + +# Regexps for files to ignore +ignore_file [\#~]$ +ignore_file DEADJOE$ +ignore_file \.bak$ +ignore_file %$ +ignore_file \.dpkg-(tmp|new|old|dist)$ +ignore_file \.rpm(save|new|orig)$ +ignore_file \.pod$ + +# Set this if the client doesn't report the correct hostname when +# telnetting to localhost, port 4949 +# +#host_name localhost.localdomain + +# A list of addresses that are allowed to connect. This must be a +# regular expression, since Net::Server does not understand CIDR-style +# network notation unless the perl module Net::CIDR is installed. You +# may repeat the allow line as many times as you'd like + +allow ^127\.0\.0\.1$ +allow ^::1$ + +# If you have installed the Net::CIDR perl module, you can use one or more +# cidr_allow and cidr_deny address/mask patterns. A connecting client must +# match any cidr_allow, and not match any cidr_deny. Note that a netmask +# *must* be provided, even if it's /32 +# +# Example: +# +#cidr_allow 127.0.0.1/32 +#cidr_allow 192.0.2.0/24 +#cidr_deny 192.0.2.42/32 + +# Which address to bind to; +host * +#host 127.0.0.1 + +# And which port +port 4949 + diff --git a/munin-node.logrotate b/munin-node.logrotate index 843cd28..56a6be8 100644 --- a/munin-node.logrotate +++ b/munin-node.logrotate @@ -1,10 +1,8 @@ /var/log/munin-node/munin-node.log { daily - missingok rotate 7 + missingok + notifempty compress copytruncate - notifempty - create 644 root root - su root root } diff --git a/munin-node.rc b/munin-node.rc old mode 100644 new mode 100755 index 9104680..8bd7257 --- a/munin-node.rc +++ b/munin-node.rc @@ -1,65 +1,120 @@ -#! /bin/sh +#!/bin/sh # -# munin-node Control the Munin Node Server (formerly Linpro RRD client) +# /etc/init.d/munin-node # -# chkconfig: 2345 90 10 -# description: munin node agents +# chkconfig: - 90 10 +# description: Network-wide resource monitoring tool (node) # processname: munin-node -# config: /etc/munin/munin-node.conf -# pidfile: /var/run/munin/munin-node.pid +# +### BEGIN INIT INFO +# Provides: munin-node +# Required-Start: $network $syslog +# Required-Stop: +# Default-Stop: 0 1 2 6 +# Short-Description: Network-wide resource monitoring tool (node) +# Description: Munin is a highly flexible and powerful solution used to create +# graphs of virtually everything imaginable throughout your network, +# while still maintaining a rattling ease of installation and +# configuration. +### END INIT INFO # Source function library. -. /etc/rc.d/init.d/functions +. /etc/init.d/functions +# Source networking configuration. +. /etc/sysconfig/network + +# Check that networking is up. +[ ${NETWORKING} = "no" ] && exit 0 + +# Read config +ASYNCD=no +[ -f /etc/sysconfig/munin-node ] && . /etc/sysconfig/munin-node + +prognode=munin-node +progasync=munin-asyncd +binnode=/usr/sbin/$prognode +binasync=/usr/sbin/$progasync +pidnode=/var/run/munin/$prognode.pid RETVAL=0 -PROCNAME=munin-node -mkdir -p /var/run/munin 2>/dev/null -chown munin /var/run/munin -restorecon /var/run/munin 2>/dev/null +start() { + echo -n $"Starting $prognode: " + mkdir -p /var/run/munin 2>/dev/null + chown munin:munin /var/run/munin + restorecon /var/run/munin 2>/dev/null + ${binnode} < /dev/null > /dev/null 2>&1 & + sleep 1 + pkill -0 $prognode + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + echo_success + touch /var/lock/subsys/$prognode + if [ "${ASYNCD}" = "yes" ]; then + echo + echo -n $"Starting $progasync: " + sleep 1 + ${binasync} < /dev/null > /dev/null 2>&1 & + sleep 1 + pkill -0 $progasync + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + echo_success + else + echo_failure + fi + fi + else + echo_failure + fi + echo + return $RETVAL +} + +stop() { + if [ "${ASYNCD}" = "yes" ]; then + echo -n $"Stopping $progasync: " + killproc ${binasync} + echo + fi + echo -n $"Stopping $prognode: " + killproc ${binnode} + RETVAL=$? + echo + [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prognode + return $RETVAL +} + +restart() { + stop + start +} # See how we were called. case "$1" in - start) - echo -n "Starting Munin Node: " - /usr/sbin/munin-node & - sleep 1 - pkill -0 $PROCNAME + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + condrestart) + [ -f /var/lock/subsys/$prognode ] && restart + ;; + status) + status -p ${pidnode} ${binnode} RETVAL=$? - if [ $RETVAL -eq 0 ] - then - echo_success - touch /var/lock/subsys/munin-node - else - echo_failure + if [ $RETVAL = 0 -a "${ASYNCD}" = "yes" ]; then + status ${binasync} + RETVAL=$? fi - echo ;; - stop) - echo -n "Stopping Munin Node agents: " - kill $(cat /var/run/munin/munin-node.pid) - RETVAL=$? - if [ $RETVAL -eq 0 ] - then - echo_success - rm -f /var/lock/subsys/munin-node - else - echo_failure - fi - echo - ;; - status) - status $PROCNAME - RETVAL=$? - ;; - restart|reload) - $0 stop - $0 start - RETVAL=$? - ;; - *) - echo "Usage: munin-node {start|stop|status|restart}" - exit 1 + *) + echo "Usage: $0 {start|stop|restart|condrestart|status}" + RETVAL=2 esac exit $RETVAL diff --git a/munin-node.service b/munin-node.service index ac7257e..a48b60a 100644 --- a/munin-node.service +++ b/munin-node.service @@ -1,11 +1,15 @@ [Unit] -Description=Munin Node Server. -After=syslog.target network.target +Description=Munin Node +Documentation=man:munin-node(1) http://munin.readthedocs.org/en/stable-2.0/reference/munin-node.html +After=network.target network-online.target +PartOf=munin-asyncd.service [Service] Type=forking -PIDFile=/var/run/munin/munin-node.pid ExecStart=/usr/sbin/munin-node +PIDFile=/run/munin/munin-node.pid +PrivateTmp=true +TimeoutStopSec=30s [Install] WantedBy=multi-user.target diff --git a/munin-node.service-privatetmp b/munin-node.service-privatetmp deleted file mode 100644 index 87c1347..0000000 --- a/munin-node.service-privatetmp +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Munin Node Server. -Documentation=man:munin-node -After=network-online.target -Wants=network-online.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-rrdcached.service b/munin-rrdcached.service new file mode 100644 index 0000000..c803b7e --- /dev/null +++ b/munin-rrdcached.service @@ -0,0 +1,18 @@ +[Unit] +Description=Munin RRDtool Cache +After=network.target + +[Service] +User=munin +ExecStart=/usr/bin/rrdcached \ + -g -p /run/munin/munin-rrdcached.pid \ + -m 0660 -l unix:/run/munin/rrdcached.sock \ + -w 1800 -z 1800 -f 3600 \ + -B -b /var/lib/munin/ \ + -F -j /var/lib/munin/rrdcached/ +PIDFile=/run/munin/munin-rrdcached.pid +StandardOutput=null +Restart=on-abort + +[Install] +WantedBy=multi-user.target diff --git a/munin.conf b/munin.conf index f3c7348..6818456 100644 --- a/munin.conf +++ b/munin.conf @@ -1 +1,150 @@ -D /var/run/munin 0755 munin munin - +# +# Please don't edit this example config file. Create and edit +# file /etc/munin/conf.d/local.conf instead. +# + +# The next three variables specifies where the location of the RRD +# databases, the HTML output, logs and the lock/pid files. They all +# must be writable by the user running munin-cron. They are all +# defaulted to the values you see here. +# +#dbdir /var/lib/munin +#htmldir /var/www/html/munin +#logdir /var/log/munin +#rundir /var/run/munin + +# Where to look for the HTML templates +# +#tmpldir /etc/munin/templates + +# Where to look for the static www files +# +#staticdir /etc/munin/static + +# Temporary cgi files are here. Note that it has to be writable by the cgi +# user (usually apache). +# +#cgitmpdir /var/lib/munin/cgi-tmp + +# (Exactly one) directory to include all files from. +includedir /etc/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" +# +#graph_period second + +# Graphics files are generated either via cron or by a CGI process. +# See http://munin-monitoring.org/wiki/CgiHowto2 for more +# documentation. +# Since 2.0, munin-graph has been rewritten to use the cgi code. +# It is single threaded *by design* now. +# +#graph_strategy cron + +# munin-cgi-graph is invoked by the web server up to very many times at the +# same time. This is not optimal since it results in high CPU and memory +# consumption to the degree that the system can thrash. Again the default is +# 6. Most likely the optimal number for max_cgi_graph_jobs is the same as +# max_graph_jobs. +# +#munin_cgi_graph_jobs 6 + +# If the automatic CGI url is wrong for your system override it here: +# +#cgiurl_graph /munin-cgi/munin-cgi-graph + +# max_size_x and max_size_y are the max size of images in pixel. +# Default is 4000. Do not make it too large otherwise RRD might use all +# RAM to generate the images. +# +#max_size_x 4000 +#max_size_y 4000 + +# HTML files are normally generated by munin-html, no matter if the +# files are used or not. You can change this to on-demand generation +# by following the instructions in http://munin-monitoring.org/wiki/CgiHowto2 +# +# Notes: +# - moving to CGI for HTML means you cannot have graph generated by cron. +# - cgi html has some bugs, mostly you still have to launch munin-html by hand +# +#html_strategy cron + +# munin-update runs in parallel. +# +# The default max number of processes is 16, and is probably ok for you. +# +# If set too high, it might hit some process/ram/filedesc limits. +# If set too low, munin-update might take more than 5 min. +# +# If you want munin-update to not be parallel set it to 0. +# +#max_processes 16 + +# RRD updates are per default, performed directly on the rrd files. +# To reduce IO and enable the use of the rrdcached, uncomment it and set it to +# the location of the socket that rrdcached uses. +# +#rrdcached_socket /run/munin/rrdcached.sock + +# Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime +# something changes (OK -> WARNING, CRITICAL -> OK, etc) +#contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm +#contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm +# +# For those with Nagios, the following might come in handy. In addition, +# the services must be defined in the Nagios server as well. +#contact.nagios.command /usr/bin/send_nsca nagios.host.comm -c /etc/nsca.conf + +# +# A simple host tree +# +# [localhost] +# address 127.0.0.1 +# use_node_name yes + +# +# A more complex example of a host tree +# +## First our "normal" host. +# [fii.foo.com] +# address foo +# +## Then our other host... +# [fay.foo.com] +# address fay +# +## IPv6 host. note that the ip address has to be in brackets +# [ip6.foo.com] +# address [2001::1234:1] +# +## Then we want totals... +# [foo.com;Totals] #Force it into the "foo.com"-domain... +# update no # Turn off data-fetching for this "host". +# +# # The graph "load1". We want to see the loads of both machines... +# # "fii=fii.foo.com:load.load" means "label=machine:graph.field" +# load1.graph_title Loads side by side +# load1.graph_order fii=fii.foo.com:load.load fay=fay.foo.com:load.load +# +# # The graph "load2". Now we want them stacked on top of each other. +# load2.graph_title Loads on top of each other +# load2.dummy_field.stack fii=fii.foo.com:load.load fay=fay.foo.com:load.load +# load2.dummy_field.draw AREA # We want area instead the default LINE2. +# load2.dummy_field.label dummy # This is needed. Silly, really. +# +# # The graph "load3". Now we want them summarised into one field +# load3.graph_title Loads summarised +# load3.combined_loads.sum fii.foo.com:load.load fay.foo.com:load.load +# load3.combined_loads.label Combined loads # Must be set, as this is +# # not a dummy field! +# +## ...and on a side note, I want them listen in another order (default is +## alphabetically) +# +# # Since [foo.com] would be interpreted as a host in the domain "com", we +# # specify that this is a domain by adding a semicolon. +# [foo.com;] +# node_order Totals fii.foo.com fay.foo.com +# diff --git a/munin.cron.d b/munin.cron.d index 9f15408..bcc7834 100644 --- a/munin.cron.d +++ b/munin.cron.d @@ -1,7 +1,7 @@ -# -# cron-jobs for munin -# +# Collect Munin data every five minutes, clean up once a day MAILTO=root -*/5 * * * * munin test -x /usr/bin/munin-cron && /usr/bin/munin-cron +*/5 * * * * munin /usr/bin/munin-cron +21 5 * * * root /usr/sbin/tmpwatch --ctime 24h /var/lib/munin/cgi-tmp +25 5 * * * root /usr/sbin/tmpwatch --ctime 30d /var/lib/munin --exclude /var/lib/munin/.ssh --exclude /var/lib/munin/cgi-tmp --exclude /var/lib/munin/plugin-state --exclude /var/lib/munin/rrdcached diff --git a/munin.logrotate b/munin.logrotate index 11abd53..78ed224 100644 --- a/munin.logrotate +++ b/munin.logrotate @@ -1,39 +1,47 @@ -/var/log/munin/munin-update.log { - daily - missingok - rotate 7 - compress - notifempty - create 640 munin munin - su munin munin +/var/log/munin/munin-cgi-graph.log { + daily + rotate 7 + missingok + notifempty + compress +} + +/var/log/munin/munin-cgi-html.log { + daily + rotate 7 + missingok + notifempty + compress } /var/log/munin/munin-graph.log { - daily - missingok - rotate 7 - compress - notifempty - create 640 munin munin - su munin munin + daily + rotate 7 + missingok + notifempty + compress } /var/log/munin/munin-html.log { - daily - missingok - rotate 7 - compress - notifempty - create 640 munin munin - su munin munin + daily + rotate 7 + missingok + notifempty + compress } /var/log/munin/munin-limits.log { - daily - missingok - rotate 7 - compress - notifempty - create 640 munin munin - su munin munin + daily + rotate 7 + missingok + notifempty + compress +} + +/var/log/munin/munin-update.log { + daily + rotate 7 + missingok + notifempty + compress } diff --git a/munin.spec b/munin.spec index 2e3d639..5b1c122 100644 --- a/munin.spec +++ b/munin.spec @@ -1,99 +1,79 @@ -Name: munin -Version: 2.0.33 -Release: 8%{?dist} -Summary: Network-wide graphing framework (grapher/gatherer) +Name: munin +Version: 2.0.40 +Release: 1%{?dist} +Summary: Network-wide resource monitoring tool +License: GPLv2 +URL: http://munin-monitoring.org/ -Group: System Environment/Daemons -License: GPLv2 -URL: http://munin-monitoring.org/ -Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz -Source10: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.sha256sum -Source1: munin-1.2.4-sendmail-config -Source2: munin-1.2.5-hddtemp_smartctl-config -Source3: munin-node.logrotate -Source4: munin.logrotate -Source6: munin-1.2.6-postfix-config -Source7: munin-1.4.5-df-config -Source8: munin-node.service -Source9: %{name}.conf -Source11: munin-node.service-privatetmp -# BZ#747663 http://munin-monitoring.org/ticket/1155 -Source12: cpuspeed.in.rev1243 -Source13: linux-init.d_munin-asyncd.in -Source14: munin-asyncd.service -Source15: munin-fcgi-html.service -Source16: munin-fcgi-graph.service -Source17: munin.cron.d -Source18: munin-node.rc -Source19: httpd_munin-cgi.conf -Source20: Makefile.config-dist -Source21: nginx_munin.conf -Source22: munin-fcgi-html.rc -Source23: munin-fcgi-graph.rc -Source24: munin-2.0.9-amavis-config -Source25: munin-node.xml -Source26: munin-2.0.25-postgresql-config +Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz -#Patch1: munin-1.4.6-restorecon.patch -#Patch2: munin-1.4.2-fontfix.patch -Patch4: munin-2.0.4-Utils-cluck.patch -#Patch5: acpi-2.0.5.patch -#Patch6: munin-2.0.7-http_loadtime.patch -#Patch7: munin-2.0-defect-1213.patch -#Patch8: munin-2.0.2-defect-1245-LimitsOld.pm-notify_alias.patch -#Patch9: munin-2.0.8-cgitmp.patch -# BZ# 877116 Patch using '&' in the URLs instead of '&' in HTMLConfig -Patch10: munin-2.0.9_HTMLConfig.pm.patch -Patch11: https://github.com/munin-monitoring/munin/pull/274.patch -Patch12: bz1049262-ntp_.patch -Patch13: mariadb-show-status.patch -Patch14: mariadb-innodb.patch -#Patch15: https://patch-diff.githubusercontent.com/raw/munin-monitoring/munin/pull/737.patch -#Patch16: https://patch-diff.githubusercontent.com/raw/munin-monitoring/munin/pull/759.patch -#Patch17: https://patch-diff.githubusercontent.com/raw/munin-monitoring/munin/pull/797.patch -Patch18: munin-2.0.33-Fix-building-on-Perl-without-dot-in-INC.patch +# Master sources +Source10: munin.conf +Source11: munin.logrotate +Source12: munin.tmpfilesd +Source13: munin.cron.d +Source14: asyncd-ssh.config +Source15: munin-rrdcached.service +Source16: httpd_munin.conf +Source17: nginx_munin.conf -BuildArch: noarch +# Node sources +Source20: munin-node.conf +Source21: munin-node.logrotate +Source22: munin-node.rc +Source23: munin-node.service +Source24: munin-asyncd.rc +Source25: munin-asyncd.service +Source26: munin-node.xml + +# CGI sources +Source30: munin-cgi-html.rc +Source31: munin-cgi-graph.rc +Source32: munin-cgi-graph.service +Source33: munin-cgi-graph.socket +Source34: munin-cgi-html.service +Source35: munin-cgi-html.socket + +# Patches +Patch100: asyncd_unknown_email_flood.patch +Patch101: asyncd_retry_connect.patch +Patch102: bind9-category_dns.patch +Patch103: nginx_requests-remove-unused-port.patch +Patch104: squid.patch +Patch105: Fix-building-on-Perl-without-dot-in-INC.patch + +# Use mysql plugin from munin 3.0 series +Source200: mysql_ + +# Plugin config +Source300: 00-default +Source301: munin-node + +BuildArch: noarch -%if 0%{?fedora} > 20 -BuildRequires: /usr/bin/hostname -%else -BuildRequires: /bin/hostname -%endif BuildRequires: perl-interpreter >= 5.8 -%if 0%{?rhel} > 6 || 0%{?fedora} > 12 -BuildRequires: perl(Directory::Scratch) -%endif BuildRequires: perl(Module::Build) -BuildRequires: perl(Net::Server) -BuildRequires: perl(Net::SNMP) -BuildRequires: perl(Test::Exception) -BuildRequires: perl(Test::MockModule) -BuildRequires: perl(Test::MockObject) -#BuildRequires: perl(Test::Perl::Critic) >= 1.096 ## Not packaged -BuildRequires: perl(Test::Pod::Coverage) -BuildRequires: perl(Time::HiRes) -BuildRequires: perl(Net::SSLeay) BuildRequires: perl(HTML::Template) -BuildRequires: perl(LWP::UserAgent) -# Work-around for koji -%if 0%{?rhel} > 6 || 0%{?fedora} > 16 -BuildRequires: perl-Carp -BuildRequires: perl-generators -%endif -# RHEL6+ BuildRequires: perl(Log::Log4perl) >= 1.18 -%if 0%{?rhel} > 5 || 0%{?fedora} > 11 -BuildRequires: perl(Log::Log4perl) >= 1.18 -%else BuildRequires: perl(Log::Log4perl) +BuildRequires: perl(Net::Server) +BuildRequires: perl(Net::SSLeay) +BuildRequires: perl(Net::SNMP) +BuildRequires: perl(Text::Balanced) +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +BuildRequires: perl(Directory::Scratch) +BuildRequires: perl-Carp +BuildRequires: systemd %endif -Requires(pre): shadow-utils -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +BuildRequires: java-devel +BuildRequires: jpackage-utils # Munin server requires +Requires: %{name}-common = %{version} +Requires: %{name}-web-support Requires: logrotate -Requires: perl-interpreter >= 5.8 -Requires: perl(CGI::Fast) +Requires: tmpwatch +Requires: rrdtool +Requires: /bin/mail Requires: perl(FCGI) Requires: perl(Digest::MD5) Requires: perl(File::Copy::Recursive) @@ -110,57 +90,14 @@ Requires: perl(Text::Balanced) Requires: perl(DateTime) Requires: perl(Time::HiRes) Requires: perl(Taint::Runtime) -Requires: sysstat -Requires: crontabs -# BZ#913111 : Removed because it pulls boa .. and no clean way to prefer apache. -#Requires: webserver - -# SystemD -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -BuildRequires: systemd-units -%endif - -# Munin node requires -%if 0%{?rhel} > 6 -#Requires: perl(Cache::Memcached) -#Requires: perl(Carp::Always) -# This one is in fact optional, only needed for cidr_allow in munin-node, -# which is documented in the manual page. Not present in el7. -#Requires: perl(Net::CIDR) -%else -Requires: perl(Cache::Memcached) -Requires: perl(Carp::Always) -Requires: perl(Net::CIDR) -%endif -Requires: perl(Crypt::DES) -Requires: perl(Digest::HMAC) -Requires: perl(Digest::SHA1) -Requires: perl(Net::Server) -Requires: perl(Net::Server::Fork) -Requires: perl(Net::SNMP) -Requires: perl(Net::SSLeay) -Requires: perl(Time::HiRes) -# mysql plugin requires perl(Cache::Cache) -Requires: perl(Cache::Cache) - -# Munin node java monitor requires -#Requires: java-jmx # rhel<5 -BuildRequires: java-devel -BuildRequires: jpackage-utils -%if 0%{?rhel} > 6 -# RHEL7 does not have mx4j -#BuildRequires: mx4j -%else -BuildRequires: mx4j -%endif - -# CGI requires -# RHEL6+ Requires: dejavu-sans-mono-fonts +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires(pre): shadow-utils +Requires: dejavu-sans-mono-fonts %description -Munin is a highly flexible and powerful solution used to create graphs -of virtually everything imaginable throughout your network, while still +Munin is a highly flexible and powerful solution used to create graphs of +virtually everything imaginable throughout your network, while still maintaining a rattling ease of installation and configuration. This package contains the grapher/gatherer. You will only need one instance of @@ -171,33 +108,37 @@ pages, suitable for viewing with your graphical web browser of choice. Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent RRDtool. -Creaete a munin web user after installing: -htpasswd -bc /etc/munin/munin-htpasswd MUNIN_WEB_USER PASSWORD - %package node -Group: System Environment/Daemons -Summary: Network-wide graphing framework (node) -BuildArch: noarch -Requires: %{name}-common = %{version} -Requires: perl(LWP::UserAgent) -Requires: perl-Net-CIDR -Requires: perl-Net-Server -Requires: procps >= 2.0.7 -Requires: sysstat, /usr/bin/which, hdparm -Requires(pre): shadow-utils -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -Requires(post): systemd -Requires(preun): systemd +Summary: Network-wide resource monitoring tool (node) +Requires: %{name}-common = %{version} +Requires: procps +Requires: sysstat +Requires: hdparm +Requires: bc +Requires: /usr/bin/which +Requires: conntrack-tools +Requires: perl(Net::Server) +Requires: perl(IO::Socket::INET6) +Requires: perl(Net::SSLeay) +Requires: perl(Cache::Cache) +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires(pre): shadow-utils +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%{?systemd_requires} %else -Requires(post): /sbin/chkconfig +Requires(post): /sbin/chkconfig Requires(preun): /sbin/chkconfig Requires(preun): /sbin/service %endif +BuildArch: noarch +Provides: munin-async = %{version}-%{release} +Obsoletes: munin-async < 2.0.39-4 + %description node -Munin is a highly flexible and powerful solution used to create graphs -of virtually everything imaginable throughout your network, while still +Munin is a highly flexible and powerful solution used to create graphs of +virtually everything imaginable throughout your network, while still maintaining a rattling ease of installation and configuration. This package contains node software. You should install it on all the nodes @@ -210,665 +151,581 @@ cpu usage, network usage, load average, and so on. Creating your own plugins which are capable of extracting other system-specific values is very easy, and is often done in a matter of minutes. You can also create plugins which relay information from other devices in your network that can't run Munin, -such as a switch or a server running another operating system, by using SNMP -or similar technology. +such as a switch or a server running another operating system, by using +SNMP or similar technology. Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent RRDtool. -%package async -Group: System Environment/Daemons -Summary: Network-wide graphing framework (asynchronous client tools) -BuildArch: noarch -Requires: %{name}-node = %{version} - -%description async -Munin is a highly flexible and powerful solution used to create graphs of -virtually everything imaginable throughout your network, while still -maintaining a rattling ease of installation and configuration. - -This package contains the tools necessary for setting up an asynchronous -client / spooling system. - -See documentation for setup instructions: -https://munin.readthedocs.org/en/latest/node/async.html - %package common -Group: System Environment/Daemons -Summary: Network-wide graphing framework (common files) -BuildArch: noarch -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) -Requires(pre): shadow-utils +Summary: Network-wide resource monitoring tool (common files) +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires(pre): shadow-utils +BuildArch: noarch + %description common -Munin is a highly flexible and powerful solution used to create graphs -of virtually everything imaginable throughout your network, while still +Munin is a highly flexible and powerful solution used to create graphs of +virtually everything imaginable throughout your network, while still maintaining a rattling ease of installation and configuration. This package contains common files that are used by both the server (munin) and node (munin-node) packages. -%package java-plugins -Group: System Environment/Daemons -Summary: java-plugins for munin -Requires: %{name}-node = %{version} -BuildArch: noarch -Requires: jpackage-utils - -%description java-plugins -java-plugins for munin-node. - -Install this sub-package for the jmx node plugin. - -%package ruby-plugins -Group: System Environment/Daemons -Summary: ruby-plugins for munin -Requires: %{name}-node = %{version} -BuildArch: noarch - -%description ruby-plugins -ruby-plugins for munin-node. - -Install this sub-package for the tomcat node plugin. +%package plugins-java +Summary: Java plugins for Munin resource monitoring +Requires: %{name}-node = %{version} +BuildArch: noarch +Provides: munin-java-plugins = %{version}-%{release} +Obsoletes: munin-java-plugins < 2.0.39-2 -# BZ# 861816 munin-2.x CGI support is broken without manual hacks -%package cgi -Group: System Environment/Daemons -Summary: Network-wide graphing framework (cgi files for apache) -BuildArch: noarch -Requires: %{name}-common = %{version} -Requires: mod_fcgid -Requires: spawn-fcgi -Requires(pre): shadow-utils +%description plugins-java +Additional Java plugins for munin-node. -%description cgi -Munin package uses cron by default. This package contains the CGI files that -can generate HTML and graphs dynamically. This enables munin to scale better -for a master with many nodes. -See documentation for setup instructions: -http://munin-monitoring.org/wiki/CgiHowto2 -http://munin.readthedocs.org/en/latest/example/webserver/apache-virtualhost.html +%package plugins-ruby +Summary: Ruby plugins for Munin resource monitoring +Requires: %{name}-node = %{version} +BuildArch: noarch +Provides: munin-ruby-plugins = %{version}-%{release} +Obsoletes: munin-ruby-plugins < 2.0.39-2 + + +%description plugins-ruby +Additional Ruby plugins for munin-node. -QUICK-HOWTO: -sed -i 's/\(.*\)_strategy.*/\1_strategy cgi/' /etc/munin/munin.conf -htpasswd -bc /etc/munin/munin-htpasswd MUNIN_WEB_USER PASSWORD -for svc in httpd munin-node ; do - service $svc stop - chkconfig $svc on - service $svc start -done -# BZ# 905241 %package nginx -Group: System Environment/Daemons -Summary: Network-wide graphing framework (cgi files for nginx) -BuildArch: noarch -Requires: %{name}-common = %{version} -Requires: spawn-fcgi +Summary: NGINX support for Munin resource monitoring +Requires: %{name} = %{version} +Requires: munin-cgi +Requires: nginx-filesystem +Provides: munin-web-support = %{version} +Conflicts: munin-apache +BuildArch: noarch + %description nginx -Munin package uses cron by default. This package contains the CGI files that -can generate HTML and graphs dynamically. This enables munin to scale better -for a master with many nodes. +NGINX support for Munin resource monitoring. -QUICK-HOWTO: -sed -i 's/\(.*\)_strategy.*/\1_strategy cgi/;s/#cgiurl_graph/cgiurl_graph/' /etc/munin/munin.conf -for svc in munin-fcgi-graph munin-fcgi-html nginx ; do - service $svc stop - chkconfig $svc on - service $svc start -done -%package netip-plugins -Group: System Environment/Daemons -Summary: Network-wide graphing framework (dhcpd3 and ntp plugins) -BuildArch: noarch -Requires: %{name}-common = %{version} +%package apache +Summary: Apache support for Munin resource monitoring +Requires: %{name} = %{version} +Requires: httpd +Requires: mod_fcgid +Provides: munin-web-support = %{version} +Conflicts: munin-nginx +BuildArch: noarch -%description netip-plugins -Munin plugins that require Net::IP. This is only dhcpd3 and ntp currently. + +%description apache +Apache support for Munin resource monitoring. + + +%package cgi +Summary: FastCGI startup scripts for Munin resource monitoring +Requires: %{name} = %{version} +%if 0%{?rhel} == 6 +Requires: spawn-fcgi +%endif +Requires: nginx-filesystem +BuildArch: noarch +Provides: munin-fcgi = %{version}-%{release} +Obsoletes: munin-fcgi < 2.0.39-4 +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%{?systemd_requires} +%else +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +%endif + + +%description cgi +FastCGI startup scripts for Munin resource monitoring. Use these with +NGINX to generate graphs on demand. Apache has built in support for +FastCGI so you don't need this package. %prep -%setup -q -n munin-%{version} +%setup -q -%if 0%{?rhel} < 6 && 0%{?fedora} < 11 -install -c %{SOURCE12} ./plugins/node.d.linux/cpuspeed.in +sed -i -e ' + s,^PREFIX = \(.*\),PREFIX = $(DESTDIR)%{_prefix},; + s,^CONFDIR = \(.*\),CONFDIR = $(DESTDIR)%{_sysconfdir}/munin,; + s,^DOCDIR = \(.*\),DOCDIR = $(DESTDIR)%{_docdir}/%{name}-%{version},; + s,^MANDIR = \(.*\),MANDIR = $(DESTDIR)%{_mandir},; + s,^LIBDIR = \(.*\),LIBDIR = $(DESTDIR)%{_datadir}/munin,; + s,^HTMLDIR = \(.*\),HTMLDIR = $(DESTDIR)%{_localstatedir}/www/html/munin,; + s,^CGIDIR = \(.*\),CGIDIR = $(HTMLDIR)/cgi,; + s,^DBDIR = \(.*\),DBDIR = $(DESTDIR)%{_sharedstatedir}/munin,; + s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin,; + s,^LOGDIR = \(.*\),LOGDIR = $(DESTDIR)%{_localstatedir}/log/munin,; +%if 0%{?fedora} >= 24 + s,^PYTHON := \(.*\),PYTHON := /usr/bin/python3,; +%else + s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; %endif + s,^RUBY := \(.*\),RUBY := /usr/bin/ruby,; + s,^JAVALIBDIR = \(.*\),JAVALIBDIR = $(DESTDIR)%{_javadir},; + s,^PERLLIB = \(.*\),PERLLIB = $(DESTDIR)%{perl_vendorlib},; + s,^HOSTNAME := \(.*\),HOSTNAME := localhost.localdomain,; + s,^PLUGINUSER := \(.*\),PLUGINUSER := munin,; + s,^CGIUSER := \(.*\),CGIUSER := munin,; + s,^CHECKUSER := \(.*\),CHECKUSER := /bin/true,; + s,^CHECKGROUP := \(.*\),CHECKGROUP := /bin/true,; + s,^CHOWN := \(.*\),CHOWN := echo Not done: chown,; + s,^CHMOD := \(.*\),CHMOD := echo Not done: chmod,; + s,^CHGRP := \(.*\),CHGRP := echo Not done: chgrp,; + ' Makefile.config -%if 0%{?rhel} > 6 -# This one relies on Cache::Memcached, which is not shipped with el7 -rm -f plugins/node.d/memcached_.in -%endif +%patch100 -p1 +%patch101 -p1 +%patch102 -p1 +%patch103 -p1 +%patch104 -p1 +%patch105 -p1 -%patch4 -p0 -#% patch5 -p0 -#% patch7 -p1 -#% patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -#% patch15 -p1 -#% patch16 -p1 -%patch18 -p1 -install -c %{SOURCE13} ./resources/ - -# Create Makefile.config-dist -install -c %{SOURCE20} . -sed -i -e 's,^PERLSITELIB := \(.*\),PERLSITELIB := %{perl_vendorlib},;' Makefile.config-dist - -#%% patch17 -p1 -F2 +cp %SOURCE16 . +cp %SOURCE17 . %build -%if 0%{?rhel} > 6 export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH -%else -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$(build-classpath mx4j):$CLASSPATH -%endif -make CONFIG=Makefile.config-dist - -# Convert to utf-8 -for file in Announce-2.0 COPYING ChangeLog Checklist HACKING.pod README RELEASE UPGRADING UPGRADING-1.4; do - iconv -f ISO-8859-1 -t UTF-8 -o $file.new $file && \ - touch -r $file $file.new && \ - mv $file.new $file -done - -# Fix the wrong FSF address -for FILE in plugins/node.d.linux/tcp.in COPYING plugins/node.d.linux/bonding_err_.in; do - sed -i 's|59 Temple Place.*Suite 330, Boston, MA *02111-1307|51 Franklin St, Fifth Floor, Boston, MA 02110-1301|g' $FILE -done +make CONFIG=Makefile.config %install -rm -rf ${buildroot} - -## Node -%if 0%{?rhel} > 6 export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH -%else -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$(build-classpath mx4j):$CLASSPATH -%endif -make CONFIG=Makefile.config-dist \ +make CONFIG=Makefile.config \ DESTDIR=%{buildroot} \ -%if 0%{?rhel} > 7 || 0%{?fedora} > 19 - DOCDIR=%{buildroot}%{_docdir}/%{name} \ -%else - DOCDIR=%{buildroot}%{_docdir}/%{name}-%{version} \ -%endif - JAVALIBDIR=%{buildroot}%{_datadir}/java \ - MANDIR=%{buildroot}%{_mandir} \ - PREFIX=%{buildroot}%{_prefix} \ - USER=nobody GROUP=nobody \ install -# Remove fonts -rm %{buildroot}%{_datadir}/munin/DejaVuSans*.ttf +# Remove bundled fonts +rm -f %{buildroot}%{_datadir}/munin/DejaVuSans*.ttf -# install logrotate scripts -mkdir -p %{buildroot}/etc/logrotate.d -install -m 0644 %{SOURCE3} %{buildroot}/etc/logrotate.d/munin-node -install -m 0644 %{SOURCE4} %{buildroot}/etc/logrotate.d/munin -# BZ#821912 - Move .htaccess to apache config to allow easier user-access changes. -mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d -sed -e 's/# %{buildroot}%{_sysconfdir}/httpd/conf.d/munin.conf +### Node ### -# BZ#1312121 - Munin dynamic graph zoom (dynazoom) failing due to Apache config. -cat - >> %{buildroot}%{_sysconfdir}/httpd/conf.d/munin.conf < - Options ExecCGI - SetHandler cgi-script - - AuthUserFile /etc/munin/munin-htpasswd - AuthName "Munin" - AuthType Basic - require valid-user - - -EOT - -rm %{buildroot}/var/www/html/munin/.htaccess - -# install cron script -mkdir -p %{buildroot}/etc/cron.d -install -m 0644 %{SOURCE17} %{buildroot}/etc/cron.d/munin - -# BZ# 908711 -mv %{buildroot}/usr/share/munin/munin-asyncd %{buildroot}/usr/sbin/munin-asyncd - -# SystemD -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -mkdir -p %{buildroot}/lib/systemd/system -%endif -# Fedora 17 and higer uses privatetmp -%if 0%{?fedora} == 16 -install -m 0644 %{SOURCE8} %{buildroot}/lib/systemd/system/munin-node.service -install -m 0644 %{SOURCE14} %{buildroot}/lib/systemd/system/munin-asyncd.service -install -m 0644 %{SOURCE15} %{buildroot}/lib/systemd/system/munin-fcgi-html.service -install -m 0644 %{SOURCE16} %{buildroot}/lib/systemd/system/munin-fcgi-graph.service -%endif -%if 0%{?rhel} > 6 || 0%{?fedora} > 16 -install -m 0644 %{SOURCE11} %{buildroot}/lib/systemd/system/munin-node.service -install -m 0644 %{SOURCE14} %{buildroot}/lib/systemd/system/munin-asyncd.service -install -m 0644 %{SOURCE15} %{buildroot}/lib/systemd/system/munin-fcgi-html.service -install -m 0644 %{SOURCE16} %{buildroot}/lib/systemd/system/munin-fcgi-graph.service -%endif -mkdir -p %{buildroot}/var/lib/munin/spool - -# install tmpfiles.d entry -%if 0%{?rhel} > 6 || 0%{?fedora} > 14 -mkdir -p %{buildroot}%{_tmpfilesdir} -install -m 0644 %{SOURCE9} %{buildroot}%{_tmpfilesdir}/%{name}.conf -%endif - -# Fedora 15 and rhel use sysvinit / upstart -%if (0%{?rhel} > 4 && 0%{?rhel} <= 6) || 0%{?fedora} == 15 -mkdir -p %{buildroot}/etc/rc.d/init.d -cat %{SOURCE18} | sed -e 's/2345/\-/' > %{buildroot}/etc/rc.d/init.d/munin-node -chmod 755 %{buildroot}/etc/rc.d/init.d/munin-node -install -m 0755 %{SOURCE13} %{buildroot}/etc/rc.d/init.d/munin-asyncd -install -m 0755 %{SOURCE22} %{buildroot}/etc/rc.d/init.d/munin-fcgi-html -install -m 0755 %{SOURCE23} %{buildroot}/etc/rc.d/init.d/munin-fcgi-graph -%endif - -# Fix default config file -sed -i ' - s,/etc/munin/munin-conf.d,/etc/munin/conf.d,; - s,#html_strategy.*,html_strategy cron,; - s,#graph_strategy.*,graph_strategy cron,; - s,#cgiurl_graph,cgiurl_graph,; - s,# cgitmpdir .*,cgitmpdir /var/tmp,; - ' %{buildroot}/etc/munin/munin.conf -mkdir -p %{buildroot}/etc/munin/conf.d -mkdir -p %{buildroot}/etc/munin/plugin-conf.d -mkdir -p %{buildroot}/etc/munin/node.d -mkdir -p %{buildroot}/etc/munin/plugin-node.d - -# install config for sendmail under fedora -install -m 0644 %{SOURCE1} %{buildroot}/etc/munin/plugin-conf.d/sendmail - -# install config for hddtemp_smartctl -install -m 0644 %{SOURCE2} %{buildroot}/etc/munin/plugin-conf.d/hddtemp_smartctl - -# install logrotate scripts -install -m 0644 %{SOURCE3} %{buildroot}/etc/logrotate.d/munin-node -install -m 0644 %{SOURCE4} %{buildroot}/etc/logrotate.d/munin -%if 0%{?fedora} > 15 || 0%{?rhel} > 6 -echo 'Using SU directive for logrotate.d' +# Add startup scripts +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +mkdir -p %{buildroot}%{_unitdir} +cp %{SOURCE23} %{buildroot}%{_unitdir} +cp %{SOURCE25} %{buildroot}%{_unitdir} %else -# Fedora >= 16 requires 'su' directive. -echo 'Commenting out SU directive for logrotate.d' -sed -i 's/su /#su /' %{buildroot}/etc/logrotate.d/munin-node -sed -i 's/su /#su /' %{buildroot}/etc/logrotate.d/munin +mkdir -p %{buildroot}%{_initrddir} +cp %{SOURCE22} %{buildroot}%{_initrddir}/munin-node +cp %{SOURCE24} %{buildroot}%{_initrddir}/munin-asyncd %endif -# install config for postfix under fedora -install -m 0644 %{SOURCE6} %{buildroot}/etc/munin/plugin-conf.d/postfix +# Move munin-asyncd to /usr/sbin/ (FHS) +mv %{buildroot}%{_datadir}/munin/munin-asyncd %{buildroot}%{_sbindir}/munin-asyncd -# install df config to exclude fses we shouldn't try and monitor -install -m 0644 %{SOURCE7} %{buildroot}/etc/munin/plugin-conf.d/df +# Remove the Sybase plugin for now, as they need perl modules that are not available +rm -f %{buildroot}%{_datadir}/munin/plugins/sybase_space -# Install amavis config file to set MUNIN_MKTEMP env -install -m 0644 %{SOURCE24} %{buildroot}/etc/munin/plugin-conf.d/amavis +# Update mysql plugin +cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ -# Install config file for postgres -install -m 0644 %{SOURCE26} %{buildroot}/etc/munin/plugin-conf.d/postgres +# Install plugin config +cp %{SOURCE300} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ +cp %{SOURCE301} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ -# Append for BZ# 746083 -cat - >> %{buildroot}/etc/munin/plugin-conf.d/munin-node <> %{buildroot}/etc/munin/plugin-conf.d/fw_ < 6 || 0%{?fedora} > 19 -mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services/ -cp %{SOURCE25} %{buildroot}/%{_prefix}/lib/firewalld/services/munin-node.xml +%if 0%{?rhel} >= 7 || 0%{?fedora} > 19 +mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services +cp %{SOURCE26} %{buildroot}/%{_prefix}/lib/firewalld/services/ %endif -# -# node package scripts -# -# adding because of f17. +# Disable some plugins from autoconfig +for i in if_err_ bonding_err_ yum ntp_ ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_states nfsd; do + sed -i -e 's/family=auto/family=manual/' %{buildroot}%{_datadir}/munin/plugins/$i +done + +# Fix plugin charsets +for i in courier_mta_mailqueue courier_mta_mailstats courier_mta_mailvolume \ + dhcpd3 mysql_isam_space_ snmp__print_pages snmp__print_supplies \ + snmp__rdp_users tomcat_jvm; do + fname="%{buildroot}%{_datadir}/munin/plugins/$i" + iconv -f iso8859-1 -t UTF-8 $fname > $fname.tmp + chmod --reference=$fname $fname.tmp + mv -f $fname.tmp $fname +done + + +### Server ### + +mv %{buildroot}%{_sysconfdir}/munin/munin-conf.d %{buildroot}%{_sysconfdir}/munin/conf.d + +# Overwrite default config file +cp %{SOURCE10} %{buildroot}%{_sysconfdir}/munin/ + +# Install logrotate script +cp %{SOURCE11} %{buildroot}%{_sysconfdir}/logrotate.d/munin + +# Install tmpfiles config +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +mkdir -p %{buildroot}%{_tmpfilesdir} +mkdir -p %{buildroot}/run/%{name} +cp %{SOURCE12} %{buildroot}%{_tmpfilesdir}/%{name}.conf +%endif + +# Add server cron job +mkdir -p %{buildroot}%{_sysconfdir}/cron.d +cp %{SOURCE13} %{buildroot}%{_sysconfdir}/cron.d/munin + +# Default ssh config for asyncd +mkdir -p %{buildroot}%{_sharedstatedir}/munin/.ssh +install -m 0600 %{SOURCE14} %{buildroot}%{_sharedstatedir}/munin/.ssh/config + +# rrdcached +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +mkdir -p %{buildroot}%{_sharedstatedir}/munin/rrdcached +cp %{SOURCE15} %{buildroot}%{_unitdir} +%endif + +# Use UTF-8 in XML templates +for i in static/definitions.html templates/partial/head.tmpl; do + sed -i -e 's/iso-8859-1/utf-8/g' %{buildroot}%{_sysconfdir}/munin/$i +done + + +### CGI ### + +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +cp %{SOURCE32} %{buildroot}%{_unitdir} +cp %{SOURCE33} %{buildroot}%{_unitdir} +cp %{SOURCE34} %{buildroot}%{_unitdir} +cp %{SOURCE35} %{buildroot}%{_unitdir} +%else +mkdir -p %{buildroot}%{_initrddir} +cp %{SOURCE30} %{buildroot}%{_initrddir}/munin-cgi-html +cp %{SOURCE31} %{buildroot}%{_initrddir}/munin-cgi-graph +%endif + + +### Log files (ghost) ### + +touch %{buildroot}%{_localstatedir}/log/munin/munin-cgi-graph.log +touch %{buildroot}%{_localstatedir}/log/munin/munin-cgi-html.log +touch %{buildroot}%{_localstatedir}/log/munin/munin-graph.log +touch %{buildroot}%{_localstatedir}/log/munin/munin-html.log +touch %{buildroot}%{_localstatedir}/log/munin/munin-limits.log +touch %{buildroot}%{_localstatedir}/log/munin/munin-update.log +mkdir -p %{buildroot}%{_localstatedir}/log/munin-node +touch %{buildroot}%{_localstatedir}/log/munin-node/munin-node.log + + %pre common -/usr/bin/getent group munin >/dev/null || \ - /usr/sbin/groupadd -r munin -/usr/bin/getent passwd munin >/dev/null || \ - /usr/sbin/useradd -r -g munin -d /var/lib/munin -s /sbin/nologin \ - -c "Munin user" munin +getent group munin >/dev/null || groupadd -r munin +getent passwd munin >/dev/null || \ +useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 + %pre node -/usr/bin/getent group munin >/dev/null || \ - /usr/sbin/groupadd -r munin -/usr/bin/getent passwd munin >/dev/null || \ - /usr/sbin/useradd -r -g munin -d /var/lib/munin -s /sbin/nologin \ - -c "Munin user" munin +getent group munin >/dev/null || groupadd -r munin +getent passwd munin >/dev/null || \ +useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 -%pre cgi -#why this? search for BUG above -chown apache /var/log/munin -exit 0 %post node -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 - %if 0%{?systemd_post:1} - %systemd_post munin-node.service - %else - if [ $1 -eq 1 ] ; then - # Initial installation - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - fi - %endif +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_post munin-node.service +%systemd_post munin-asyncd.service %else - # sysvinit only in f15 and older and epel - /sbin/chkconfig --add munin-node +/sbin/chkconfig --add munin-node %endif +# Create log file +[ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ + /usr/bin/install -m 0640 -o root -g root /dev/null %{_localstatedir}/log/munin-node/munin-node.log # Only run configure on a new install, not an upgrade. if [ "$1" = "1" ]; then - /usr/sbin/munin-node-configure --shell 2> /dev/null | sh >& /dev/null || : + %{_sbindir}/munin-node-configure --shell 2> /dev/null | sh >& /dev/null || : + # Clean up munin mysql_ plugin shmems and semaphores to fix selinux issue + if [ -x %{_bindir}/ipcs -a -x %{_bindir}/ipcrm ]; then + for mem in $(%{_bindir}/ipcs --shmems | grep munin | cut --delimiter=' ' --fields=1) + do + %{_bindir}/ipcrm --shmem-key ${mem} 2>/dev/null || : + done + for sem in $(%{_bindir}/ipcs --semaphores | grep munin | cut --delimiter=' ' --fields=1) + do + %{_bindir}/ipcrm --semaphore-key ${sem} 2>/dev/null || : + done + fi fi -%post async -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 - %if 0%{?systemd_post:1} - %systemd_post munin-asyncd.service - %else - if [ $1 -eq 1 ] ; then - # Initial installation - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - fi - %endif -%else - # sysvinit only in f15 and older and epel - /sbin/chkconfig --add munin-asyncd -%endif %preun node -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -# Newer installs use systemd - %if 0%{?systemd_preun:1} - %systemd_preun munin-node.service - %else - if [ "$1" = 0 ]; then - /bin/systemctl --no-reload disable munin-node.service >/dev/null 2>&1 || : - /bin/systemctl stop munin-node.service >/dev/null 2>&1 || : - fi - %endif +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_preun munin-node.service +%systemd_preun munin-asyncd.service %else -# Older installs use sysvinit / upstart -if [ "$1" = 0 ]; then - service munin-node stop &>/dev/null || : - /sbin/chkconfig --del munin-node +if [ $1 -eq 0 ]; then + /sbin/service munin-node stop >/dev/null 2>&1 || : + /sbin/chkconfig --del munin-node fi %endif -%preun nginx -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -# Newer installs use systemd - %if 0%{?systemd_preun:1} - for svc in fcgi-html fcgi-graph ; do - %systemd_preun munin-${svc}.service - done - %else - if [ "$1" = 0 ]; then - for svc in fcgi-html fcgi-graph ; do - /bin/systemctl --no-reload disable munin-${svc}.service >/dev/null 2>&1 || : - /bin/systemctl stop munin-${svc}.service >/dev/null 2>&1 || : - done - fi - %endif -%else -# Older installs use sysvinit / upstart -if [ "$1" = 0 ]; then - for svc in fcgi-html fcgi-graph; do - service munin-${svc} stop &>/dev/null || : - /sbin/chkconfig --del munin-${svc} - done -fi -%endif %postun node -if [ "$1" = "0" ]; then - [ -d %{_sysconfdir}/munin/plugins ] && \ - find %{_sysconfdir}/munin/plugins/ -maxdepth 1 -type l -print0 | \ - xargs -0 rm || : +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_postun_with_restart munin-node.service +%systemd_postun_with_restart munin-asyncd.service +%else +if [ $1 -ge 1 ]; then + /sbin/service munin-node condrestart >/dev/null 2>&1 fi +%endif -%triggerun node -- munin-node < 1.4.7-2 -mv -f %{_sysconfdir}/munin/plugins %{_sysconfdir}/munin/plugins.bak || : -%triggerpostun node -- munin-node < 1.4.7-2 -mv -f %{_sysconfdir}/munin/plugins.bak %{_sysconfdir}/munin/plugins || : +%triggerun node -- munin-node < 2.0.40-1 +if ls %{_localstatedir}/log/munin/munin-node.log* >/dev/null 2>&1; then + mv -f %{_localstatedir}/log/munin/munin-node.log* %{_localstatedir}/log/munin-node/ +fi +chown -R munin:munin %{_sharedstatedir}/munin/spool/ >/dev/null 2>&1 + + +%post nginx +# Create log files +[ -f %{_localstatedir}/log/munin/munin-cgi-graph.log ] || \ + /usr/bin/install -m 0660 -o munin -g munin /dev/null %{_localstatedir}/log/munin/munin-cgi-graph.log +[ -f %{_localstatedir}/log/munin/munin-cgi-html.log ] || \ + /usr/bin/install -m 0660 -o munin -g munin /dev/null %{_localstatedir}/log/munin/munin-cgi-html.log +[ -f %{_localstatedir}/log/munin/munin-graph.log ] || \ + /usr/bin/install -m 0660 -o munin -g munin /dev/null %{_localstatedir}/log/munin/munin-graph.log + + +%post apache +# Create log files +[ -f %{_localstatedir}/log/munin/munin-cgi-graph.log ] || \ + /usr/bin/install -m 0660 -o munin -g apache /dev/null %{_localstatedir}/log/munin/munin-cgi-graph.log +[ -f %{_localstatedir}/log/munin/munin-cgi-html.log ] || \ + /usr/bin/install -m 0660 -o munin -g apache /dev/null %{_localstatedir}/log/munin/munin-cgi-html.log +[ -f %{_localstatedir}/log/munin/munin-graph.log ] || \ + /usr/bin/install -m 0660 -o munin -g apache /dev/null %{_localstatedir}/log/munin/munin-graph.log + + +%post cgi +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_post munin-cgi-graph.socket munin-cgi-graph.service +%systemd_post munin-cgi-html.socket munin-cgi-html.service +%else +/sbin/chkconfig --add munin-cgi-html +/sbin/chkconfig --add munin-cgi-graph +%endif + + +%preun cgi +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_preun munin-cgi-graph.socket munin-cgi-graph.service +%systemd_preun munin-cgi-html.socket munin-cgi-html.service +%else +if [ $1 -eq 0 ]; then + /sbin/service munin-cgi-html stop >/dev/null 2>&1 || : + /sbin/chkconfig --del munin-cgi-html + /sbin/service munin-cgi-graph stop >/dev/null 2>&1 || : + /sbin/chkconfig --del munin-cgi-graph +fi +%endif + + +%postun cgi +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_postun_with_restart munin-cgi-graph.socket munin-cgi-graph.service +%systemd_postun_with_restart munin-cgi-html.socket munin-cgi-html.service +%else +if [ $1 -ge 1 ]; then + /sbin/service munin-cgi-html condrestart >/dev/null 2>&1 + /sbin/service munin-cgi-graph condrestart >/dev/null 2>&1 +fi +%endif -# -# main package scripts -# %pre -/usr/bin/getent group munin >/dev/null || \ - /usr/sbin/groupadd -r munin -/usr/bin/getent passwd munin >/dev/null || \ - /usr/sbin/useradd -r -g munin -d /var/lib/munin -s /sbin/nologin \ - -c "Munin user" munin +getent group munin >/dev/null || groupadd -r munin +getent passwd munin >/dev/null || \ +useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 +%post +# Create log files +[ -f %{_localstatedir}/log/munin/munin-html.log ] || \ + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-html.log +[ -f %{_localstatedir}/log/munin/munin-limits.log ] || \ + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-limits.log +[ -f %{_localstatedir}/log/munin/munin-update.log ] || \ + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-update.log +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_post munin-rrdcached.service + + +%preun +%systemd_preun munin-rrdcached.service + + +%postun +%systemd_postun_with_restart munin-rrdcached.service +%endif + + %files -%doc %{_mandir}/man1/munindoc* -%doc %{_mandir}/man1/munin-sched* -%doc %{_mandir}/man3/Munin::Master* %doc %{_mandir}/man5/munin.conf* %doc %{_mandir}/man8/munin* + %dir %{_sysconfdir}/munin %dir %{_sysconfdir}/munin/conf.d -%dir %{_sysconfdir}/munin/static %dir %{_sysconfdir}/munin/templates -%dir %{_sysconfdir}/munin/templates/partial -%dir %{_datadir}/munin -%dir %{_datadir}/munin/plugins -#BUG. User apache does not necessarily exists when installing package munin -#since httpd is not required. it matters if httpd is later installed and -#the munin graph or html cgi programs are used - they log here. -#this is fixed with %%pre cgi, but if user tries to use the cgi programs -#without the cgi package, it's tough luck. -#proper fix may be to create the apache user in pre, but I'm not gonna do it. -%dir %attr(0775,apache,munin) /var/log/munin -%dir %attr(0775,root,munin) /var/lib/munin/plugin-state -%attr(0755,munin,munin) %dir /var/www/html/munin -%attr(0755,munin,munin) %dir /var/www/html/munin/static -%attr(0755,root,munin) /var/www/cgi-bin/munin-cgi-graph -%attr(0755,root,munin) /var/www/cgi-bin/munin-cgi-html -%attr(0644,munin,munin) /var/www/html/munin/static/* -%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/cron.d/munin -%config(noreplace) %{_sysconfdir}/httpd/conf.d/munin.conf +%dir %{_sysconfdir}/munin/static +%config(noreplace) %{_sysconfdir}/cron.d/munin %config(noreplace) %{_sysconfdir}/logrotate.d/munin %config(noreplace) %{_sysconfdir}/munin/munin.conf -%config(noreplace) %{_sysconfdir}/munin/munin-htpasswd +%config(noreplace) %{_sysconfdir}/munin/templates/* %config(noreplace) %{_sysconfdir}/munin/static/* -%config(noreplace) %{_sysconfdir}/munin/templates/partial/*.tmpl -%config(noreplace) %{_sysconfdir}/munin/templates/*.tmpl -%attr(0755,root,root) %{_bindir}/munin-check -%attr(0755,root,root) %{_bindir}/munin-cron -%attr(0755,root,root) %{_bindir}/munindoc -%attr(0755,root,root) %{_sbindir}/munin-sched + +%{_bindir}/munin-check +%{_bindir}/munin-cron +%dir %{_datadir}/munin %{_datadir}/munin/munin-datafile2storable %{_datadir}/munin/munin-graph %{_datadir}/munin/munin-html %{_datadir}/munin/munin-limits %{_datadir}/munin/munin-storable2datafile %{_datadir}/munin/munin-update -%{perl_vendorlib}/Munin/Master/*.pm +%{perl_vendorlib}/Munin/Master +%attr(-, munin, munin) %dir %{_sharedstatedir}/munin +%attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh +%config(noreplace) %attr(0600, munin, munin) %{_sharedstatedir}/munin/.ssh/config +%attr(-, munin, munin) %dir %{_localstatedir}/log/munin +%attr(-, munin, munin) %{_localstatedir}/www/html/munin +%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-html.log +%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-limits.log +%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-update.log +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%attr(-, munin, munin) %dir %{_sharedstatedir}/munin/rrdcached +%{_unitdir}/munin-rrdcached.service +%endif +%dir %{_datadir}/munin/plugins +%{_datadir}/munin/plugins/munin_stats %files node -%doc %{_mandir}/man1/munin-node* -%doc %{_mandir}/man1/munin-run* -%doc %{_mandir}/man3/Munin::Common* -%doc %{_mandir}/man3/Munin::Node* -%doc %{_mandir}/man3/Munin::Plugin* -%doc %{_mandir}/man5/munin-node* -%dir %{_sysconfdir}/munin/node.d -%dir %{_sysconfdir}/munin/plugins +%doc %{_mandir}/man1/munin* +%doc %{_mandir}/man3/Munin* +%doc %{_mandir}/man5/munin-node.conf* + %dir %{_sysconfdir}/munin -%dir %{_datadir}/munin -%dir %attr(-,munin,munin) /var/lib/munin -%dir %attr(0775,nobody,munin) /var/lib/munin-node/plugin-state -%dir %attr(0755,root,root) /var/log/munin-node +%dir %{_sysconfdir}/munin/plugin-conf.d +%dir %{_sysconfdir}/munin/plugins %config(noreplace) %{_sysconfdir}/logrotate.d/munin-node %config(noreplace) %{_sysconfdir}/munin/munin-node.conf -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/amavis -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/df -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/fw_ -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/hddtemp_smartctl -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/munin-node -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/postfix -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/postgres -%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/sendmail -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -/lib/systemd/system/munin-node.service +%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/* +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%{_unitdir}/munin-node.service +%{_unitdir}/munin-asyncd.service %else -%{_sysconfdir}/rc.d/init.d/munin-node +%{_initrddir}/munin-node +%{_initrddir}/munin-asyncd %endif -%if 0%{?rhel} > 6 || 0%{?fedora} > 19 -%{_prefix}/lib/firewalld/services/munin-node.xml -%endif -%attr(0755,root,root) %{_sbindir}/munin-run -%attr(0755,root,root) %{_sbindir}/munin-node -%attr(0755,root,root) %{_sbindir}/munin-node-configure -%attr(-,munin,munin) /var/lib/munin/plugin-state/yum.state -%exclude %{_datadir}/munin/plugins/dhcpd3 -%exclude %{_datadir}/munin/plugins/jmx_ -%exclude %{_datadir}/munin/plugins/ntp_ -%exclude %{_datadir}/munin/plugins/tomcat_ + +%{_bindir}/munindoc +%{_sbindir}/munin-node +%{_sbindir}/munin-node-configure +%{_sbindir}/munin-run +%{_sbindir}/munin-sched +%{_sbindir}/munin-asyncd +%dir %{_datadir}/munin +%{_datadir}/munin/munin-async %{_datadir}/munin/plugins/ +%exclude %{_datadir}/munin/plugins/jmx_ +%exclude %{_datadir}/munin/plugins/tomcat_ +%exclude %{_datadir}/munin/plugins/munin_stats %{perl_vendorlib}/Munin/Node %{perl_vendorlib}/Munin/Plugin* - - -%files async -%{_sbindir}/munin-asyncd -%{_datadir}/munin/munin-async -%dir /var/lib/munin/spool -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -/lib/systemd/system/munin-asyncd.service -%else -%{_sysconfdir}/rc.d/init.d/munin-asyncd +%if 0%{?rhel} >= 7 || 0%{?fedora} > 19 +%{_prefix}/lib/firewalld/services/munin-node.xml %endif +%attr(-, munin, munin) %dir %{_sharedstatedir}/munin +%attr(-, root, munin) %dir %{_sharedstatedir}/munin/plugin-state +%attr(-, root, munin) %dir %{_sharedstatedir}/munin/plugin-state/root +%attr(-, munin, munin) %dir %{_sharedstatedir}/munin/plugin-state/munin +%attr(-, munin, munin) %dir %{_sharedstatedir}/munin/spool +%attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh +%attr(0755, root, root) %dir %{_localstatedir}/log/munin-node +%attr(0640, root, root) %ghost %{_localstatedir}/log/munin-node/munin-node.log %files common -%doc Announce-2.0 COPYING ChangeLog Checklist HACKING.pod README RELEASE UPGRADING UPGRADING-1.4 +%license COPYING +%doc ChangeLog HACKING.pod perltidyrc httpd_munin.conf nginx_munin.conf + %dir %{perl_vendorlib}/Munin -%dir %attr(-,munin,munin) %{_localstatedir}/run/%{name}/ -%if 0%{?rhel} > 6 || 0%{?fedora} > 14 -%config(noreplace) %{_tmpfilesdir}/%{name}.conf -%endif %{perl_vendorlib}/Munin/Common +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%{_tmpfilesdir}/%{name}.conf +%attr(-, munin, munin) %dir /run/munin +%else +%attr(-, munin, munin) %dir %{_localstatedir}/run/munin +%endif -%files java-plugins -%{_datadir}/java/munin-jmx-plugins.jar +%files plugins-java +%{_javadir}/munin-jmx-plugins.jar %{_datadir}/munin/plugins/jmx_ -%files ruby-plugins +%files plugins-ruby %{_datadir}/munin/plugins/tomcat_ -%files cgi -%config(noreplace) %{_sysconfdir}/httpd/conf.d/munin-cgi.conf -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -/lib/systemd/system/munin-fcgi-html.service -/lib/systemd/system/munin-fcgi-graph.service -%endif -%attr(0755,root,root) %dir /var/lib/munin/cgi-tmp -%attr(0755,apache,apache) %dir /var/lib/munin/cgi-tmp/munin-cgi-graph - - %files nginx -%config(noreplace) %{_sysconfdir}/nginx/conf.d/munin.conf -%if 0%{?rhel} > 6 || 0%{?fedora} > 15 -/lib/systemd/system/munin-fcgi-html.service -/lib/systemd/system/munin-fcgi-graph.service +%attr(0775, munin, munin) %dir %{_sharedstatedir}/munin/cgi-tmp +%attr(0660, munin, munin) %ghost %{_localstatedir}/log/munin/munin-cgi-graph.log +%attr(0660, munin, munin) %ghost %{_localstatedir}/log/munin/munin-cgi-html.log +%attr(0660, munin, munin) %ghost %{_localstatedir}/log/munin/munin-graph.log + + +%files apache +%attr(0775, munin, apache) %dir %{_sharedstatedir}/munin/cgi-tmp +%attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-graph.log +%attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-html.log +%attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-graph.log + + +%files cgi +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%{_unitdir}/munin-cgi-graph.service +%{_unitdir}/munin-cgi-graph.socket +%{_unitdir}/munin-cgi-html.service +%{_unitdir}/munin-cgi-html.socket %else -%{_sysconfdir}/rc.d/init.d/munin-fcgi-html -%{_sysconfdir}/rc.d/init.d/munin-fcgi-graph +%{_initrddir}/munin-cgi-html +%{_initrddir}/munin-cgi-graph %endif -%files netip-plugins -%{_datadir}/munin/plugins/dhcpd3 -%{_datadir}/munin/plugins/ntp_ - - %changelog +* Fri Aug 24 2018 Kim B. Heino - 2.0.40-1 +- Upgrade to 2.0.40 +- This is major update with rpm package reorganize and directory changes + * Fri Jul 13 2018 Fedora Release Engineering - 2.0.33-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild diff --git a/munin.tmpfilesd b/munin.tmpfilesd new file mode 100644 index 0000000..3071b15 --- /dev/null +++ b/munin.tmpfilesd @@ -0,0 +1,3 @@ +d /run/munin 0755 munin munin - +a+ /run/munin/ - - - - user:root:rwx +a+ /run/munin/ - - - - mask:rwx diff --git a/mysql_ b/mysql_ new file mode 100755 index 0000000..b22cf47 --- /dev/null +++ b/mysql_ @@ -0,0 +1,2541 @@ +#!/usr/bin/perl + +=encoding utf8 + +=head1 NAME + +mysql_ - Munin plugin to display misc MySQL server status + +=head1 APPLICABLE SYSTEMS + +Any MySQL platform, tested by the authors on: +* MySQL 5.6.12 +* MySQL 5.5.32, 5.5.37 +* MySQL 5.1.29, +* MySQL 5.0.51 +* MariaDB 5.5.39 +* MariaDB-5.5.39(galera). +* MariaDB 10.0.18 + +Plugins: +* MariaDB-10 Query Response Time: https://mariadb.com/kb/en/mariadb/query_response_time-plugin/ + +Information Schema tables: +* User statistics - MariaDB-5.2+, OurDelta, Percona Server - https://mariadb.com/kb/en/mariadb/user-statistics + +=head1 CONFIGURATION + +This script is used to generate data for several graphs. To generate +data for one specific graph, you need to create a symbolic link with a +name like mysql_ to this script. + +If you need to run against multiple MySQL instances on the same host, +create your symlinks with names like mysql_ where N is any +non-negative integer. You must also set the env.cachenamespace variable +to a unique value for each group of symlinks. + +To get a list of symlinks that can be created, run: + + ./mysql_ suggest + +In addition you might need to specify connection parameters in the +plugin configuration to override the defaults. These are the defaults: + + [mysql_*] + env.mysqlconnection DBI:mysql:information_schema + env.mysqluser root + +Non-default example: + + [mysql_*] + env.mysqlconnection DBI:mysql:information_schema;host=127.0.0.1;port=3306 + env.mysqluser munin + env.mysqlpassword geheim + env.cachenamespace munin_mysql_pri + [mysql2_*] + env.mysqlconnection DBI:mysql:information_schema;host=127.0.0.1;port=13306 + env.mysqluser munin + env.mysqlpassword ryuWyawEv + env.cachenamespace munin_mysql_alt + [mysql10_*] + user munin + env.mysqluser munin + env.mysqlconnection DBI:mysql:information_schema;mysql_read_default_file=/etc/munin/.my-10.cnf + env.cachenamespace munin_mysql_10 + # here the [client] section of /etc/munin/.my-10.cnf is read. socket= can + # be specified here. + +Creating a munin user: + + CREATE USER 'munin'@'localhost' IDENTIFIED BY 'ryuWyawEv'; + +or with a unix_socket plugin (INSTALL PLUGIN unix_socket SONAME 'auth_socket') + + CREATE USER 'munin'@'localhost' IDENTIFIED WITH unix_socket; + +Note: requires 'user munin' in the configuration. + +The minimum required privileges of the munin database user is: + + GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'munin'@'localhost'; + + +Warning and critical values can be set via the environment in the usual way. +For example: + + [mysql_replication] + env.slave_io_running_warning 0.5 + env.slave_sql_running_warning 0.5 + env.seconds_behind_master_warning 300 + env.seconds_behind_master_critical 600 + +=head1 DEPENDENCIES + +=over + +=item Cache::Cache + +The plugin uses shared memory to cache the statistics gathered from +MySQL. This ensures minimal inpact on the MySQL server. + +=item DBD::mysql + +=back + +=head1 INTERPRETATION + +=head2 InnoDB + +The statistics from innodb are mainly collected from the command + + SHOW ENGINE INNODB STATUS + +A nice walk through is found at +L + +Undo logs: +L + +=head2 The graphs + +FIX point to relevant sections in the MySQL manual and other www +resources for each graph + +=over + +=item mysql_replication + +slave_io_running and slave_sql_running both translate the "Yes" values to 0 and +anything else to 1 for their respective fields in the "SHOW SLAVE STATUS" output. +This can be used to warn on slave failure if the warning and critical values +are set as seen in a previous section. + +=item wsrep_cluster_status + +"Primary" is translated 0 and "non-Primary" to 1. + +=back + +=head1 COPYRIGHT + + Copyright (C) 2014-2015 Daniel Black, Open Query + Copyright (C) 2008-2009 Kjell-Magne Øierud + +=head1 LICENSE + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 dated June, 1991. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +=head1 VERSION + +git-master + a few munin modifications + +This plugin was downloaded from L + +=head1 MAGICK MARKERS + + #%# family=auto + #%# capabilities=suggest autoconf + +=cut + +use warnings; +use strict; +use utf8; + +use DBI; +use File::Basename; +use Math::BigInt; # Used to append "=> lib 'GMP'" here, but GMP caused + # segfault on some occasions. Removed as I don't + # think the tiny performance boost is worth the + # debugging effort. +use Storable qw(nfreeze thaw); + +use Munin::Plugin; + +my $has_cache; + +BEGIN { + eval 'require Cache::SharedMemoryCache'; + $has_cache = $@ ? 0 : 1; +} + + +#--------------------------------------------------------------------- +# C O N F I G +#--------------------------------------------------------------------- + +my %config = ( + 'dsn' => $ENV{'mysqlconnection'} || 'DBI:mysql:information_schema', + 'user' => $ENV{'mysqluser'} || 'root', + 'password' => $ENV{'mysqlpassword'} || '', + 'cache_namespace' => $ENV{'cachenamespace'} || 'munin_mysql', +); + + +#--------------------------------------------------------------------- +# C A C H E +#--------------------------------------------------------------------- + +my %cache_options = ( + 'namespace' => $config{cache_namespace}, + 'default_expires_in' => 60, +); + +my $shared_memory_cache ; +if ($has_cache) +{ + $shared_memory_cache = Cache::SharedMemoryCache->new(\%cache_options) + or die("Couldn't instantiate SharedMemoryCache"); +} + +#--------------------------------------------------------------------- +# G R A P H D E F I N I T I O N S +#--------------------------------------------------------------------- + +# These are defaults to save typing in the graph definitions +my %defaults = ( + global_attrs => { + args => '--base 1000', + }, + data_source_attrs => { + min => '0', + type => 'DERIVE', + draw => 'AREASTACK', + }, +); + +# %graphs contains the graph definitions, it is indexed on the graph +# name. The information stored for each graph is used for both showing +# data source values and for printing the graph configuration. Each +# graph follows the following format: +# +# $graphs{NAME} => { +# config => { +# # The global attributes for this graph +# global_attrs => {} +# # Attributes common to all data sources in this graph +# data_source_attrs => {} +# }, +# data_sources => [ +# # NAME - The name of the data source (e.g. variable names +# # from SHOW STATUS) +# # DATA_SOURCE_ATTRS - key-value pairs with data source +# # attributes +# {name => 'NAME', (DATA_SOURCE_ATTRS)}, +# {...}, +# ], +# +# Note for 'cdef' fields: "%s" is replaced with the original fieldname +my %graphs = (); + +#--------------------------------------------------------------------- + + +$graphs{wsrep_cluster_status} = { + config => { + global_attrs => { + title => 'Galera Status', + vlabel => 'PRIMARY', + }, + data_source_attrs => { + draw => 'LINE1', + min => '0', + max => '1', + }, + }, + data_sources => [ + {name => 'wsrep_cluster_status', label => '0-Primary, 1-Non-Primary', + info => 'If the host is primary', + type => 'GAUGE', + critical => '1'}, + ], +}; + +$graphs{wsrep_cluster_size} = { + config => { + global_attrs => { + title => 'Galera cluster size', + vlabel => 'Hosts', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_cluster_size', label => 'Cluster size', + info => 'The number of hosts in the cluster.', + type => 'GAUGE'}, + ], +}; + + +# http://www.codership.com/wiki/doku.php?id=galera_node_fsm +$graphs{wsrep_local_state} = { + config => { + global_attrs => { + title => 'Galera node state', + vlabel => 'State (galera_node_fsm)', + args => '--lower-limit 0 --upper-limit 6', + }, + data_source_attrs => { + draw => 'LINE1', + min => '0', + max => '6', + }, + }, + data_sources => [ + {name => 'wsrep_local_state', label => '1-Joining, 2-Donor, 3-Joined, 4-Synced, 5-Donor, 6-Join after Donor ', + info => 'The state of the node in the cluster.', + type => 'GAUGE', + warning => '3.5:4.5'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{wsrep_transactions} = { + config => { + global_attrs => { + title => 'Galera transactions', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_last_committed', label => 'Committed transactions', + info => '# of committed transactions.', + type => 'COUNTER', + min => 0}, + {name => 'wsrep_local_commits', label => 'Locally Committed transactions', + info => '# of locally committed transactions.', + type => 'COUNTER', + min => 0}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{wsrep_writesets} = { + config => { + global_attrs => { + title => 'Galera writesets', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_replicated', label => 'Writesets sent', + info => '# of writesets sent to other nodes', + type => 'COUNTER', + min => '0', + graph => 'no'}, + {name => 'wsrep_received', label => 'Writesets received', + info => '# of writesets received from other nodes', + type => 'COUNTER', + min => '0', + negative => 'wsrep_replicated'}, + ], +}; + +#------------------------- + + +$graphs{wsrep_writesetbytes} = { + config => { + global_attrs => { + title => 'Galera writesets bytes/sec', + }, + data_source_attrs => { + }, + }, + data_sources => [ + {name => 'wsrep_received_bytes', label => 'Writesets bytes received', + info => '# of bytes in writesets received from other nodes', + type => 'DERIVE', + min => 0, + graph => 'no'}, + {name => 'wsrep_replicated_bytes', label => 'Writesets bytes sent', + info => '# of bytes in writesets sent to other nodes', + type => 'DERIVE', + draw => 'LINE1', + min => 0, + negative => 'wsrep_received_bytes'}, + {name => 'wsrep_repl_keys_bytes', label => 'Writeset key size sent', + info => '# of bytes in writesets of keys sent to other nodes', + type => 'DERIVE', + min => 0}, + {name => 'wsrep_repl_data_bytes', label => 'Writeset data size sent', + info => '# of bytes in writesets of data sent to other nodes', + type => 'DERIVE', + min => 0}, + {name => 'wsrep_repl_other_bytes', label => 'Writeset other size sent', + info => '# of bytes in writesets of other data sent to other nodes', + type => 'DERIVE', + min => 0}, + ], +}; + + +#------------------------- + +$graphs{wsrep_errors} = { + config => { + global_attrs => { + title => 'Galera transaction problems' + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_local_cert_failures', label => 'Certification failures', + type => 'DERIVE', + min => 0}, + {name => 'wsrep_local_bf_aborts', label => 'Aborted local transactions', + type => 'DERIVE', + min => 0}, + {name => 'wsrep_local_replays', label => 'Replays', + type => 'DERIVE', + min => 0}, + ], +}; + +#------------------------- + +$graphs{wsrep_queue} = { + config => { + global_attrs => { + title => 'Galera queues', + vlabel => 'queue length received (-) / sent (+) per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_local_recv_queue', label => 'Receive queue length', + type => 'GAUGE', + graph => 'no'}, + {name => 'wsrep_local_recv_queue_min', label => 'Receive queue length min', + type => 'GAUGE', + graph => 'no'}, + {name => 'wsrep_local_recv_queue_avg', label => 'Average receive queue length', + type => 'GAUGE', + graph => 'no'}, + {name => 'wsrep_local_recv_queue_max', label => 'Receive queue length max', + type => 'GAUGE', + graph => 'no'}, + {name => 'wsrep_local_send_queue', label => 'Send queue length', + type => 'GAUGE', + negative => 'wsrep_local_recv_queue'}, + {name => 'wsrep_local_send_queue_min', label => 'Send queue length min', + type => 'GAUGE', + negative => 'wsrep_local_recv_queue_min'}, + {name => 'wsrep_local_send_queue_avg', label => 'Average send queue length', + type => 'GAUGE', + negative => 'wsrep_local_recv_queue_avg'}, + {name => 'wsrep_local_send_queue_max', label => 'Send queue length max', + type => 'GAUGE', + negative => 'wsrep_local_recv_queue_max'}, + ], +}; + +#------------------------- + +$graphs{wsrep_concurrency} = { + config => { + global_attrs => { + title => 'Galera Performance - Apply to Commit', + vlabel => 'commit + / apply - ' + }, + data_source_attrs => { + draw => 'LINE1', + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'wsrep_apply_window', label => 'apply window', + graph => 'no'}, + {name => 'wsrep_apply_oooe', label => 'apply out of order', + graph => 'no'}, + {name => 'wsrep_apply_oool', label => 'apply out of order (slowness)', + graph => 'no'}, + {name => 'wsrep_commit_window', label => 'commit window', + negative => 'wsrep_apply_window'}, + {name => 'wsrep_commit_oooe', label => 'commit out of order', + negative => 'wsrep_apply_oooe'}, + {name => 'wsrep_commit_oool', label => 'commit out of order (slowness)', + negative => 'wsrep_apply_oool'}, + ], +}; + +#------------------------- + +$graphs{wsrep_flow} = { + config => { + global_attrs => { + title => 'Galera flow control', + vlabel => 'events received (-) / sent (+) per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_flow_control_recv', label => 'Pause events received', + type => 'DERIVE', + min => 0, + graph => 'no'}, + {name => 'wsrep_flow_control_sent', label => 'Pause events sent', + type => 'DERIVE', + min => 0, + negative => 'wsrep_flow_control_recv'}, + ], + }; + + + +#------------------------- + +$graphs{wsrep_flow_paused} = { + config => { + global_attrs => { + title => 'Galera flow control paused ratio', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_flow_control_paused', label => 'Ratio flow control was paused', + type => 'GAUGE', + min => '0', + max => '1', + warning => 0.1, + critical => 0.9}, + ], + }; + +#------------------------- + +$graphs{wsrep_flow_paused_ns} = { + config => { + global_attrs => { + title => 'Galera flow control paused time', + vlabel => 'nanoseconds', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_flow_control_paused_ns', label => 'Time flow control was paused (ns)', + min => '0', + warning => 20000, + critical => 1000000}, + ], + }; + +#------------------------- + +$graphs{wsrep_distance} = { + config => { + global_attrs => { + title => 'Galera distance', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'wsrep_cert_deps_distance', label => 'cert_deps_distance', + type => 'GAUGE'}, + {name => 'wsrep_cert_index_size', label => 'wsrep_cert_index_size', + type => 'GAUGE'}, + {name => 'wsrep_slave_threads', label => 'wsrep_slave_threads', + type => 'GAUGE'}, + {name => 'wsrep_commit_window', label => 'commit_window', + type => 'GAUGE'}, + ], +}; + +#------------------------- +$graphs{bin_relay_log} = { + config => { + global_attrs => { + title => 'Binary/Relay Logs', + vlabel => 'Log activity', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'Binlog_cache_disk_use', label => 'Binlog Cache Disk Use'}, + {name => 'Binlog_cache_use', label => 'Binlog Cache Use'}, + {name => 'Binlog_stmt_cache_disk_use', label => 'Binlog Statement Cache Disk Use'}, + {name => 'Binlog_stmt_cache_use', label => 'Binlog Statement Cache Use'}, + {name => 'ma_binlog_size', label => 'Binary Log Space'}, + {name => 'relay_log_space', label => 'Relay Log Space'}, + ], +}; + +#------------------------- +$graphs{binlog_groupcommit} = { + config => { + global_attrs => { + title => 'Binary Log Group Commits', + vlabel => 'Commits/Groups', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'Binlog_commits', label => 'Binlog commits'}, + {name => 'Binlog_group_commits', label => 'Binlog Group Commits'}, + {name => 'Binlog_group_commit_trigger_count', label => 'Binlog Groups because of binlog_commit_wait_count'}, + {name => 'Binlog_group_commit_trigger_timeout', label => 'Binlog Groups because of binlog_commit_wait_usec'}, + {name => 'Binlog_group_commit_trigger_lock_wait', label => 'Binlog Groups because of transactions'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{commands} = { + config => { + global_attrs => { + title => 'Command Counters', + vlabel => 'Commands per ${graph_period}', + total => 'Questions', + }, + data_source_attrs => {}, + }, + data_sources => [ + {name => 'Com_delete', label => 'Delete'}, + {name => 'Com_insert', label => 'Insert'}, + {name => 'Com_insert_select', label => 'Insert select'}, + {name => 'Com_load', label => 'Load Data'}, + {name => 'Com_replace', label => 'Replace'}, + {name => 'Com_replace_select', label => 'Replace select'}, + {name => 'Com_select', label => 'Select'}, + {name => 'Com_update', label => 'Update'}, + {name => 'Com_update_multi', label => 'Update multi'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{connections} = { + config => { + global_attrs => { + title => 'Connections', + vlabel => 'Connections per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'max_connections', label => 'Max connections', + type => 'GAUGE', + draw => 'AREA', + colour => 'cdcfc4'}, + {name => 'Max_used_connections', label => 'Max used', + type => 'GAUGE', + draw => 'AREA', + colour => 'ffd660'}, + {name => 'Aborted_clients', label => 'Aborted clients'}, + {name => 'Aborted_connects', label => 'Aborted connects'}, + {name => 'Threads_connected', label => 'Threads connected', + type => 'GAUGE'}, + {name => 'Threads_running', label => 'Threads running', + type => 'GAUGE'}, + {name => 'Connections', label => 'New connections'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{files} = { + config => { + global_attrs => { + title => 'Files', + }, + data_source_attrs => { + type => 'GAUGE', + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'open_files_limit', label => 'File Limit', + draw => 'AREA', + colour => 'cdcfc4'}, + {name => 'Open_files', label => 'Open files', + type => 'DERIVE', + min => 0}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{tables} = { + config => { + global_attrs => { + title => 'Tables', + }, + data_source_attrs => { + type => 'GAUGE', + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'table_open_cache', label => 'Table cache', + draw => 'AREA', + colour => 'cdcfc4'}, + {name => 'innodb_open_files', label => 'Innodb Table Cache Limit', + draw => 'AREA', + colour => 'ffd660'}, + {name => 'Open_tables', label => 'Open tables'}, + {name => 'Slave_open_temp_tables', label => 'Open Slave Temp Tables'}, + {name => 'Opened_tables', label => 'Opened tables', + type => 'DERIVE', + min => 0}, + {name => 'Opened_views', label => 'Opened Views', + type => 'DERIVE', + min => 0}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{table_definitions} = { + config => { + global_attrs => { + title => 'Tables Definitions', + }, + data_source_attrs => { + type => 'GAUGE', + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'table_definition_cache', label => 'Cache Limit', + draw => 'AREA', + colour => 'cdcfc4'}, + {name => 'Open_table_definitions', label => 'Open'}, + {name => 'Opened_table_definitions', label => 'Opened', + type => 'DERIVE', + min => 0}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_bpool} = { + config => { + global_attrs => { + title => 'InnoDB Buffer Pool', + vlabel => 'Pages', + args => '--base 1024', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'ib_bpool_size', label => 'Buffer pool size', + draw => 'AREA', + colour => 'ffd660'}, + {name => 'ib_bpool_dbpages', label => 'Database pages', + draw => 'AREA', + colour => 'cdcfc4'}, + {name => 'ib_bpool_free', label => 'Free pages'}, + {name => 'ib_bpool_modpages', label => 'Modified pages'}, + {name => 'ib_bpool_oldpages', label => 'Old pages'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_bpool_act} = { + config => { + global_attrs => { + title => 'InnoDB Buffer Pool Activity', + vlabel => 'Pages per ${graph_period}', + total => 'Total', + }, + data_source_attrs => { + draw => 'LINE2', + }, + }, + data_sources => [ + {name => 'ib_bpool_read', label => 'Read'}, + {name => 'ib_bpool_created', label => 'Created'}, + {name => 'ib_bpool_written', label => 'Written'}, + {name => 'ib_bpool_made_young', label => 'Made young'}, + {name => 'ib_bpool_made_not_young', label => 'Made not young'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_bpool_internal_breakdown} = { + config => { + global_attrs => { + title => 'InnoDB Buffer Pool Internal breakdown', + args => '--base 1024 --lower-limit 0', + vlabel => 'bytes', + }, + data_source_attrs => { + min => '0', + draw => 'AREASTACK', + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'ib_bpool_internal_adaptive_hash_size_const', label => 'Adaptive Hash const'}, + {name => 'ib_bpool_internal_adaptive_hash_size_var', label => 'Adaptive Hash var'}, + {name => 'ib_bpool_internal_page_hash_size_total', label => 'Page Hash'}, + {name => 'ib_bpool_internal_dictionary_cache_size_const', label => 'Dictionary const'}, + {name => 'ib_bpool_internal_dictionary_cache_size_var', label => 'Dictionary var'}, + {name => 'ib_bpool_internal_file_system_size_const', label => 'Filesystem const'}, + {name => 'ib_bpool_internal_file_system_size_var', label => 'Filesystem var'}, + {name => 'ib_bpool_internal_lock_system_size_const', label => 'Lock system const'}, + {name => 'ib_bpool_internal_lock_system_size_var', label => 'Lock system var'}, + {name => 'ib_bpool_internal_recovery_system_size_const', label => 'Recovery system const'}, + {name => 'ib_bpool_internal_recovery_system_size_var', label => 'Recovery system var'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_insert_buf} = { + config => { + global_attrs => { + title => 'InnoDB Insert Buffer', + vlabel => 'Activity per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'ib_ibuf_inserts', label => 'Merge Inserts'}, + {name => 'ib_ibuf_delete', label => 'Merge Deletes'}, + {name => 'ib_ibuf_merged_rec', label => 'Merged Records'}, + {name => 'ib_ibuf_merges', label => 'Merges'}, + {name => 'ib_ibuf_discard_inserts', label => 'Discard Inserts'}, + {name => 'ib_ibuf_discard_delete', label => 'Discard Deletes'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_adaptive_hash} = { + config => { + global_attrs => { + title => 'InnoDB Adaptive Hash Optimiser', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'Innodb_adaptive_hash_hash_searches', label => 'Hash Searches'}, + {name => 'Innodb_adaptive_hash_non_hash_searches', label => 'Nonhash Searches'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_io} = { + config => { + global_attrs => { + title => 'InnoDB IO', + vlabel => 'IO operations per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'ib_io_read', label => 'File reads'}, + {name => 'ib_io_write', label => 'File writes'}, + {name => 'ib_io_log', label => 'Log writes'}, + {name => 'ib_io_fsync', label => 'File syncs'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_io_pend} = { + config => { + global_attrs => { + title => 'InnoDB IO Pending', + vlabel => 'Pending operations', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'ib_iop_log', label => 'AIO Log'}, + {name => 'ib_iop_sync', label => 'AIO Sync'}, + {name => 'ib_iop_flush_bpool', label => 'Buf Pool Flush'}, + {name => 'ib_iop_flush_log', label => 'Log Flushes'}, + {name => 'ib_iop_ibuf_aio', label => 'Insert Buf AIO Read'}, + {name => 'ib_iop_aioread', label => 'Normal AIO Reads'}, + {name => 'ib_iop_aiowrite', label => 'Normal AIO Writes'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_log} = { + config => { + global_attrs => { + title => 'InnoDB Log', + vlabel => 'Log activity per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'innodb_log_buffer_size', label => 'Buffer Size', + type => 'GAUGE', + draw => 'AREA', + colour => 'fafd9e'}, + {name => 'ib_log_flush', label => 'KB Flushed'}, + {name => 'ib_log_written', label => 'KB Written'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_rows} = { + config => { + global_attrs => { + title => 'InnoDB Row Operations', + vlabel => 'Operations per ${graph_period}', + total => 'Total', + }, + data_source_attrs => {}, + }, + data_sources => [ + {name => 'Innodb_rows_deleted', label => 'Deletes'}, + {name => 'Innodb_rows_inserted', label => 'Inserts'}, + {name => 'Innodb_rows_read', label => 'Reads'}, + {name => 'Innodb_rows_updated', label => 'Updates'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_semaphores} = { + config => { + global_attrs => { + title => 'InnoDB Semaphores', + vlabel => 'Semaphores per ${graph_period}', + }, + data_source_attrs => { + draw => 'AREASTACK', + }, + }, + data_sources => [ + {name => 'ib_spin_rounds', label => 'Spin Rounds'}, + {name => 'ib_spin_waits', label => 'Spin Waits'}, + {name => 'ib_os_waits', label => 'OS Waits'}, + {name => 'ib_rw_shared_rounds', label => 'RW/S Rounds'}, + {name => 'ib_rw_shared_waits', label => 'RW/S Waits'}, + {name => 'ib_rw_shared_os_waits', label => 'RW/S OS Waits'}, + {name => 'ib_rw_excl_rounds', label => 'RW/X Rounds'}, + {name => 'ib_rw_excl_waits', label => 'RW/X Waits'}, + {name => 'ib_rw_excl_os_waits', label => 'RW/X OS Waits'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_tnx} = { + config => { + global_attrs => { + title => 'InnoDB Transactions', + vlabel => 'Transactions per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'ib_tnx', label => 'Transactions created'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_history_list_length} = { + config => { + global_attrs => { + title => 'InnoDB History List Length', + vlabel => 'Undo log units', + }, + data_source_attrs => { + draw => 'LINE1', + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'ib_tnx_hist', label => 'History List Length'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_srv_master_thread} = { + config => { + global_attrs => { + title => 'InnoDB Master Thread', + }, + data_source_attrs => { + type => 'DERIVE', + draw => 'AREASTACK', + }, + }, + data_sources => [ + {name => 'ib_srv_main_flush_loops', label => 'Flush Loop'}, + {name => 'ib_srv_main_background_loops', label => 'Background Loop'}, + {name => 'ib_srv_main_flushs_writes', label => 'Flushes/Writes', draw => 'LINE1'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_queries} = { + config => { + global_attrs => { + title => 'InnoDB Engine Queries and Transactions', + args => '--lower-limit 0', + }, + data_source_attrs => { + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'ib_innodb_queries', label => 'Active'}, + {name => 'ib_innodb_transactions_active', label => 'Transactions'}, + {name => 'ib_innodb_query_queue_len', label => 'Queued'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_read_views} = { + config => { + global_attrs => { + title => 'InnoDB Read Views', + args => '--lower-limit 0', + }, + data_source_attrs => { + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'ib_innodb_read_views', label => 'Views'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{innodb_descriptors} = { + config => { + global_attrs => { + title => 'InnoDB Descriptors', + args => '--lower-limit 0', + }, + data_source_attrs => { + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'ib_innodb_descriptors', label => 'Descriptors'}, + {name => 'ib_innodb_descriptors_max', label => 'Max', draw => 'AREA', colour => 'ffd660'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{performance} = { + config => { + global_attrs => { + title => 'Performance Schema Losses', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'Performance_schema_cond_classes_lost', label => 'Condition classes'}, + {name => 'Performance_schema_cond_instances_lost', label => 'Condition instances'}, + {name => 'Performance_schema_file_classes_lost', label => 'File classes'}, + {name => 'Performance_schema_file_handles_lost', label => 'File handles'}, + {name => 'Performance_schema_file_instances_lost', label => 'File instances'}, + {name => 'Performance_schema_locker_lost', label => 'Locker'}, + {name => 'Performance_schema_mutex_classes_lost', label => 'Mutex classes'}, + {name => 'Performance_schema_mutex_instances_lost', label => 'Mutex instances'}, + {name => 'Performance_schema_rwlock_classes_lost', label => 'Read/Write lock classes'}, + {name => 'Performance_schema_rwlock_instances_lost', label => 'Read/Write lock instances'}, + {name => 'Performance_schema_table_handles_lost', label => 'Table handles'}, + {name => 'Performance_schema_table_instances_lost', label => 'Table instances'}, + {name => 'Performance_schema_thread_classes_lost', label => 'Thread classes'}, + {name => 'Performance_schema_thread_instances_lost', label => 'Thread instances'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{myisam_indexes} = { + config => { + global_attrs => { + title => 'MyISAM Indexes', + vlabel => 'Requests per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + }, + }, + data_sources => [ + {name => 'Key_read_requests', label => 'Key read requests'}, + {name => 'Key_reads', label => 'Key reads'}, + {name => 'Key_write_requests', label => 'Key write requests'}, + {name => 'Key_writes', label => 'Key writes'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{network_traffic} = { + config => { + global_attrs => { + title => 'Network Traffic', + args => '--base 1024', + vlabel => 'Bytes received (-) / sent (+) per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + }, + }, + data_sources => [ + {name => 'Bytes_received', label => 'Bytes transferred', + graph => 'no'}, + {name => 'Bytes_sent', label => 'Bytes transferred', + negative => 'Bytes_received'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{qcache} = { + config => { + global_attrs => { + title => 'Query Cache', + vlabel => 'Commands per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'Qcache_queries_in_cache', label => 'Queries in cache', type => 'GAUGE'}, + {name => 'Qcache_hits', label => 'Cache hits'}, + {name => 'Subquery_cache_hit', label => 'Subquery Cache hits'}, + {name => 'Subquery_cache_miss', label => 'Subquery Cache misses'}, + {name => 'Qcache_inserts', label => 'Inserts'}, + {name => 'Qcache_not_cached', label => 'Not cached'}, + {name => 'Qcache_lowmem_prunes', label => 'Low-memory prunes'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{qcache_mem} = { + config => { + global_attrs => { + title => 'Query Cache Memory', + vlabel => 'Bytes', + args => '--base 1024 --lower-limit 0', + }, + data_source_attrs => { + draw => 'AREA', + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'query_cache_size', label => 'Cache size'}, + {name => 'Qcache_free_memory', label => 'Free mem'}, + ], +}; + + +#--------------------------------------------------------------------- + +$graphs{max_mem} = { + config => { + global_attrs => { + title => 'Maximum memory that MySQL could use', + vlabel => 'Bytes', + args => '--base 1024 --lower-limit 0', + }, + data_source_attrs => { + draw => 'AREASTACK', + type => 'GAUGE', + }, + }, + data_sources => [ + {name => 'mysql_connection_memory', label => 'Connection Memory'}, + {name => 'mysql_base_memory', label => 'Base MySQL Memory'}, + ], +}; + + +#--------------------------------------------------------------------- + +$graphs{replication} = { + config => { + global_attrs => { + title => 'Replication', + vlabel => 'Activity', + }, + data_source_attrs => { + draw => 'LINE1', + }, + }, + data_sources => [ + {name => 'slave_io_running', label => 'Slave IO Running', + type => 'GAUGE', + draw => 'AREA'}, + {name => 'slave_sql_running', label => 'Slave SQL Running', + type => 'GAUGE', + draw => 'AREA'}, + {name => 'Slave_retried_transactions', label => 'Retried Transactions'}, + {name => 'Slave_open_temp_tables', label => 'Open Temp Tables'}, + {name => 'seconds_behind_master', label => 'Secs Behind Master', + type => 'GAUGE'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{select_types} = { + config => { + global_attrs => { + title => 'Select types', + vlabel => 'Commands per ${graph_period}', + total => 'Total', + }, + data_source_attrs => {}, + }, + data_sources => [ + {name => 'Select_full_join', label => 'Full join'}, + {name => 'Select_full_range_join', label => 'Full range'}, + {name => 'Select_range', label => 'Range'}, + {name => 'Select_range_check', label => 'Range check'}, + {name => 'Select_scan', label => 'Scan'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{slow} = { + config => { + global_attrs => { + title => 'Slow Queries', + vlabel => 'Slow queries per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + }, + }, + data_sources => [ + {name => 'Slow_queries', label => 'Slow queries'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{sorts} = { + config => { + global_attrs => { + title => 'Sorts', + vlabel => 'Sorts / ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + }, + }, + data_sources => [ + {name => 'Sort_rows', label => 'Rows sorted'}, + {name => 'Sort_range', label => 'Range'}, + {name => 'Sort_merge_passes', label => 'Merge passes'}, + {name => 'Sort_scan', label => 'Scan'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{table_locks} = { + config => { + global_attrs => { + title => 'Table locks', + vlabel => 'locks per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + }, + }, + data_sources => [ + {name => 'Table_locks_immediate', label => 'Table locks immed'}, + {name => 'Table_locks_waited', label => 'Table locks waited'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{tmp_tables} = { + config => { + global_attrs => { + title => 'Temporary objects', + vlabel => 'Objects per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + }, + }, + data_sources => [ + {name => 'Created_tmp_disk_tables', label => 'Temp disk tables'}, + {name => 'Created_tmp_tables', label => 'Temp tables'}, + {name => 'Created_tmp_files', label => 'Temp files'}, + ], +}; + + +#--------------------------------------------------------------------- + +$graphs{rows} = { + config => { + global_attrs => { + title => 'Rows', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Rows_read', label => 'Read'}, + {name => 'Rows_sent', label => 'Sent'}, + {name => 'Rows_tmp_read', label => 'Temp Read'}, + ], + }; + +#--------------------------------------------------------------------- + +$graphs{handler_read} = { + config => { + global_attrs => { + title => 'Read Handler', + }, + data_source_attrs => { + draw => 'AREASTACK', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Handler_read_first', label => 'Key First'}, + {name => 'Handler_read_key', label => 'Key Read'}, + {name => 'Handler_read_last', label => 'Key Last'}, + {name => 'Handler_read_prev', label => 'Key Prev'}, + {name => 'Handler_read_rnd', label => 'Row position'}, + {name => 'Handler_read_rnd_deleted', label => 'Row position delete'}, + {name => 'Handler_read_rnd_next', label => 'Row position next'}, + ], + }; + +#--------------------------------------------------------------------- + +$graphs{handler_transaction} = { + config => { + global_attrs => { + title => 'Transactions Handler', + }, + data_source_attrs => { + draw => 'AREASTACK', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Handler_commit', label => 'Commit'}, + {name => 'Handler_rollback', label => 'Rollback'}, + {name => 'Handler_savepoint', label => 'Savepoint'}, + {name => 'Handler_savepoint_rollback', label => 'Savepoint Rollback'}, + ], + }; + +#--------------------------------------------------------------------- + +$graphs{handler_write} = { + config => { + global_attrs => { + title => 'Write/Update Handler', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Handler_write', label => 'Writes'}, + {name => 'Handler_update', label => 'Updates'}, + ], + }; + +#--------------------------------------------------------------------- + +$graphs{handler_tmp} = { + config => { + global_attrs => { + title => 'Temporary Write/Update Handler', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Handler_tmp_write', label => 'Writes'}, + {name => 'Handler_tmp_update', label => 'Updates'}, + ], + }; + +#--------------------------------------------------------------------- + +$graphs{execution} = { + config => { + global_attrs => { + title => 'Execution Events', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Executed_events', label => 'Events'}, + {name => 'Executed_triggers', label => 'Triggers'}, + ], + }; + +#--------------------------------------------------------------------- + +$graphs{icp} = { + config => { + global_attrs => { + title => 'Index Condition Pushdown', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Handler_icp_attempts', label => 'Attempts'}, + {name => 'Handler_icp_match', label => 'Matches'}, + ], +}; + +#--------------------------------------------------------------------- + +$graphs{mrr} = { + config => { + global_attrs => { + title => 'Multi Range Read optimizations', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + data_sources => [ + {name => 'Handler_mrr_init', label => 'Uses'}, + {name => 'Handler_mrr_key_refills', label => 'Key refills'}, + {name => 'Handler_mrr_rowid_refills', label => 'Row refills'}, + ], +}; + +#--------------------------------------------------------------------- +# Plugin Graphs +# These are MySQL plugins of type INFORMATION SCHEMA +# +# These will be added to $graphs if available +#--------------------------------------------------------------------- + +my %graph_plugins = (); + +$graph_plugins{query_response_time} = { + count => { + config => { + global_attrs => { + title => 'Query Response Time Count', + vlabel => 'queries per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + # convert microseconds back to the SI unit + cdef => '%s,1000000,/', + }, + }, + # data_sources are populated by sub plugin_query_response_time + data_sources => [ + ], + }, + total => { + config => { + global_attrs => { + title => 'Query Response Time Total', + vlabel => 'cumulated query time per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + # data_sources are populated by sub plugin_query_response_time + data_sources => [ + ], + } +}; + +$graph_plugins{user_statistics} = { + connections => { + config => { + global_attrs => { + title => 'User Connections', + vlabel => 'connections per ${graph_period}', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + cols => { 'total_connections' => {}, 'concurrent_connections' => {}, 'denied_connections' => {}, 'lost_connections' => {}}, + data_sources => [ + ], + }, + usertime => { + config => { + global_attrs => { + title => 'User Time', + vlabel => 'seconds', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + cols => { 'connected_time' => {}, 'busy_time' => {}, 'cpu_time' => {} }, + data_sources => [ + ], + }, + bytes => { + config => { + global_attrs => { + title => 'User Bytes', + vlabel => 'bytes', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + cols => { 'bytes_received' => {}, 'bytes_sent' => {}, 'binlog_bytes_written' => {} }, + data_sources => [ + ], + }, + rows => { + config => { + global_attrs => { + title => 'User Rows', + vlabel => 'rows', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + cols => { 'rows_read' => {}, 'rows_sent' => {}, 'rows_deleted' => {}, 'rows_inserted' => {}, 'rows_updated' => {} }, + data_sources => [ + ], + }, + commands => { + config => { + global_attrs => { + title => 'Command breakdown by user', + vlabel => 'commands', + }, + data_source_attrs => { + draw => 'LINE2', + type => 'DERIVE', + }, + }, + cols => { 'select_commands' => {}, 'update_commands' => {}, 'other_commands' => {}, 'commit_transactions' => {}, 'rollback_transactions' => {} }, + data_sources => [ + ], + } + +}; +#--------------------------------------------------------------------- +# M A I N +#--------------------------------------------------------------------- + + +# +# Global hash holding the data collected from MySQL. +# +our $data; # Was 'my'. Changed to 'our' to facilitate testing. + + +sub main { + my $graph = basename($0); + $graph =~ s/^mysql[0-9]*_//g; # allow multiple instances + my $command = $ARGV[0] || 'show'; + + my %command_map = ( + 'autoconf' => \&autoconf, + 'config' => \&config, + 'show' => \&show, + 'suggest' => \&suggest, + ); + + die "Unknown command: $command" + unless exists $command_map{$command}; + + die "Missing dependency Cache::Cache" + unless $has_cache || $command eq 'autoconf'; + + return $command_map{$command}->($graph); +} + + +#--------------------------------------------------------------------- +# C O M M A N D H A N D L E R S +#--------------------------------------------------------------------- + +# Each command handler should return an appropriate exit code + + +# http://munin-monitoring.org/wiki/ConcisePlugins#autoconf +sub autoconf { + unless ($has_cache) { + print "no (Missing dependency Cache::Cache)\n"; + return 0; + } + + eval { + db_connect(); + }; + if ($@) { + my $err = $@; + $err =~ s{\s at \s \S+ \s line .*}{}xms; + print "no ($err)\n"; + return 0; + } + print "yes\n"; + return 0; +} + + +# http://munin-monitoring.org/wiki/ConcisePlugins#suggest +sub suggest { + + # What is the best way to decide which graphs is applicable to a + # given system? + # Answer: + # Use lack of variables to indicate that the capability doesn't exist + # Use variable values to indicate some graph isn't currently used. + # update_data() now does this. + + update_data(); + + + foreach my $graph (sort keys(%graphs)) { + next if $graph =~ /innodb_/ && $data->{_innodb_disabled}; + next if $graph =~ /wsrep_/ && $data->{_galera_disabled}; + print "$graph\n"; + } + + return 0; +} + + +sub config { + my $graph_name = shift; + + # In MySQL 5.1 (and probably erlier versions as well) status + # variables are unique when looking at the last 19 characters. + # + # SELECT RIGHT(variable_name, 19), COUNT(*) + # FROM information_schema.global_status + # GROUP BY RIGHT(variable_name, 19) + # HAVING COUNT(*) > 1; + # + # Empty set (0.06 sec) + # + # There is one duplicate when looking at server variables + # + # SELECT RIGHT(variable_name, 19), COUNT(*) + # FROM information_schema.global_variables + # GROUP BY RIGHT(variable_name, 19) + # HAVING COUNT(*) > 1; + # + # +--------------------------+----------+ + # | RIGHT(variable_name, 19) | COUNT(*) | + # +--------------------------+----------+ + # | OW_PRIORITY_UPDATES | 2 | + # +--------------------------+----------+ + # 1 row in set (0.05 sec) + # + # show global variables like '%OW_PRIORITY_UPDATES'; + # + # +--------------------------+-------+ + # | Variable_name | Value | + # +--------------------------+-------+ + # | low_priority_updates | OFF | + # | sql_low_priority_updates | OFF | + # +--------------------------+-------+ + # 2 rows in set (0.00 sec) + # + # Not a problem since we don't graph these + + update_data(); + + die 'Unknown graph ' . ($graph_name ? $graph_name : '') + unless $graphs{$graph_name}; + + my $graph = $graphs{$graph_name}; + + my %conf = (%{$defaults{global_attrs}}, %{$graph->{config}{global_attrs}}); + while (my ($k, $v) = each %conf) { + print "graph_$k $v\n"; + } + print "graph_category db\n"; + + my $i = 0; + for my $ds (@{$graph->{data_sources}}) { + my %ds_spec = ( + %{$defaults{data_source_attrs}}, + %{$graph->{config}{data_source_attrs}}, + %$ds, + ); + while (my ($k, $v) = each %ds_spec) { + # 'name' is only used internally in this script, not + # understood by munin. + next if ($k eq 'name'); + + # AREASTACK is part of munin as of version 1.3.3 (not + # released yet). Until then ... + if ($k eq 'draw' && $v eq 'AREASTACK') { + printf("%s.%s %s\n", + clean_fieldname($ds->{name}), $k, ($i ? 'STACK' : 'AREA')); + } + else { + # support simple pattern substitution in cdef ("%s" -> fieldname) + my $fieldname = clean_fieldname($ds->{name}); + $v =~ s/%s/$fieldname/g if (($k eq "cdef") and ($v =~ /%s/)); + printf("%s.%s %s\n", $fieldname, $k, $v); + } + $i++; + } + print_thresholds(clean_fieldname($ds->{name})); + } + + return 0; +} + +sub show { + my $graph_name = shift; + + update_data(); + + die 'Unknown graph ' . ($graph_name ? $graph_name : '') + unless $graphs{$graph_name}; + + my $graph = $graphs{$graph_name}; + + die "Can't show data for '$graph_name' because InnoDB is disabled." + if $graph_name =~ /innodb_/ && $data->{_innodb_disabled}; + + die "Can't show data for '$graph_name' because not a Galera MySQL version." + if $graph_name =~ /wsrep_/ && $data->{_galera_disabled}; + + for my $ds (@{$graph->{data_sources}}) { + printf "%s.value %s\n", + clean_fieldname($ds->{name}), + defined $data->{$ds->{name}} ? $data->{$ds->{name}} : 'U'; + } + + return 0; +} + + + +#--------------------------------------------------------------------- +# U T I L I T Y S U B S +#--------------------------------------------------------------------- + + +sub db_connect { + my $dsn = "$config{dsn};mysql_connect_timeout=5"; + + return DBI->connect($dsn, $config{user}, $config{password}, { + RaiseError => 1, + PrintError => 0, + FetchHashKeyName => 'NAME_lc', + }); +} + + +sub update_data { + $data = $shared_memory_cache->get('data'); + my $graphs_stored = $shared_memory_cache->get('graphs'); + %graphs = %{thaw($graphs_stored)} if $graphs_stored; + return if $data; + + $data = {}; + + my $dbh = db_connect(); + + update_variables($dbh); + update_plugins($dbh); + update_innodb($dbh); + update_master($dbh); + delete $graphs{replication} if update_slave($dbh)==1; + + delete $graphs{bin_relay_log} if not defined $data->{relay_log_space}; + + delete $graphs{execution} if not defined $data->{Executed_events} + && not defined $data->{Executed_triggers}; + + delete $graphs{icp} if not defined $data->{Handler_icp_attempts} + && not defined $data->{Handler_icp_matches}; + + delete $graphs{innodb_adaptive_hash} + if not defined $data->{Innodb_adaptive_hash_hash_searches} + && not defined $data->{Innodb_adaptive_hash_non_hash_searches}; + + delete $graphs{innodb_bpool_internal_breakdown} + if not defined $data->{ib_bpool_internal_adaptive_hash_size_const}; + + delete $graphs{innodb_descriptors} + if not defined $data->{ib_innodb_descriptors}; + + delete $graphs{mrr} if not defined $data->{Handler_mrr_init}; + + delete $graphs{rows} if not defined $data->{Rows_sent}; + + delete $graphs{handler_temp} if not defined $data->{Handler_tmp_write}; + + $shared_memory_cache->set('data', $data); + $shared_memory_cache->set('graphs', nfreeze(\%graphs)); +} + + +sub update_plugins { + my ($dbh) = @_; + + my %plugin_map = ( + 'query_response_time' => \&plugin_query_response_time, + ); + + sub add_graphs { + my ($f, $sec, $dbh, %g) = @_; + if ($f->($dbh) == 0) { + while (my ($k, $v) = each %g) { + $graphs{$sec . '_' . $k} = $v; + } + } + } + + my $sth = $dbh->prepare("SHOW PLUGINS"); + $sth->execute(); + while (my $row = $sth->fetchrow_hashref()) { + next if $row->{'type'} ne 'INFORMATION SCHEMA'; + my $sec = lc $row->{'name'}; + next if not exists $plugin_map{$sec}; + add_graphs($plugin_map{$sec}, $sec, $dbh, %{$graph_plugins{$sec}}); + } + $sth->finish(); + + my %is_map = ( + 'user_statistics' => \&is_user_statistics, + ); + + $sth = $dbh->prepare("SHOW TABLES IN INFORMATION_SCHEMA"); + $sth->execute(); + while (my $row = $sth->fetchrow_hashref()) { + my $sec = lc $row->{'tables_in_information_schema'}; + next if not exists $is_map{$sec}; + add_graphs($is_map{$sec}, $sec, $dbh, %{$graph_plugins{$sec}}); + } + $sth->finish(); +} + +sub update_variables { + my ($dbh) = @_; + my @queries = ( + 'SHOW GLOBAL STATUS', + 'SHOW GLOBAL VARIABLES', + ); + + my %variable_name_map = ( + table_cache => 'table_open_cache', # table_open_cache was + # previously known as + # table_cache in MySQL + # 5.1.2 and earlier. + ); + my %wsrep_cluster_status_map = ( + 'Primary' => 0, + 'non-Primary' => 1, + ); + + for my $query (@queries) { + $data->{$query} = {}; + + my $sth = $dbh->prepare($query); + $sth->execute(); + while (my $row = $sth->fetch) { + my $var = $variable_name_map{$row->[0]} || $row->[0]; + $data->{$var} = $row->[1]; + } + $sth->finish(); + } + + $data->{'mysql_base_memory'} = $data->{'key_buffer_size'} + + $data->{'query_cache_size'} + + $data->{'innodb_buffer_pool_size'} + + ( $data->{'innodb_additional_mem_pool_size'} || 0 ) + + $data->{'innodb_log_buffer_size'} + + ( $data->{'tokudb_cache_size'} || 0 ); + + my $tmp_table_size = $data->{'tmp_table_size'}; + my $max_heap_table_size = $data->{'max_heap_table_size'}; + $data->{'mysql_connection_memory'} = $data->{'read_buffer_size'} + + $data->{'read_rnd_buffer_size'} + + $data->{'sort_buffer_size'} + + $data->{'join_buffer_size'} + + $data->{'binlog_cache_size'} + + $data->{'thread_stack'} + + ( $tmp_table_size >= $max_heap_table_size ? $tmp_table_size : $max_heap_table_size ) + + ( $data->{'tokudb_read_buf_size'} || 0 ); + + # wsrep_thread_count was separated from max_connections for mariadb-5.5.38 https://mariadb.atlassian.net/browse/MDEV-6206 + $data->{'mysql_connection_memory'} *= $data->{'max_connections'} + ( $data->{'wsrep_thread_count'} || 0 ); + + if ($data->{wsrep_cluster_status}) { + my $var = $wsrep_cluster_status_map{$data->{wsrep_cluster_status}}; + $data->{wsrep_cluster_status} = $var; + } + $data->{_galera_disabled} = 1 unless ($data->{wsrep_provider_name}); +} + + +sub update_innodb { + my ($dbh) = @_; + + my $sth = $dbh->prepare('SHOW /*!50000 ENGINE*/ INNODB STATUS'); + eval { + $sth->execute(); + }; + if ($@) { + if ($@ =~ /Unknown (storage|table) engine 'INNODB'|Cannot call SHOW INNODB STATUS because skip-innodb is defined/i) { + $data->{_innodb_disabled} = 1; + return; + } + die $@; + } + my $row = $sth->fetchrow_hashref(); + my $status = $row->{'status'}; + $sth->finish(); + + parse_innodb_status($status); +} + + +sub update_master { + my ($dbh) = @_; + + my $sth = $dbh->prepare('SHOW MASTER LOGS'); + eval { + $sth->execute(); + }; + if ($@) { + # SHOW MASTER LOGS failed because binlog is not enabled + return if $@ =~ /You are not using binary logging/; + die $@; + } + + while (my $row = $sth->fetch) { + $data->{ma_binlog_size} += $row->[1]; + } + + $sth->finish(); +} + + +sub update_slave { + my ($dbh) = @_; + + my $sth = $dbh->prepare('SHOW SLAVE STATUS'); + $sth->execute(); + my $row = $sth->fetchrow_hashref(); + return 1 unless $row; + while (my ($k, $v) = each %$row) { + $data->{$k} = $v; + } + $sth->finish(); + + # We choose master_host here as a stopped slave + # may not indicate that we have reset all slave capability + # however the minimium requirement is a master_host + return 1 if not defined $data->{master_host}; + + # undef when slave is stopped, or when MySQL fails to calculate + # the lag (which happens depresingly often). (mk-heartbeat fixes + # this problem.) + $data->{seconds_behind_master} ||= 0; + + # Track these two fields so we can trigger warnings if the slave stops + # running + $data->{slave_sql_running} = ($data->{slave_sql_running} eq 'Yes') + ? 0 : 1; + $data->{slave_io_running} = ($data->{slave_io_running} eq 'Yes') + ? 0 : 1; + return 0; +} + + +#--------------------------------------------------------------------- +# Information SCHEMA tables represent data to be processed +#--------------------------------------------------------------------- + + +sub plugin_query_response_time { + my ($dbh) = @_; + + return 1 if not defined $data->{query_response_time_stats}; + return 1 if $data->{query_response_time_stats} eq 'OFF'; + + my $sth = $dbh->prepare("SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME"); + $sth->execute(); + while (my $row = $sth->fetchrow_hashref()) { + my $time = $row->{'time'}; + $data->{'query_response_time_count_' . $time} = $row->{'count'}; + push @{$graph_plugins{query_response_time}->{count}->{data_sources}}, {name => 'query_response_time_count_' . $time, label => $time }; + next if $row->{'total'} eq 'TOO LONG'; + # use microseconds (we use the integer-based DERIVE storage) + $data->{'query_response_time_total_' . $time} = $row->{'total'} * 1e6; + push @{$graph_plugins{query_response_time}->{total}->{data_sources}}, {name => 'query_response_time_total_' . $time, label => $time }; + } + $sth->finish(); + + return 0; +} + +sub is_user_statistics { + my ($dbh) = @_; + + return 1 if not defined $data->{userstat}; + return 1 if $data->{userstat} eq 'OFF'; + + my $sth = $dbh->prepare("SELECT * FROM INFORMATION_SCHEMA.USER_STATISTICS"); + $sth->execute(); + while (my $row = $sth->fetchrow_hashref()) { + my $user = $row->{'user'}; + my $var; + while (my ($g, $v) = each %{$graph_plugins{user_statistics}}) { + while (my ($userstat,$conf) = each %{$v->{cols}}) { + $var = 'user_stats_' . $user . '_' . $userstat; + $data->{$var} = int $row->{$userstat}; + my $ds = { %$conf }; + $ds->{name} = $var; + $ds->{label} = $user . ' ' . $userstat; + push @{$graph_plugins{user_statistics}->{$g}->{data_sources}}, $ds; + } + } + } + $sth->finish(); + return 0; +} + +# +# In 'SHOW ENGINE INNODB STATUS' 64 bit integers are not formatted as +# plain integers. They are either: +# +# - split in two and needs to be shifted together, +# - or hexadecimal +# +sub innodb_bigint { + my ($x, $y) = @_; + + return defined $y + ? Math::BigInt->new($x)->blsft(32) + $y + : Math::BigInt->new("0x$x"); +} + +#--------------------------------------------------------------------- +# P A R S E 'SHOW ENGINE INNODB STATUS' O U T P U T +#--------------------------------------------------------------------- + + +# A nice walk through +# http://www.mysqlperformanceblog.com/2006/07/17/show-innodb-status-walk-through/ + +# The parsing is split in one subrutine per section. Each subroutine +# should parse a block with the following structure +# +# block body ... +# more lines .... +# ---------- + +sub parse_innodb_status { + local $_ = shift; + + # Add a dummy section to the end in case the innodb status output + # has been truncated (Happens for status > 64K characters) + $_ .= "\n----------\nDUMMY\n----------\n"; + + my %section_map = ( + + 'BUFFER POOL AND MEMORY' => \&parse_buffer_pool_and_memory, + 'INDIVIDUAL BUFFER POOL INFO' => \&parse_individual_buffer_pool, + 'FILE I/O' => \&parse_file_io, + 'INSERT BUFFER AND ADAPTIVE HASH INDEX' + => \&parse_insert_buffer_and_adaptive_hash_index, + 'LATEST DETECTED DEADLOCK' => \&skip, + 'LATEST FOREIGN KEY ERROR' => \&skip, + 'LOG' => \&parse_log, + 'ROW OPERATIONS' => \&parse_row_operations, + 'SEMAPHORES' => \&parse_semaphores, + 'TRANSACTIONS' => \&parse_transactions, + 'BACKGROUND THREAD' => \&parse_background_thread, + ); + + skip_heading(); + parse_header_seconds(); + for (;;) { + m/\G(.*)\n/gc; + my $sec = $1; + + last if $sec eq 'END OF INNODB MONITOR OUTPUT'; + if ($sec eq 'DUMMY') { + handle_incomplete_innodb_status(); + last; + } + + if (exists $section_map{$sec}) { + $section_map{$sec}->(); + } else { + #warn "Unknown section: $1"; + skip(); + } + } +} + + +# This regular expression handles the different formatting of 64-bit +# integers in different versions of the innodb engine. Either two +# decimal 32-bit integers separated by a space, or a single +# hexadecimal 64-bit integer. +my $innodb_bigint_rx = qr{([[a-fA-F\d]+)(?: (\d+))?}; + + +sub match_new_section { + return m/\G + -+\n # --------------------------- + (?= [A-Z\/ ]+\n # SECTION NAME + [=-]+\n)/gcx; # --------------------------- ('=' on end of output) +} + + +sub skip_line { return m/\G.*\n/gc; } + + +sub skip_heading { + # Heading is 3 lines + for my $foo (1...3) { + skip_line or die('Parse error'); + } +} + + +sub parse_section { + my ($parser) = @_; + + #warn substr($_, pos(), 10); + for (;;) { + return if match_new_section; + next if $parser->(); + skip_line(); + } +} + + +sub skip { parse_section(sub {}); } + + +sub parse_header_seconds { + parse_section( + sub { + m/\GPer second averages calculated from the last (\d+) seconds\n/gc && do { + $data->{innodb_engine_status_seconds} = $1; + return 1; + }; + } + ); +} + + +sub parse_background_thread { + parse_section( + sub { + m/\Gsrv_master_thread loops: \d+ 1_second, \d+ sleeps, \d+ 10_second, (\d+) background, (\d+) flush\n/gc && do { + $data->{ib_srv_main_flush_loops} = $1; + $data->{ib_srv_main_background_loops} = $2; + return 1; + }; + m/\Gsrv_master_thread log flush and writes: (\d+)\n/gc && do { + $data->{ib_srv_main_flushs_writes} = $1; + return 1; + }; + } + ); +} + +sub parse_row_operations { + parse_section( + sub { + m/\G(\d+) queries inside InnoDB, (\d+) queries in queue\n/gc && do { + $data->{ib_innodb_queries} = $1; + $data->{ib_innodb_query_queue_len} = $2; + return 1; + }; + m/\G(\d+) read views open inside InnoDB\n/gc && do { + $data->{ib_innodb_read_views} = $1; + return 1; + }; + m/\G(\d+) transactions active inside InnoDB\n/gc && do { + $data->{ib_innodb_transactions_active} = $1; + return 1; + }; + m/\G(\d+) out of (\d+) descriptors used\n/gc && do { + $data->{ib_innodb_descriptors} = $1; + $data->{ib_innodb_descriptors_max} = $2; + return 1; + }; + # no need for this - its exposed as status variables + # m/\GNumber of rows inserted (\d+), updated (\d+), deleted (\d+), read (\d+)\n/gc && do { + # $data->{ib_innodb_rows_inserted} = $1; + # $data->{ib_innodb_rows_updated} = $2; + # $data->{ib_innodb_rows_deleted} = $3; + # $data->{ib_innodb_rows_read} = $4; + # return 1; + # }; + } + ); +} + +sub parse_semaphores { + parse_section( + sub { + m/\GMutex spin waits (\d+), rounds (\d+), OS waits (\d+)\n/gc && do { + $data->{ib_spin_waits} = $1; + $data->{ib_spin_rounds} = $2; + $data->{ib_os_waits} = $3; + return 1; + }; + m/\GRW-shared spins (\d+), rounds (\d+), OS waits (\d+)\n/gc && do { + $data->{ib_rw_shared_waits} = $1; + $data->{ib_rw_shared_rounds} = $2; + $data->{ib_rw_shared_os_waits} = $3; + return 1; + }; + m/\GRW-excl spins (\d+), rounds (\d+), OS waits (\d+)\n/gc && do { + $data->{ib_rw_excl_waits} = $1; + $data->{ib_rw_excl_rounds} = $2; + $data->{ib_rw_excl_os_waits} = $3; + return 1; + }; + } + ); +} + + +sub parse_transactions { + parse_section( + sub { + m/\GTrx id counter $innodb_bigint_rx\n/gc && do { + $data->{ib_tnx} = innodb_bigint($1, $2); + return 1; + }; + m/\GPurge done for trx's n:o < $innodb_bigint_rx undo n:o < $innodb_bigint_rx\n/gc && do { + if (defined $3) { + # old format + $data->{ib_tnx_prg} = innodb_bigint($1, $2); + # FIX add to data? innodb_bigint($3, $4); + } + else { + # new format + $data->{ib_tnx_prg} = innodb_bigint($1); + # FIX add to data? innodb_bigint($2); + } + return 1; + }; + m/\GHistory list length (\d+)\n/gc && do { + $data->{ib_tnx_hist} = $1; + return 1; + }; + } + ); + +} + + +sub parse_file_io { + parse_section( + sub { + m/\GPending normal aio reads: (\d+)(?: \[(?:\d+, )*\d+\] )?, aio writes: (\d+)(?: \[(?:\d+, )*\d+\] )?,\n\s*ibuf aio reads: (\d+), log i\/o's: (\d+), sync i\/o's: (\d+)\n/gc && do { + $data->{ib_iop_aioread} = $1; + $data->{ib_iop_aiowrite} = $2; + $data->{ib_iop_ibuf_aio} = $3; + $data->{ib_iop_log} = $4; + $data->{ib_iop_sync} = $5; + return 1; + }; + m/\GPending flushes \(fsync\) log: (\d+); buffer pool: (\d+)\n/gc && do { + $data->{ib_iop_flush_log} = $1; + $data->{ib_iop_flush_bpool} = $2; + return 1; + }; + m/\G(\d+) OS file reads, (\d+) OS file writes, (\d+) OS fsyncs\n/gc && do { + $data->{ib_io_read} = $1; + $data->{ib_io_write} = $2; + $data->{ib_io_fsync} = $3; + return 1; + }; + } + ); +} + + +sub parse_insert_buffer_and_adaptive_hash_index { + parse_section( + sub { + # MySQL < 5.5 + m/\G(\d+) inserts, (\d+) merged recs, (\d+) merges\n/gc && do { + $data->{ib_ibuf_inserts} = $1; + $data->{ib_ibuf_merged_rec} = $2; + $data->{ib_ibuf_merges} = $3; + return 1; + }; + # MySQL >= 5.5 + m/\Gmerged operations:\n insert (\d+), delete mark (\d+), delete (\d+)\ndiscarded operations:\n insert (\d+), delete mark (\d+), delete (\d+)\n/gc && do { + $data->{ib_ibuf_inserts} = $1; + $data->{ib_ibuf_delete_mark} = $2; + $data->{ib_ibuf_delete} = $3; + $data->{ib_ibuf_discard_inserts} = $4; + $data->{ib_ibuf_discard_delete_mark} = $5; + $data->{ib_ibuf_discard_delete} = $6; + $data->{ib_ibuf_merged_rec} = $data->{ib_ibuf_inserts} + $data->{ib_ibuf_discard_inserts}; + return 1; + }; + + m/\GIbuf: size (\d+), free list len (\d+), seg size (\d+),(?: (\d+) merges)?\n/gc && do { + $data->{ib_ibuf_size} = $1; + $data->{ib_ibuf_free_len} = $2; + $data->{ib_ibuf_seg_size} = $3; + $data->{ib_ibuf_merges} = $4 if defined $4; # MySQL >= 5.5 + return 1; + }; + } + ); +} + + +sub parse_log { + parse_section( + sub { + m/\GLog sequence number $innodb_bigint_rx\n/gc && do { + $data->{ib_log_written} = innodb_bigint($1, $2); + return 1; + }; + m/\GLog flushed up to\s+$innodb_bigint_rx\n/gc && do { + $data->{ib_log_flush} = innodb_bigint($1, $2); + return 1; + }; + m/\G(\d+) log i\/o's done.*\n/gc && do { + $data->{ib_io_log} = $1; + return 1; + }; + } + ); +} + + +sub parse_buffer_pool_and_memory { + parse_section( + sub { + m/\GBuffer pool size\s+(\d+)\n/gc && do { + $data->{ib_bpool_size} = $1; + return 1; + }; + m/\GBuffer pool size, bytes\s+(\d+)\n/gc && do { + $data->{ib_bpool_size_bytes} = $1; + return 1; + }; + m/\GFree buffers\s+(\d+)\n/gc && do { + $data->{ib_bpool_free} = $1; + return 1; + }; + m/\GDatabase pages\s+(\d+)\n/gc && do { + $data->{ib_bpool_dbpages} = $1; + return 1; + }; + m/\GModified db pages\s+(\d+)\n/gc && do { + $data->{ib_bpool_modpages} = $1; + return 1; + }; + m/\GOld database pages\s+(\d+)\n/gc && do { + $data->{ib_bpool_oldpages} = $1; + return 1; + }; + m/\GPages made young (\d+), not young (\d+)\n/gc && do { + $data->{ib_bpool_made_young} = $1; + $data->{ib_bpool_made_not_young} = $2; + return 1; + }; + m/\GPages read (\d+), created (\d+), written (\d+)\n/gc && do { + $data->{ib_bpool_read} = $1; + $data->{ib_bpool_created} = $2; + $data->{ib_bpool_written} = $3; + return 1; + }; + # mariadb-5.5 + m/\GInternal hash tables \(constant factor \+ variable factor\)\n\s*Adaptive hash index\s*(\d+)\s*\((\d+) \+ (\d+)\) *\n\s+Page hash +(\d+) +\(buffer pool \d+ only\) *\n\s+Dictionary cache\s*(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+File system\s+(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+Lock system\s+(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+Recovery system\s*(\d+)\s+\((\d+) \+ (\d+)\) *\n/gc + && do { + $data->{ib_bpool_internal_adaptive_hash_size_total} = $1; + $data->{ib_bpool_internal_adaptive_hash_size_const} = $2; + $data->{ib_bpool_internal_adaptive_hash_size_var} = $3; + $data->{ib_bpool_internal_page_hash_size_total} = $4; + $data->{ib_bpool_internal_dictionary_cache_size_total} = $5; + $data->{ib_bpool_internal_dictionary_cache_size_const} = $6; + $data->{ib_bpool_internal_dictionary_cache_size_var} = $7; + $data->{ib_bpool_internal_file_system_size_total} = $8; + $data->{ib_bpool_internal_file_system_size_const} = $9; + $data->{ib_bpool_internal_file_system_size_var} = $10; + $data->{ib_bpool_internal_lock_system_size_total} = $11; + $data->{ib_bpool_internal_lock_system_size_const} = $12; + $data->{ib_bpool_internal_lock_system_size_var} = $13; + $data->{ib_bpool_internal_recovery_system_size_total} = $14; + $data->{ib_bpool_internal_recovery_system_size_const} = $15; + $data->{ib_bpool_internal_recovery_system_size_var} = $16; + return 1; + }; + + } + ); +} + +sub parse_individual_buffer_pool { + parse_section( + sub { + m/\G---BUFFER POOL (\d+)\n/gc && do { + my $pool = $1; + $data->{ib_bpool_individual_pool_count} = $pool + 1; + m/\GBuffer pool size\s+(\d+)\n/gc && do { + $data->{"ib_bpool_individual_pool_${pool}_size"} = $1; + }; + m/\GBuffer pool size, bytes\s+(\d+)\n/gc && do { + $data->{"ib_bpool_individual_pool_${pool}_size_bytes"} = $1; + }; + m/\GFree buffers\s+(\d+)\nDatabase pages\s+(\d+)\nOld database pages\s+(\d+)\nModified db pages\s+(\d+)\nPending reads\s+(\d+)\nPending writes: LRU\s+(\d+), flush list\s+(\d+), single page\s+(\d+)\n/gc && do { + $data->{"ib_bpool_individual_pool_${pool}_free"} = $1; + $data->{"ib_bpool_individual_pool_${pool}_dbpages"} = $2; + $data->{"ib_bpool_individual_pool_${pool}_oldpages"} = $3; + $data->{"ib_bpool_individual_pool_${pool}_modpages"} = $4; + $data->{"ib_bpool_individual_pool_${pool}_pending_reads"} = $5; + $data->{"ib_bpool_individual_pool_${pool}_pending_writes_lru"} = $6; + $data->{"ib_bpool_individual_pool_${pool}_pending_writes_flush"} = $7; + $data->{"ib_bpool_individual_pool_${pool}_pending_writes_single"} = $8; + }; + skip_line(); + m/\GPages read (\d+), created (\d+), written (\d+)\n/gc && do { + $data->{"ib_bpool_individual_pool_${pool}_read"} = $1; + $data->{"ib_bpool_individual_pool_${pool}_created"} = $2; + $data->{"ib_bpool_individual_pool_${pool}_written"} = $3; + }; + return 1; + }; + } + ); +} + +sub handle_incomplete_innodb_status { + + warn "Output from SHOW ENGINE INNODB STATUS was truncated. " + . "This happens if the output of STATUS exceeds 64KB. " + . "Several of the InnoDB graphs might be affected by this."; + + # FIX Is it possible to find some of the missing values from SHOW + # STATUS? +} + + +exit main() unless caller; + + +1; diff --git a/nginx_munin.conf b/nginx_munin.conf index 51dbb42..ed6b16b 100644 --- a/nginx_munin.conf +++ b/nginx_munin.conf @@ -1,49 +1,34 @@ +# Example configuration! Change this to suit your needs. +# Access Munin at http://localhost/munin/ +# +# To use cgi generated files copy this file to /etc/nginx/conf.d/ and add +# following three lines to /etc/munin/conf.d/local.conf (uncommented): +# +# graph_strategy cgi +# html_strategy cgi +# cgiurl_graph /munin/graph + + server { - # Example configuration! Change this to suit your needs. - # Access munin at http://localhost/munin/ - # NOTE - Do not remove this file, otherwise munin package upgrade - # recreates this. - - listen 80; - server_name localhost; - - location / { - root /usr/share/nginx/html; - index index.html index.htm; - } - - # redirect server error pages to the static page /40x.html - # - error_page 404 /404.html; - location = /40x.html { - root /usr/share/nginx/html; - } - - # redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } - - location ^~ /munin-cgi/munin-cgi-graph/ { - access_log off; - fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*); - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_pass unix:/var/run/munin/fcgi-graph.sock; - include fastcgi_params; - } + listen 80; + server_name localhost; + root /usr/share/nginx/html; location /munin/static/ { - alias /etc/munin/static/; + alias /etc/munin/static/; + } + + location /munin/graph/ { + include fastcgi_params; + fastcgi_split_path_info ^(/munin/graph)(.*); + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_pass unix:/var/run/munin/munin-cgi-graph.sock; } location /munin/ { + include fastcgi_params; fastcgi_split_path_info ^(/munin)(.*); - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_pass unix:/var/run/munin/fcgi-html.sock; - include fastcgi_params; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_pass unix:/var/run/munin/munin-cgi-html.sock; } - } - diff --git a/nginx_requests-remove-unused-port.patch b/nginx_requests-remove-unused-port.patch new file mode 100644 index 0000000..b6b9b74 --- /dev/null +++ b/nginx_requests-remove-unused-port.patch @@ -0,0 +1,20 @@ +diff -ur munin-2.0.35.orig/plugins/node.d/nginx_request.in munin-2.0.35/plugins/node.d/nginx_request.in +--- munin-2.0.35.orig/plugins/node.d/nginx_request.in 2018-03-21 09:12:11.000000000 +0200 ++++ munin-2.0.35/plugins/node.d/nginx_request.in 2018-03-21 09:55:44.541415941 +0200 +@@ -66,7 +66,6 @@ + } + + my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://localhost/nginx_status"; +-my $port = exists $ENV{'port'} ? $ENV{'port'} : "80"; + + if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" ) + { +@@ -99,7 +98,7 @@ + print "graph_vlabel Requests per \${graph_period}\n"; + print "request.type DERIVE\n"; + print "request.min 0\n"; +- print "request.label requests port $port\n"; ++ print "request.label requests\n"; + print "request.draw LINE\n"; + + exit 0; diff --git a/squid.patch b/squid.patch new file mode 100644 index 0000000..ce87e32 --- /dev/null +++ b/squid.patch @@ -0,0 +1,12 @@ +diff -ur munin-2.0.17.orig/plugins/node.d/squid_traffic.in munin-2.0.17/plugins/node.d/squid_traffic.in +--- munin-2.0.17.orig/plugins/node.d/squid_traffic.in 2013-07-19 19:30:03.000000000 +0300 ++++ munin-2.0.17/plugins/node.d/squid_traffic.in 2013-11-18 12:07:38.459509488 +0200 +@@ -126,7 +126,7 @@ + $cachemgr->syswrite($request, length($request)); + my @lines = $cachemgr->getlines(); + for(my $i = 0; $i <= $#lines; $i++) { +- if($lines[$i] =~ /$target\s+(\d+)/) { ++ if($lines[$i] =~ /$target\s+(-?\d+)/) { + print "$1.value $2\n"; + } + } From f9ba6adfd20fae0fb57e9efc80a24c7ccaf23c38 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 24 Aug 2018 19:57:04 +0300 Subject: [PATCH 032/108] munin 2.0.40 tarball --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index 62d92ae..00d96f3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.33.tar.gz) = aa6df8555dfd09585619376a4e9f20c2c6092e70076041ff3dcf987f6eab3caf2880ce32432f71f7b0493808d9e5dbc11e352aa636c39f22ad355409342feb70 +SHA512 (munin-2.0.40.tar.gz) = d4870119980441f7f65fc8981eeffdd5f6bee42f72ce8cfe0fa37aa9142258903565e027bc80e87404616bad8a3d38b0c8c9b7b2559d179084d7a086987745d2 From 5e4592f475fec57adea221301d1b5f7744c26260 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 24 Aug 2018 20:37:57 +0300 Subject: [PATCH 033/108] Remove some leftover files --- munin-1.4.0-config.patch | 33 --------------------------------- munin-1.4.5-uppercase.patch | 21 --------------------- 2 files changed, 54 deletions(-) delete mode 100644 munin-1.4.0-config.patch delete mode 100644 munin-1.4.5-uppercase.patch diff --git a/munin-1.4.0-config.patch b/munin-1.4.0-config.patch deleted file mode 100644 index 52af5dd..0000000 --- a/munin-1.4.0-config.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -Nur munin-1.4.0.orig/dists/redhat/Makefile.config munin-1.4.0/dists/redhat/Makefile.config ---- munin-1.4.0.orig/dists/redhat/Makefile.config 2009-11-27 04:17:14.000000000 -0700 -+++ munin-1.4.0/dists/redhat/Makefile.config 2009-11-30 22:28:20.000000000 -0700 -@@ -23,7 +23,7 @@ - VERSION = $(shell cat RELEASE) - USER = munin - GROUP = munin --PLUGINUSER = nobody -+PLUGINUSER = munin - 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")) -diff -Nur munin-1.4.0.orig/master/munin.conf.in munin-1.4.0/master/munin.conf.in ---- munin-1.4.0.orig/master/munin.conf.in 2009-11-27 04:17:18.000000000 -0700 -+++ munin-1.4.0/master/munin.conf.in 2009-11-30 22:28:20.000000000 -0700 -@@ -15,7 +15,7 @@ - - # (Exactly one) directory to include all files from. - # --includedir @@CONFDIR@@/munin-conf.d -+# includedir @@CONFDIR@@/munin-conf.d - - # Make graphs show values per minute instead of per second - #graph_period minute -@@ -57,7 +57,7 @@ - #contact.nagios.command /usr/bin/send_nsca nagios.host.comm -c /etc/nsca.conf - - # a simple host tree --[@@HOSTNAME@@] -+[localhost] - address 127.0.0.1 - use_node_name yes - diff --git a/munin-1.4.5-uppercase.patch b/munin-1.4.5-uppercase.patch deleted file mode 100644 index 3dcd53d..0000000 --- a/munin-1.4.5-uppercase.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -Nur munin-1.4.5.orig/node/lib/Munin/Node/Server.pm munin-1.4.5/node/lib/Munin/Node/Server.pm ---- munin-1.4.5.orig/node/lib/Munin/Node/Server.pm 2010-05-22 16:54:31.000000000 -0600 -+++ munin-1.4.5/node/lib/Munin/Node/Server.pm 2011-02-07 15:15:51.527998974 -0700 -@@ -171,7 +171,7 @@ - - logger ("DEBUG: Running command \"$_\".") if $config->{DEBUG}; - if (/^list\s*([0-9a-zA-Z\.\-]+)?/i) { -- _list_services($session, $1); -+ _list_services($session, lc($1)); - } - elsif (/^cap\s?(.*)/i) { - _negotiate_session_capabilities($session, $1); -@@ -309,7 +309,7 @@ - sub _list_services { - my ($session, $node) = @_; - -- $node ||= $config->{fqdn}; -+ $node ||= lc($config->{fqdn}); - - if (exists $nodes{$node}) { - my @services = @{$nodes{$node}}; From b8c61eb37cc933abafdc195a438e13349b167c56 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sat, 25 Aug 2018 10:44:15 +0300 Subject: [PATCH 034/108] spec: Fix upgrade path for munin-asyncd and force restart on first upgrade --- munin.spec | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/munin.spec b/munin.spec index 5b1c122..4db2d28 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.40 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -451,6 +451,7 @@ exit 0 %systemd_post munin-asyncd.service %else /sbin/chkconfig --add munin-node +/sbin/chkconfig --add munin-asyncd %endif # Create log file [ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ @@ -480,6 +481,8 @@ fi if [ $1 -eq 0 ]; then /sbin/service munin-node stop >/dev/null 2>&1 || : /sbin/chkconfig --del munin-node + /sbin/service munin-asyncd stop >/dev/null 2>&1 || : + /sbin/chkconfig --del munin-asyncd fi %endif @@ -491,15 +494,26 @@ fi %else if [ $1 -ge 1 ]; then /sbin/service munin-node condrestart >/dev/null 2>&1 + /sbin/service munin-asyncd condrestart >/dev/null 2>&1 fi %endif -%triggerun node -- munin-node < 2.0.40-1 +%triggerun node -- munin-node < 2.0.40-2 if ls %{_localstatedir}/log/munin/munin-node.log* >/dev/null 2>&1; then mv -f %{_localstatedir}/log/munin/munin-node.log* %{_localstatedir}/log/munin-node/ fi chown -R munin:munin %{_sharedstatedir}/munin/spool/ >/dev/null 2>&1 +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +systemctl daemon-reload +%systemd_postun_with_restart munin-node.service +%systemd_postun_with_restart munin-asyncd.service +%else +if [ $1 -ge 1 ]; then + /sbin/service munin-node condrestart >/dev/null 2>&1 + /sbin/service munin-asyncd condrestart >/dev/null 2>&1 +fi +%endif %post nginx @@ -722,6 +736,9 @@ exit 0 %changelog +* Sat Aug 25 2018 Kim B. Heino - 2.0.40-2 +- Fix upgrade path for munin-asyncd and force restart on first upgrade + * Fri Aug 24 2018 Kim B. Heino - 2.0.40-1 - Upgrade to 2.0.40 - This is major update with rpm package reorganize and directory changes From 0ae672a39af7ff48008f67f3090c702f5c4aab5f Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 14 Sep 2018 20:14:35 +0300 Subject: [PATCH 035/108] spec: rhbz#1628390: Fix missing Perl dependencies in Fedora --- munin.spec | 76 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/munin.spec b/munin.spec index 4db2d28..58b75ce 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.40 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -52,6 +52,7 @@ Source301: munin-node BuildArch: noarch BuildRequires: perl-interpreter >= 5.8 +BuildRequires: perl-generators BuildRequires: perl(Module::Build) BuildRequires: perl(HTML::Template) BuildRequires: perl(Log::Log4perl) @@ -63,6 +64,7 @@ BuildRequires: perl(Text::Balanced) BuildRequires: perl(Directory::Scratch) BuildRequires: perl-Carp BuildRequires: systemd +BuildRequires: firewalld-filesystem %endif BuildRequires: java-devel BuildRequires: jpackage-utils @@ -105,6 +107,8 @@ it in your network. It will periodically poll all the nodes in your network it's aware of for data, which it in turn will use to create graphs and HTML pages, suitable for viewing with your graphical web browser of choice. +You must also install munin-nginx or munin-apache package. + Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent RRDtool. @@ -125,6 +129,7 @@ Requires: perl(Cache::Cache) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires(pre): shadow-utils %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +Requires: firewalld-filesystem %{?systemd_requires} %else Requires(post): /sbin/chkconfig @@ -134,6 +139,8 @@ Requires(preun): /sbin/service BuildArch: noarch Provides: munin-async = %{version}-%{release} Obsoletes: munin-async < 2.0.39-4 +Provides: munin-netip-plugins = %{version}-%{release} +Obsoletes: munin-netip-plugins < 2.0.39-4 %description node @@ -203,7 +210,7 @@ Summary: NGINX support for Munin resource monitoring Requires: %{name} = %{version} Requires: munin-cgi Requires: nginx-filesystem -Provides: munin-web-support = %{version} +Provides: munin-web-support = %{version}-%{release} Conflicts: munin-apache BuildArch: noarch @@ -217,7 +224,7 @@ Summary: Apache support for Munin resource monitoring Requires: %{name} = %{version} Requires: httpd Requires: mod_fcgid -Provides: munin-web-support = %{version} +Provides: munin-web-support = %{version}-%{release} Conflicts: munin-nginx BuildArch: noarch @@ -431,13 +438,34 @@ mkdir -p %{buildroot}%{_localstatedir}/log/munin-node touch %{buildroot}%{_localstatedir}/log/munin-node/munin-node.log -%pre common +%pre getent group munin >/dev/null || groupadd -r munin getent passwd munin >/dev/null || \ useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 +%post +# Create log files +[ -f %{_localstatedir}/log/munin/munin-html.log ] || \ + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-html.log +[ -f %{_localstatedir}/log/munin/munin-limits.log ] || \ + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-limits.log +[ -f %{_localstatedir}/log/munin/munin-update.log ] || \ + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-update.log +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%systemd_post munin-rrdcached.service + + +%preun +%systemd_preun munin-rrdcached.service + + +%postun +%systemd_postun_with_restart munin-rrdcached.service +%endif + + %pre node getent group munin >/dev/null || groupadd -r munin getent passwd munin >/dev/null || \ @@ -449,6 +477,7 @@ exit 0 %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %systemd_post munin-node.service %systemd_post munin-asyncd.service +%firewalld_reload %else /sbin/chkconfig --add munin-node /sbin/chkconfig --add munin-asyncd @@ -516,6 +545,13 @@ fi %endif +%pre common +getent group munin >/dev/null || groupadd -r munin +getent passwd munin >/dev/null || \ +useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin +exit 0 + + %post nginx # Create log files [ -f %{_localstatedir}/log/munin/munin-cgi-graph.log ] || \ @@ -572,34 +608,6 @@ fi %endif -%pre -getent group munin >/dev/null || groupadd -r munin -getent passwd munin >/dev/null || \ -useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin -exit 0 - - -%post -# Create log files -[ -f %{_localstatedir}/log/munin/munin-html.log ] || \ - /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-html.log -[ -f %{_localstatedir}/log/munin/munin-limits.log ] || \ - /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-limits.log -[ -f %{_localstatedir}/log/munin/munin-update.log ] || \ - /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-update.log -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_post munin-rrdcached.service - - -%preun -%systemd_preun munin-rrdcached.service - - -%postun -%systemd_postun_with_restart munin-rrdcached.service -%endif - - %files %doc %{_mandir}/man5/munin.conf* %doc %{_mandir}/man8/munin* @@ -736,6 +744,10 @@ exit 0 %changelog +* Fri Sep 14 2018 Kim B. Heino - 2.0.40-3 +- rhbz#1628390: Fix missing Perl dependencies in Fedora +- Obsolete munin-netip-plugins for epel upgrade path + * Sat Aug 25 2018 Kim B. Heino - 2.0.40-2 - Fix upgrade path for munin-asyncd and force restart on first upgrade From 4a159830f274e6920e54d81085d30b68fa0a1947 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 14 Sep 2018 20:15:50 +0300 Subject: [PATCH 036/108] .gitignore: add "fedpkg local" result files to ignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 4d7500b..27c70c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ munin-*.tar.gz +*.src.rpm +.build-*.log +munin-2*/ +noarch/ From 37236c42caf7bccded06a4794b59c406f8f4dd1b Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 17 Sep 2018 10:16:28 +0300 Subject: [PATCH 037/108] rhbz#1327512, rhbz#1629438 --- ...843b34918a43e312777037c762d5638af275.patch | 40 +++++++++++++++++++ httpd_munin.conf => httpd_cgi_graphs.conf | 19 +++++---- httpd_cron_graphs.conf | 28 +++++++++++++ munin.spec | 39 ++++++++++++++++-- nginx_munin.conf => nginx_cgi_graphs.conf | 19 +++++---- 5 files changed, 125 insertions(+), 20 deletions(-) create mode 100644 f0fa843b34918a43e312777037c762d5638af275.patch rename httpd_munin.conf => httpd_cgi_graphs.conf (72%) create mode 100644 httpd_cron_graphs.conf rename nginx_munin.conf => nginx_cgi_graphs.conf (66%) diff --git a/f0fa843b34918a43e312777037c762d5638af275.patch b/f0fa843b34918a43e312777037c762d5638af275.patch new file mode 100644 index 0000000..c32481d --- /dev/null +++ b/f0fa843b34918a43e312777037c762d5638af275.patch @@ -0,0 +1,40 @@ +From f0fa843b34918a43e312777037c762d5638af275 Mon Sep 17 00:00:00 2001 +From: Lars Kruse +Date: Sun, 26 Aug 2018 01:02:23 +0200 +Subject: [PATCH] Nagios command format: ensure non-empty plugin output + +Since 3f94d51a06 the fourth field of the lines written to "send_nsca" +could happen to be empty. See the trivial example: "munin-limits --force". +This empty field prevented the receiver (nagios/icinga) from associating +this status report with a specific test (which is supposed to be encoded +in the fourth field of the output). + +Thus we ensure, that "fofields" is always defined by falling back to +"ofields" (all fields that are currently in "OK" state). + +Closes: #743, #1052 +--- + master/lib/Munin/Master/LimitsOld.pm | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/master/lib/Munin/Master/LimitsOld.pm b/master/lib/Munin/Master/LimitsOld.pm +index f0a286225..1d06025a5 100644 +--- a/master/lib/Munin/Master/LimitsOld.pm ++++ b/master/lib/Munin/Master/LimitsOld.pm +@@ -647,6 +647,16 @@ sub generate_service_message { + $hash->{'ufields'} = join " ", @{$stats{'unknown'}}; + $hash->{'fofields'} = join " ", @{$stats{'foks'}}; + $hash->{'ofields'} = join " ", @{$stats{'ok'}}; ++ # The "fofields" (datasets that changed state from "failed" to "OK") can be empty under certain ++ # legitimate circumstances (e.g. "munin-limits --force" sends messages also for unchanged "OK" ++ # states). But we may never allow the fourth output field for NSCA to be empty - otherwise the ++ # recipient (nagios/icinga) cannot determine, which fields are affected (and thus which test ++ # succeeded). Thus we need to make sure, that "fofields" is always defined (since our ++ # self-made trivial template language does not support expressions like "fofields || ofields"). ++ # Here "ofields" is a reasonable fallback value: it contains all datasets with status "OK". ++ if ($hash->{'fofields'} eq '') { ++ $hash->{'fofields'} = $hash->{'ofields'}; ++ } + $hash->{'numcfields'} = scalar @{$stats{'critical'}}; + $hash->{'numwfields'} = scalar @{$stats{'warning'}}; + $hash->{'numufields'} = scalar @{$stats{'unknown'}}; diff --git a/httpd_munin.conf b/httpd_cgi_graphs.conf similarity index 72% rename from httpd_munin.conf rename to httpd_cgi_graphs.conf index 5178d28..bef5228 100644 --- a/httpd_munin.conf +++ b/httpd_cgi_graphs.conf @@ -1,12 +1,15 @@ -# Example configuration! Change this to suit your needs. +# Example configuration for Apache httpd with cgi generated graphs. +# +# To use this example config file you need to enable cgi graphs in Munin. Add +# following three lines to /etc/munin/conf.d/local.conf (without # character): +# +# graph_strategy cgi +# html_strategy cgi +# cgiurl_graph /munin/graph +# +# Then copy this file to /etc/httpd/conf.d/ directory and restart httpd. +# # Access Munin at http://localhost/munin/ -# -# To use cgi generated files copy this file to /etc/httpd/conf.d/ and add -# following three lines to /etc/munin/conf.d/local.conf (uncommented): -# -# graph_strategy cgi -# html_strategy cgi -# cgiurl_graph /munin/graph diff --git a/httpd_cron_graphs.conf b/httpd_cron_graphs.conf new file mode 100644 index 0000000..15e1ac2 --- /dev/null +++ b/httpd_cron_graphs.conf @@ -0,0 +1,28 @@ +# Example configuration for Apache httpd with cron generated graphs. +# +# To use this example config simply copy this to /etc/httpd/conf.d/ +# directory and restart httpd. +# +# Access Munin at http://localhost/munin/ + + + + ServerName localhost + ServerAdmin root@localhost + ErrorLog /var/log/httpd/munin.localhost-error.log + CustomLog /var/log/httpd/munin.localhost-access.log combined + DocumentRoot /var/www/html + + ScriptAlias /munin-cgi/munin-cgi-graph /var/www/html/munin/cgi/munin-cgi-graph + + # FastCGI + + Options +ExecCGI + + SetHandler fcgid-script + + + SetHandler cgi-script + + + diff --git a/munin.spec b/munin.spec index 58b75ce..48246f9 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.40 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -14,8 +14,9 @@ Source12: munin.tmpfilesd Source13: munin.cron.d Source14: asyncd-ssh.config Source15: munin-rrdcached.service -Source16: httpd_munin.conf -Source17: nginx_munin.conf +Source16: httpd_cgi_graphs.conf +Source17: httpd_cron_graphs.conf +Source18: nginx_cgi_graphs.conf # Node sources Source20: munin-node.conf @@ -41,6 +42,7 @@ Patch102: bind9-category_dns.patch Patch103: nginx_requests-remove-unused-port.patch Patch104: squid.patch Patch105: Fix-building-on-Perl-without-dot-in-INC.patch +Patch106: f0fa843b34918a43e312777037c762d5638af275.patch # Use mysql plugin from munin 3.0 series Source200: mysql_ @@ -296,9 +298,11 @@ sed -i -e ' %patch103 -p1 %patch104 -p1 %patch105 -p1 +%patch106 -p1 cp %SOURCE16 . cp %SOURCE17 . +cp %SOURCE18 . %build @@ -438,6 +442,13 @@ mkdir -p %{buildroot}%{_localstatedir}/log/munin-node touch %{buildroot}%{_localstatedir}/log/munin-node/munin-node.log +### Keep old apache munin.conf files (ghost) ### + +mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d +touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin.conf +touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin-cgi.conf + + %pre getent group munin >/dev/null || groupadd -r munin getent passwd munin >/dev/null || \ @@ -453,6 +464,18 @@ exit 0 /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-limits.log [ -f %{_localstatedir}/log/munin/munin-update.log ] || \ /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-update.log +# On new install only: create simple localhost config. +if [ "$1" = "1" ]; then + if [ ! -f %{_sysconfdir}/munin/conf.d/local.conf ]; then + cat - >> %{_sysconfdir}/munin/conf.d/local.conf <= 7 || 0%{?fedora} >= 16 %systemd_post munin-rrdcached.service @@ -646,6 +669,7 @@ fi %endif %dir %{_datadir}/munin/plugins %{_datadir}/munin/plugins/munin_stats +%ghost %{_sysconfdir}/httpd/conf.d/munin.conf %files node @@ -696,7 +720,8 @@ fi %files common %license COPYING -%doc ChangeLog HACKING.pod perltidyrc httpd_munin.conf nginx_munin.conf +%doc ChangeLog HACKING.pod perltidyrc +%doc httpd_cgi_graphs.conf httpd_cron_graphs.conf nginx_cgi_graphs.conf %dir %{perl_vendorlib}/Munin %{perl_vendorlib}/Munin/Common @@ -741,9 +766,15 @@ fi %{_initrddir}/munin-cgi-html %{_initrddir}/munin-cgi-graph %endif +%ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %changelog +* Mon Sep 17 2018 Kim B. Heino - 2.0.40-4 +- rhbz#1327512: munin-limits not reporting actual state of variable to NSCA +- rhbz#1629438: Create localhost-config on first install +- rhbz#1629438: Include old httpd config files as ghost + * Fri Sep 14 2018 Kim B. Heino - 2.0.40-3 - rhbz#1628390: Fix missing Perl dependencies in Fedora - Obsolete munin-netip-plugins for epel upgrade path diff --git a/nginx_munin.conf b/nginx_cgi_graphs.conf similarity index 66% rename from nginx_munin.conf rename to nginx_cgi_graphs.conf index ed6b16b..92b41fc 100644 --- a/nginx_munin.conf +++ b/nginx_cgi_graphs.conf @@ -1,12 +1,15 @@ -# Example configuration! Change this to suit your needs. +# Example configuration for nginx with cgi generated graphs. +# +# To use this example config file you need to enable cgi graphs in Munin. Add +# following three lines to /etc/munin/conf.d/local.conf (without # character): +# +# graph_strategy cgi +# html_strategy cgi +# cgiurl_graph /munin/graph +# +# Then copy this file to /etc/nginx/conf.d/ directory and restart nginx. +# # Access Munin at http://localhost/munin/ -# -# To use cgi generated files copy this file to /etc/nginx/conf.d/ and add -# following three lines to /etc/munin/conf.d/local.conf (uncommented): -# -# graph_strategy cgi -# html_strategy cgi -# cgiurl_graph /munin/graph server { From 0f7af8c1ba5e3f4ef4b2aeff3f29c6922ee4863e Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 17 Sep 2018 10:21:03 +0300 Subject: [PATCH 038/108] spec: ghost /etc/munin/munin-htpasswd --- munin.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/munin.spec b/munin.spec index 48246f9..939fe1f 100644 --- a/munin.spec +++ b/munin.spec @@ -447,6 +447,7 @@ touch %{buildroot}%{_localstatedir}/log/munin-node/munin-node.log mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin.conf touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin-cgi.conf +touch %{buildroot}%{_sysconfdir}/munin/munin-htpasswd %pre @@ -669,7 +670,8 @@ fi %endif %dir %{_datadir}/munin/plugins %{_datadir}/munin/plugins/munin_stats -%ghost %{_sysconfdir}/httpd/conf.d/munin.conf +%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf +%config(noreplace) %ghost %{_sysconfdir}/munin/munin-htpasswd %files node @@ -766,7 +768,7 @@ fi %{_initrddir}/munin-cgi-html %{_initrddir}/munin-cgi-graph %endif -%ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf +%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %changelog From 88a4b3cca83db19ab1c726384aaddc6ad0e44977 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 17 Sep 2018 11:18:39 +0300 Subject: [PATCH 039/108] 00-default: add mailman user config --- 00-default | 3 +++ 1 file changed, 3 insertions(+) diff --git a/00-default b/00-default index 2a8fcd0..822a698 100644 --- a/00-default +++ b/00-default @@ -40,6 +40,9 @@ user root [load] env.load_warning 100 +[mailman] +user mailman + [munin_stats] env.fields update limits From 220306055f0640fcbf3a381205aa5e8dc1be3fd4 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 17 Sep 2018 12:12:20 +0300 Subject: [PATCH 040/108] nginx_cgi_graphs.conf: add note about cgi services --- nginx_cgi_graphs.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/nginx_cgi_graphs.conf b/nginx_cgi_graphs.conf index 92b41fc..3b60cb0 100644 --- a/nginx_cgi_graphs.conf +++ b/nginx_cgi_graphs.conf @@ -8,6 +8,7 @@ # cgiurl_graph /munin/graph # # Then copy this file to /etc/nginx/conf.d/ directory and restart nginx. +# Services munin-cgi-graph and munin-cgi-html must also be started. # # Access Munin at http://localhost/munin/ From 8f612ddf36d06e6f204b622c3aebbf9b5945ab09 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 17 Sep 2018 12:22:39 +0300 Subject: [PATCH 041/108] spec: move apache ghost files to apache subpackage --- munin.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/munin.spec b/munin.spec index 939fe1f..3aaa0a6 100644 --- a/munin.spec +++ b/munin.spec @@ -670,7 +670,6 @@ fi %endif %dir %{_datadir}/munin/plugins %{_datadir}/munin/plugins/munin_stats -%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf %config(noreplace) %ghost %{_sysconfdir}/munin/munin-htpasswd @@ -756,6 +755,8 @@ fi %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-graph.log %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-html.log %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-graph.log +%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf +%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %files cgi @@ -768,7 +769,6 @@ fi %{_initrddir}/munin-cgi-html %{_initrddir}/munin-cgi-graph %endif -%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %changelog From d9f0b0421bad8d5a8f88cef46c25b07204bb4046 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 17 Sep 2018 13:03:48 +0300 Subject: [PATCH 042/108] spec: remove nginx/apache conflict, easier to switch between servers --- munin.spec | 2 -- 1 file changed, 2 deletions(-) diff --git a/munin.spec b/munin.spec index 3aaa0a6..f692236 100644 --- a/munin.spec +++ b/munin.spec @@ -213,7 +213,6 @@ Requires: %{name} = %{version} Requires: munin-cgi Requires: nginx-filesystem Provides: munin-web-support = %{version}-%{release} -Conflicts: munin-apache BuildArch: noarch @@ -227,7 +226,6 @@ Requires: %{name} = %{version} Requires: httpd Requires: mod_fcgid Provides: munin-web-support = %{version}-%{release} -Conflicts: munin-nginx BuildArch: noarch From a2d5416c24f98354a6b85152930f87412e560274 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 17 Sep 2018 13:06:43 +0300 Subject: [PATCH 043/108] spec: move apache ghosts to main package as yum install nginx, not apache --- munin.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/munin.spec b/munin.spec index f692236..d4ff092 100644 --- a/munin.spec +++ b/munin.spec @@ -669,6 +669,8 @@ fi %dir %{_datadir}/munin/plugins %{_datadir}/munin/plugins/munin_stats %config(noreplace) %ghost %{_sysconfdir}/munin/munin-htpasswd +%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf +%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %files node @@ -753,8 +755,6 @@ fi %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-graph.log %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-html.log %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-graph.log -%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf -%config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %files cgi From 39c1f46924208d873582c42439bd6c5f66955073 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sat, 24 Nov 2018 09:46:11 +0200 Subject: [PATCH 044/108] Upgrade to 2.0.43 --- ...d860c17d7997d64267963f91ed75ca8a3e03.patch | 36 +++++++++++++ Fix-building-on-Perl-without-dot-in-INC.patch | 24 --------- asyncd_retry_connect.patch | 19 ------- asyncd_unknown_email_flood.patch | 26 --------- bind9-category_dns.patch | 24 --------- ...843b34918a43e312777037c762d5638af275.patch | 40 -------------- munin-cgi-graph.socket | 3 +- munin-cgi-html.socket | 3 +- munin.spec | 54 ++++++++++++------- munin.tmpfilesd | 4 +- nginx_requests-remove-unused-port.patch | 20 ------- postfix-category.patch | 36 +++++++++++++ sources | 2 +- squid.patch | 12 ----- 14 files changed, 114 insertions(+), 189 deletions(-) create mode 100644 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch delete mode 100644 Fix-building-on-Perl-without-dot-in-INC.patch delete mode 100644 asyncd_retry_connect.patch delete mode 100644 asyncd_unknown_email_flood.patch delete mode 100644 bind9-category_dns.patch delete mode 100644 f0fa843b34918a43e312777037c762d5638af275.patch delete mode 100644 nginx_requests-remove-unused-port.patch create mode 100644 postfix-category.patch delete mode 100644 squid.patch diff --git a/21b3d860c17d7997d64267963f91ed75ca8a3e03.patch b/21b3d860c17d7997d64267963f91ed75ca8a3e03.patch new file mode 100644 index 0000000..d3cba49 --- /dev/null +++ b/21b3d860c17d7997d64267963f91ed75ca8a3e03.patch @@ -0,0 +1,36 @@ +From 21b3d860c17d7997d64267963f91ed75ca8a3e03 Mon Sep 17 00:00:00 2001 +From: Lars Kruse +Date: Thu, 29 Mar 2018 03:15:42 +0200 +Subject: [PATCH] plugins nginx_*: change category from 'nginx' to 'webserver' + +--- + plugins/node.d/nginx_request | 2 +- + plugins/node.d/nginx_status | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/plugins/node.d/nginx_request.in b/plugins/node.d/nginx_request.in +index 38f1cbe6c..9cd41d7cf 100755 +--- a/plugins/node.d/nginx_request.in ++++ b/plugins/node.d/nginx_request.in +@@ -94,7 +94,7 @@ if ( exists $ARGV[0] and $ARGV[0] eq "config" ) + { + print "graph_title Nginx requests\n"; + print "graph_args --base 1000\n"; +- print "graph_category nginx\n"; ++ print "graph_category webserver\n"; + print "graph_vlabel Requests per \${graph_period}\n"; + print "request.type DERIVE\n"; + print "request.min 0\n"; +diff --git a/plugins/node.d/nginx_status.in b/plugins/node.d/nginx_status.in +index f69b6ab8d..1834dada4 100755 +--- a/plugins/node.d/nginx_status.in ++++ b/plugins/node.d/nginx_status.in +@@ -93,7 +93,7 @@ if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" ) { + if ( exists $ARGV[0] and $ARGV[0] eq "config" ) { + print "graph_title Nginx status\n"; + print "graph_args --base 1000\n"; +- print "graph_category nginx\n"; ++ print "graph_category webserver\n"; + print "graph_vlabel Connections\n"; + + print "total.label Active connections\n"; diff --git a/Fix-building-on-Perl-without-dot-in-INC.patch b/Fix-building-on-Perl-without-dot-in-INC.patch deleted file mode 100644 index d170b42..0000000 --- a/Fix-building-on-Perl-without-dot-in-INC.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up munin-2.0.33/master/Build.PL.orig munin-2.0.33/master/Build.PL ---- munin-2.0.33/master/Build.PL.orig 2017-05-25 12:15:34.037053427 +0200 -+++ munin-2.0.33/master/Build.PL 2017-05-25 12:15:53.935936213 +0200 -@@ -1,3 +1,4 @@ -+BEGIN { push @INC, '.'; } - use MasterBuilder; - - use warnings; -diff -up munin-2.0.33/node/Build.PL.orig munin-2.0.33/node/Build.PL ---- munin-2.0.33/node/Build.PL.orig 2017-05-25 12:16:06.121864433 +0200 -+++ munin-2.0.33/node/Build.PL 2017-05-25 12:16:17.849795350 +0200 -@@ -1,3 +1,4 @@ -+BEGIN { push @INC, '.'; } - use NodeBuilder; - - use warnings; -diff -up munin-2.0.33/plugins/Build.PL.orig munin-2.0.33/plugins/Build.PL ---- munin-2.0.33/plugins/Build.PL.orig 2017-05-25 12:16:30.426721266 +0200 -+++ munin-2.0.33/plugins/Build.PL 2017-05-25 12:16:40.500661926 +0200 -@@ -1,3 +1,4 @@ -+BEGIN { push @INC, '.'; } - use PluginsBuilder; - - use warnings; diff --git a/asyncd_retry_connect.patch b/asyncd_retry_connect.patch deleted file mode 100644 index 68cc4ca..0000000 --- a/asyncd_retry_connect.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -ur munin-2.0.25.orig/node/_bin/munin-asyncd.in munin-2.0.25/node/_bin/munin-asyncd.in ---- munin-2.0.25.orig/node/_bin/munin-asyncd.in 2016-06-28 12:11:38.423775572 +0300 -+++ munin-2.0.25/node/_bin/munin-asyncd.in 2016-06-28 12:15:23.841540075 +0300 -@@ -76,7 +76,14 @@ - my $sock = new IO::Socket::INET( - PeerAddr => "$host", - Proto => 'tcp' --) || die "Error creating socket: $!"; -+); -+if (!$sock) { -+ sleep 20; -+ $sock = new IO::Socket::INET( -+ PeerAddr => "$host", -+ Proto => 'tcp' -+ ) || die "Error creating socket: $!"; -+} - my $nodeheader = <$sock>; - print $sock "quit\n"; - close ($sock); diff --git a/asyncd_unknown_email_flood.patch b/asyncd_unknown_email_flood.patch deleted file mode 100644 index b12d4e4..0000000 --- a/asyncd_unknown_email_flood.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff -ur munin-2.0.18.orig/node/_bin/munin-asyncd.in munin-2.0.18/node/_bin/munin-asyncd.in ---- munin-2.0.18.orig/node/_bin/munin-asyncd.in 2013-11-12 22:13:23.000000000 +0200 -+++ munin-2.0.18/node/_bin/munin-asyncd.in 2013-12-03 15:52:45.215544280 +0200 -@@ -143,7 +143,11 @@ - MAIN: while($keepgoing) { - my $when = time; - -- my $when_next = $when + $timeout; # wake up at least every $timeout sec -+ my $when_next = int($when / $minrate) * $minrate + 180; -+ if ($when_next <= $when) { -+ $when_next = $when_next + $minrate; -+ } -+ - my $sock; - PLUGIN: foreach my $plugin (@plugins) { - # See if this plugin should be updated -@@ -154,8 +158,7 @@ - } - - # Should update it -- $last_updated{$plugin} = $when; -- $when_next = min($when_next, $when + max($plugin_rate, $minrate)); -+ $last_updated{$plugin} = $when - 180; - - if ($do_fork && fork()) { - # parent, return directly diff --git a/bind9-category_dns.patch b/bind9-category_dns.patch deleted file mode 100644 index 330380e..0000000 --- a/bind9-category_dns.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up munin-2.0.21/plugins/node.d/bind9.in.category_dns munin-2.0.21/plugins/node.d/bind9.in ---- munin-2.0.21/plugins/node.d/bind9.in.category_dns 2014-04-22 22:29:32.000000000 +0300 -+++ munin-2.0.21/plugins/node.d/bind9.in 2014-08-08 09:25:27.446004831 +0300 -@@ -106,7 +106,7 @@ sub do_config { - my $k; - - print "graph_title DNS Queries by type --graph_category BIND -+graph_category dns - graph_vlabel Queries / \${graph_period} - query_other.label Other - query_other.type DERIVE -diff -up munin-2.0.21/plugins/node.d/bind9_rndc.in.category_dns munin-2.0.21/plugins/node.d/bind9_rndc.in ---- munin-2.0.21/plugins/node.d/bind9_rndc.in.category_dns 2014-04-22 22:29:32.000000000 +0300 -+++ munin-2.0.21/plugins/node.d/bind9_rndc.in 2014-08-08 09:25:45.791004399 +0300 -@@ -197,7 +197,7 @@ close($stats); - if (defined($ARGV[0]) and ($ARGV[0] eq 'config')) { - print "graph_title DNS Queries by status\n"; - print "graph_vlabel queries / \${graph_period}\n"; -- print "graph_category BIND\n"; -+ print "graph_category dns\n"; - - for my $key (keys %IN) { - print "query_$key.label $key\n"; diff --git a/f0fa843b34918a43e312777037c762d5638af275.patch b/f0fa843b34918a43e312777037c762d5638af275.patch deleted file mode 100644 index c32481d..0000000 --- a/f0fa843b34918a43e312777037c762d5638af275.patch +++ /dev/null @@ -1,40 +0,0 @@ -From f0fa843b34918a43e312777037c762d5638af275 Mon Sep 17 00:00:00 2001 -From: Lars Kruse -Date: Sun, 26 Aug 2018 01:02:23 +0200 -Subject: [PATCH] Nagios command format: ensure non-empty plugin output - -Since 3f94d51a06 the fourth field of the lines written to "send_nsca" -could happen to be empty. See the trivial example: "munin-limits --force". -This empty field prevented the receiver (nagios/icinga) from associating -this status report with a specific test (which is supposed to be encoded -in the fourth field of the output). - -Thus we ensure, that "fofields" is always defined by falling back to -"ofields" (all fields that are currently in "OK" state). - -Closes: #743, #1052 ---- - master/lib/Munin/Master/LimitsOld.pm | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/master/lib/Munin/Master/LimitsOld.pm b/master/lib/Munin/Master/LimitsOld.pm -index f0a286225..1d06025a5 100644 ---- a/master/lib/Munin/Master/LimitsOld.pm -+++ b/master/lib/Munin/Master/LimitsOld.pm -@@ -647,6 +647,16 @@ sub generate_service_message { - $hash->{'ufields'} = join " ", @{$stats{'unknown'}}; - $hash->{'fofields'} = join " ", @{$stats{'foks'}}; - $hash->{'ofields'} = join " ", @{$stats{'ok'}}; -+ # The "fofields" (datasets that changed state from "failed" to "OK") can be empty under certain -+ # legitimate circumstances (e.g. "munin-limits --force" sends messages also for unchanged "OK" -+ # states). But we may never allow the fourth output field for NSCA to be empty - otherwise the -+ # recipient (nagios/icinga) cannot determine, which fields are affected (and thus which test -+ # succeeded). Thus we need to make sure, that "fofields" is always defined (since our -+ # self-made trivial template language does not support expressions like "fofields || ofields"). -+ # Here "ofields" is a reasonable fallback value: it contains all datasets with status "OK". -+ if ($hash->{'fofields'} eq '') { -+ $hash->{'fofields'} = $hash->{'ofields'}; -+ } - $hash->{'numcfields'} = scalar @{$stats{'critical'}}; - $hash->{'numwfields'} = scalar @{$stats{'warning'}}; - $hash->{'numufields'} = scalar @{$stats{'unknown'}}; diff --git a/munin-cgi-graph.socket b/munin-cgi-graph.socket index 3e4dd3d..85bfae8 100644 --- a/munin-cgi-graph.socket +++ b/munin-cgi-graph.socket @@ -3,8 +3,9 @@ Description=Munin FastCGI Graphs Socket [Socket] ListenStream=/run/munin/munin-cgi-graph.sock -SocketMode=0600 +SocketMode=0660 SocketUser=nginx +SocketGroup=munin [Install] WantedBy=sockets.target diff --git a/munin-cgi-html.socket b/munin-cgi-html.socket index c85a046..3dcdec6 100644 --- a/munin-cgi-html.socket +++ b/munin-cgi-html.socket @@ -3,8 +3,9 @@ Description=Munin FastCGI HTML Pages Socket [Socket] ListenStream=/run/munin/munin-cgi-html.sock -SocketMode=0600 +SocketMode=0660 SocketUser=nginx +SocketGroup=munin [Install] WantedBy=sockets.target diff --git a/munin.spec b/munin.spec index d4ff092..ab65c11 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.40 -Release: 4%{?dist} +Version: 2.0.43 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -36,13 +36,8 @@ Source34: munin-cgi-html.service Source35: munin-cgi-html.socket # Patches -Patch100: asyncd_unknown_email_flood.patch -Patch101: asyncd_retry_connect.patch -Patch102: bind9-category_dns.patch -Patch103: nginx_requests-remove-unused-port.patch -Patch104: squid.patch -Patch105: Fix-building-on-Perl-without-dot-in-INC.patch -Patch106: f0fa843b34918a43e312777037c762d5638af275.patch +Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch +Patch102: postfix-category.patch # Use mysql plugin from munin 3.0 series Source200: mysql_ @@ -170,6 +165,7 @@ RRDtool. %package common Summary: Network-wide resource monitoring tool (common files) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires: acl Requires(pre): shadow-utils BuildArch: noarch @@ -290,13 +286,8 @@ sed -i -e ' s,^CHGRP := \(.*\),CHGRP := echo Not done: chgrp,; ' Makefile.config -%patch100 -p1 %patch101 -p1 %patch102 -p1 -%patch103 -p1 -%patch104 -p1 -%patch105 -p1 -%patch106 -p1 cp %SOURCE16 . cp %SOURCE17 . @@ -390,7 +381,7 @@ cp %{SOURCE11} %{buildroot}%{_sysconfdir}/logrotate.d/munin # Install tmpfiles config %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 mkdir -p %{buildroot}%{_tmpfilesdir} -mkdir -p %{buildroot}/run/%{name} +mkdir -p %{buildroot}%{_rundir}/munin cp %{SOURCE12} %{buildroot}%{_tmpfilesdir}/%{name}.conf %endif @@ -485,6 +476,11 @@ fi %postun %systemd_postun_with_restart munin-rrdcached.service + + +%triggerun -- munin < 2.0.42-2 +setfacl --remove-all %{_rundir}/munin +chmod 775 %{_rundir}/munin %endif @@ -574,6 +570,13 @@ useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%triggerun common -- munin-common < 2.0.42-2 +setfacl --remove-all %{_rundir}/munin +chmod 775 %{_rundir}/munin +%endif + + %post nginx # Create log files [ -f %{_localstatedir}/log/munin/munin-cgi-graph.log ] || \ @@ -710,7 +713,7 @@ fi %{_prefix}/lib/firewalld/services/munin-node.xml %endif %attr(-, munin, munin) %dir %{_sharedstatedir}/munin -%attr(-, root, munin) %dir %{_sharedstatedir}/munin/plugin-state +%attr(0775, root, munin) %dir %{_sharedstatedir}/munin/plugin-state %attr(-, root, munin) %dir %{_sharedstatedir}/munin/plugin-state/root %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/plugin-state/munin %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/spool @@ -728,9 +731,9 @@ fi %{perl_vendorlib}/Munin/Common %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %{_tmpfilesdir}/%{name}.conf -%attr(-, munin, munin) %dir /run/munin +%attr(0775, root, munin) %dir %{_rundir}/munin %else -%attr(-, munin, munin) %dir %{_localstatedir}/run/munin +%attr(0775, root, munin) %dir %{_localstatedir}/run/munin %endif @@ -770,6 +773,21 @@ fi %changelog +* Mon Nov 19 2018 Kim B. Heino - 2.0.43-1 +- Upgrade to 2.0.43 + +* Sun Sep 30 2018 Kim B. Heino - 2.0.42-3 +- Fix postfix and nginx categories + +* Sat Sep 22 2018 Kim B. Heino - 2.0.42-2 +- Change /run/munin owner to root:munin for clean update without dac override + +* Fri Sep 21 2018 Kim B. Heino - 2.0.42-1 +- Upgrade to 2.0.42 + +* Thu Sep 20 2018 Kim B. Heino - 2.0.41-1 +- Upgrade to 2.0.41 + * Mon Sep 17 2018 Kim B. Heino - 2.0.40-4 - rhbz#1327512: munin-limits not reporting actual state of variable to NSCA - rhbz#1629438: Create localhost-config on first install diff --git a/munin.tmpfilesd b/munin.tmpfilesd index 3071b15..bdedfad 100644 --- a/munin.tmpfilesd +++ b/munin.tmpfilesd @@ -1,3 +1 @@ -d /run/munin 0755 munin munin - -a+ /run/munin/ - - - - user:root:rwx -a+ /run/munin/ - - - - mask:rwx +d /run/munin 0775 root munin - diff --git a/nginx_requests-remove-unused-port.patch b/nginx_requests-remove-unused-port.patch deleted file mode 100644 index b6b9b74..0000000 --- a/nginx_requests-remove-unused-port.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -ur munin-2.0.35.orig/plugins/node.d/nginx_request.in munin-2.0.35/plugins/node.d/nginx_request.in ---- munin-2.0.35.orig/plugins/node.d/nginx_request.in 2018-03-21 09:12:11.000000000 +0200 -+++ munin-2.0.35/plugins/node.d/nginx_request.in 2018-03-21 09:55:44.541415941 +0200 -@@ -66,7 +66,6 @@ - } - - my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://localhost/nginx_status"; --my $port = exists $ENV{'port'} ? $ENV{'port'} : "80"; - - if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" ) - { -@@ -99,7 +98,7 @@ - print "graph_vlabel Requests per \${graph_period}\n"; - print "request.type DERIVE\n"; - print "request.min 0\n"; -- print "request.label requests port $port\n"; -+ print "request.label requests\n"; - print "request.draw LINE\n"; - - exit 0; diff --git a/postfix-category.patch b/postfix-category.patch new file mode 100644 index 0000000..e92973c --- /dev/null +++ b/postfix-category.patch @@ -0,0 +1,36 @@ +diff -ur munin-2.0.42.orig/plugins/node.d/postfix_mailqueue.in munin-2.0.42/plugins/node.d/postfix_mailqueue.in +--- munin-2.0.42.orig/plugins/node.d/postfix_mailqueue.in 2018-09-21 05:11:11.000000000 +0300 ++++ munin-2.0.42/plugins/node.d/postfix_mailqueue.in 2018-09-30 13:33:21.825373214 +0300 +@@ -103,7 +103,7 @@ + cat <<'EOF' + graph_title Postfix Mailqueue + graph_vlabel Mails in queue +-graph_category postfix ++graph_category mail + graph_total Total + active.label active + deferred.label deferred +diff -ur munin-2.0.42.orig/plugins/node.d/postfix_mailstats.in munin-2.0.42/plugins/node.d/postfix_mailstats.in +--- munin-2.0.42.orig/plugins/node.d/postfix_mailstats.in 2018-09-21 05:11:11.000000000 +0300 ++++ munin-2.0.42/plugins/node.d/postfix_mailstats.in 2018-09-30 13:33:14.492320072 +0300 +@@ -137,7 +137,7 @@ + print "graph_vlabel mails / \${graph_period}\n"; + print "graph_scale no\n"; + print "graph_total Total\n"; +- print "graph_category postfix\n"; ++ print "graph_category mail\n"; + print "graph_period minute\n"; + print "delivered.label delivered\n"; + print "delivered.type DERIVE\n"; +diff -ur munin-2.0.42.orig/plugins/node.d/postfix_mailvolume.in munin-2.0.42/plugins/node.d/postfix_mailvolume.in +--- munin-2.0.42.orig/plugins/node.d/postfix_mailvolume.in 2018-09-21 05:11:11.000000000 +0300 ++++ munin-2.0.42/plugins/node.d/postfix_mailvolume.in 2018-09-30 13:33:06.602262890 +0300 +@@ -133,7 +133,7 @@ + print "graph_args --base 1000 -l 0\n"; + print "graph_vlabel bytes / \${graph_period}\n"; + print "graph_scale yes\n"; +- print "graph_category postfix\n"; ++ print "graph_category mail\n"; + print "volume.label delivered volume\n"; + print "volume.type DERIVE\n"; + print "volume.min 0\n"; diff --git a/sources b/sources index 00d96f3..1e8091a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.40.tar.gz) = d4870119980441f7f65fc8981eeffdd5f6bee42f72ce8cfe0fa37aa9142258903565e027bc80e87404616bad8a3d38b0c8c9b7b2559d179084d7a086987745d2 +SHA512 (munin-2.0.43.tar.gz) = 4ba5de358f61b4e56fac347b37a2f4903e7b0d639aede90fb49e13730b9f09dcce3e73d1a74faa42acdcd7b1dd5cbcca97dc08936c7e14042fb642ca9123b008 diff --git a/squid.patch b/squid.patch deleted file mode 100644 index ce87e32..0000000 --- a/squid.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur munin-2.0.17.orig/plugins/node.d/squid_traffic.in munin-2.0.17/plugins/node.d/squid_traffic.in ---- munin-2.0.17.orig/plugins/node.d/squid_traffic.in 2013-07-19 19:30:03.000000000 +0300 -+++ munin-2.0.17/plugins/node.d/squid_traffic.in 2013-11-18 12:07:38.459509488 +0200 -@@ -126,7 +126,7 @@ - $cachemgr->syswrite($request, length($request)); - my @lines = $cachemgr->getlines(); - for(my $i = 0; $i <= $#lines; $i++) { -- if($lines[$i] =~ /$target\s+(\d+)/) { -+ if($lines[$i] =~ /$target\s+(-?\d+)/) { - print "$1.value $2\n"; - } - } From 635b632d28ade43c4aa24cdd75be02fe668c5aa5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 1 Feb 2019 11:43:44 +0000 Subject: [PATCH 045/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index ab65c11..26469ed 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.43 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -773,6 +773,9 @@ fi %changelog +* Fri Feb 01 2019 Fedora Release Engineering - 2.0.43-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Mon Nov 19 2018 Kim B. Heino - 2.0.43-1 - Upgrade to 2.0.43 From 6273812ad52d1947689b1cd050648afc071416bf Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 8 Feb 2019 09:15:18 +0200 Subject: [PATCH 046/108] Upgrade to 2.0.45 --- 00-default | 3 +++ munin.spec | 18 ++++++++++++------ postfix-category.patch | 2 +- sources | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/00-default b/00-default index 822a698..0a21efd 100644 --- a/00-default +++ b/00-default @@ -73,5 +73,8 @@ env.PGPORT 5432 user root env.mspqueue /var/spool/clientmqueue +[smart_*] +user root + [vlan*] user root diff --git a/munin.spec b/munin.spec index 26469ed..a5ab937 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.43 -Release: 2%{?dist} +Version: 2.0.45 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -39,7 +39,7 @@ Source35: munin-cgi-html.socket Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch Patch102: postfix-category.patch -# Use mysql plugin from munin 3.0 series +# Use some plugins from munin 3.0 branch Source200: mysql_ # Plugin config @@ -335,7 +335,7 @@ mv %{buildroot}%{_datadir}/munin/munin-asyncd %{buildroot}%{_sbindir}/munin-asyn # Remove the Sybase plugin for now, as they need perl modules that are not available rm -f %{buildroot}%{_datadir}/munin/plugins/sybase_space -# Update mysql plugin +# Update some plugins from 3.0 branch cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ # Install plugin config @@ -773,8 +773,14 @@ fi %changelog -* Fri Feb 01 2019 Fedora Release Engineering - 2.0.43-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild +* Fri Feb 8 2019 Kim B. Heino - 2.0.45-1 +- Upgrade to 2.0.45 + +* Mon Jan 28 2019 Kim B. Heino - 2.0.44-2 +- Add smart_ plugin config to 00-default + +* Thu Dec 20 2018 Kim B. Heino - 2.0.44-1 +- Upgrade to 2.0.44 * Mon Nov 19 2018 Kim B. Heino - 2.0.43-1 - Upgrade to 2.0.43 diff --git a/postfix-category.patch b/postfix-category.patch index e92973c..3f2ff29 100644 --- a/postfix-category.patch +++ b/postfix-category.patch @@ -13,7 +13,7 @@ diff -ur munin-2.0.42.orig/plugins/node.d/postfix_mailqueue.in munin-2.0.42/plug diff -ur munin-2.0.42.orig/plugins/node.d/postfix_mailstats.in munin-2.0.42/plugins/node.d/postfix_mailstats.in --- munin-2.0.42.orig/plugins/node.d/postfix_mailstats.in 2018-09-21 05:11:11.000000000 +0300 +++ munin-2.0.42/plugins/node.d/postfix_mailstats.in 2018-09-30 13:33:14.492320072 +0300 -@@ -137,7 +137,7 @@ +@@ -141,7 +141,7 @@ print "graph_vlabel mails / \${graph_period}\n"; print "graph_scale no\n"; print "graph_total Total\n"; diff --git a/sources b/sources index 1e8091a..1fb6653 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.43.tar.gz) = 4ba5de358f61b4e56fac347b37a2f4903e7b0d639aede90fb49e13730b9f09dcce3e73d1a74faa42acdcd7b1dd5cbcca97dc08936c7e14042fb642ca9123b008 +SHA512 (munin-2.0.45.tar.gz) = 0aee394a7b256b8008be12e743781b5be8e9dea81fdf6cb1a229403b8ec33d2c6c3a7ea3f30b46fe160da4ba433e870c78efbf58b871ebb067c4ee3e46e7c41a From 1c7519486aefc9eef68ac2bb166a724f4eaa759e Mon Sep 17 00:00:00 2001 From: Jozef Mlich Date: Wed, 6 Mar 2019 16:31:31 +0000 Subject: [PATCH 047/108] Update munin.spec Without perl-Net-CIDR doesn't work cidr_allow settings in /etc/munin/munin-node.conf The log /var/log/munin-node/munin-node.log contains following message: Can't locate Net/CIDR.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/share/perl5/vendor_perl/Net/Server.pm line 601. --- munin.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/munin.spec b/munin.spec index a5ab937..5ff2843 100644 --- a/munin.spec +++ b/munin.spec @@ -119,6 +119,7 @@ Requires: hdparm Requires: bc Requires: /usr/bin/which Requires: conntrack-tools +Requires: perl(Net::CIDR) Requires: perl(Net::Server) Requires: perl(IO::Socket::INET6) Requires: perl(Net::SSLeay) From 8a803e545e8b1c3475a0940baba458dde5972dc7 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 18 Mar 2019 18:09:22 +0200 Subject: [PATCH 048/108] spec: drop java subpackage --- munin.spec | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/munin.spec b/munin.spec index 5ff2843..b21fdef 100644 --- a/munin.spec +++ b/munin.spec @@ -63,8 +63,6 @@ BuildRequires: perl-Carp BuildRequires: systemd BuildRequires: firewalld-filesystem %endif -BuildRequires: java-devel -BuildRequires: jpackage-utils # Munin server requires Requires: %{name}-common = %{version} @@ -139,6 +137,10 @@ Provides: munin-async = %{version}-%{release} Obsoletes: munin-async < 2.0.39-4 Provides: munin-netip-plugins = %{version}-%{release} Obsoletes: munin-netip-plugins < 2.0.39-4 +Provides: munin-java-plugins = %{version}-%{release} +Obsoletes: munin-java-plugins < 2.0.39-2 +Provides: munin-plugins-java = %{version}-%{release} +Obsoletes: munin-plugins-java < 2.0.45-2 %description node @@ -180,18 +182,6 @@ This package contains common files that are used by both the server (munin) and node (munin-node) packages. -%package plugins-java -Summary: Java plugins for Munin resource monitoring -Requires: %{name}-node = %{version} -BuildArch: noarch -Provides: munin-java-plugins = %{version}-%{release} -Obsoletes: munin-java-plugins < 2.0.39-2 - - -%description plugins-java -Additional Java plugins for munin-node. - - %package plugins-ruby Summary: Ruby plugins for Munin resource monitoring Requires: %{name}-node = %{version} @@ -269,13 +259,12 @@ sed -i -e ' s,^DBDIR = \(.*\),DBDIR = $(DESTDIR)%{_sharedstatedir}/munin,; s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin,; s,^LOGDIR = \(.*\),LOGDIR = $(DESTDIR)%{_localstatedir}/log/munin,; -%if 0%{?fedora} >= 24 +%if 0%{rhel} >= 8 || 0%{?fedora} >= 24 s,^PYTHON := \(.*\),PYTHON := /usr/bin/python3,; %else s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; %endif s,^RUBY := \(.*\),RUBY := /usr/bin/ruby,; - s,^JAVALIBDIR = \(.*\),JAVALIBDIR = $(DESTDIR)%{_javadir},; s,^PERLLIB = \(.*\),PERLLIB = $(DESTDIR)%{perl_vendorlib},; s,^HOSTNAME := \(.*\),HOSTNAME := localhost.localdomain,; s,^PLUGINUSER := \(.*\),PLUGINUSER := munin,; @@ -285,6 +274,7 @@ sed -i -e ' s,^CHOWN := \(.*\),CHOWN := echo Not done: chown,; s,^CHMOD := \(.*\),CHMOD := echo Not done: chmod,; s,^CHGRP := \(.*\),CHGRP := echo Not done: chgrp,; + s,^JC := \(.*\),JC := /bin/false,; ' Makefile.config %patch101 -p1 @@ -296,12 +286,10 @@ cp %SOURCE18 . %build -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH make CONFIG=Makefile.config %install -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH make CONFIG=Makefile.config \ DESTDIR=%{buildroot} \ install @@ -705,7 +693,6 @@ fi %dir %{_datadir}/munin %{_datadir}/munin/munin-async %{_datadir}/munin/plugins/ -%exclude %{_datadir}/munin/plugins/jmx_ %exclude %{_datadir}/munin/plugins/tomcat_ %exclude %{_datadir}/munin/plugins/munin_stats %{perl_vendorlib}/Munin/Node @@ -738,11 +725,6 @@ fi %endif -%files plugins-java -%{_javadir}/munin-jmx-plugins.jar -%{_datadir}/munin/plugins/jmx_ - - %files plugins-ruby %{_datadir}/munin/plugins/tomcat_ From b62dde9de6414d162def978f87e147f08c08cf82 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 18 Mar 2019 18:11:47 +0200 Subject: [PATCH 049/108] spec: bump version --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index b21fdef..9710bb4 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.45 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -756,6 +756,9 @@ fi %changelog +* Mon Mar 18 2019 Kim B. Heino - 2.0.45-2 +- Drop munin-plugins-java subpackage + * Fri Feb 8 2019 Kim B. Heino - 2.0.45-1 - Upgrade to 2.0.45 From 88afd8c30ec7a4d365e5309292474984cf749280 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 18 Mar 2019 18:15:01 +0200 Subject: [PATCH 050/108] spec: fix "if %rhel" --- munin.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 9710bb4..1e58ef4 100644 --- a/munin.spec +++ b/munin.spec @@ -259,7 +259,7 @@ sed -i -e ' s,^DBDIR = \(.*\),DBDIR = $(DESTDIR)%{_sharedstatedir}/munin,; s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin,; s,^LOGDIR = \(.*\),LOGDIR = $(DESTDIR)%{_localstatedir}/log/munin,; -%if 0%{rhel} >= 8 || 0%{?fedora} >= 24 +%if 0%{?rhel} >= 8 || 0%{?fedora} >= 24 s,^PYTHON := \(.*\),PYTHON := /usr/bin/python3,; %else s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; From 296b5ff581a59eb78cc52599a191abab8ae09305 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Thu, 16 May 2019 08:10:32 +0300 Subject: [PATCH 051/108] Upgrade to 2.0.49 --- munin.spec | 8 +++++--- sources | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/munin.spec b/munin.spec index 1e58ef4..696db45 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.45 -Release: 2%{?dist} +Version: 2.0.49 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -688,7 +688,6 @@ fi %{_sbindir}/munin-node %{_sbindir}/munin-node-configure %{_sbindir}/munin-run -%{_sbindir}/munin-sched %{_sbindir}/munin-asyncd %dir %{_datadir}/munin %{_datadir}/munin/munin-async @@ -756,6 +755,9 @@ fi %changelog +* Thu May 16 2019 Kim B. Heino - 2.0.49-1 +- Upgrade to 2.0.49 + * Mon Mar 18 2019 Kim B. Heino - 2.0.45-2 - Drop munin-plugins-java subpackage diff --git a/sources b/sources index 1fb6653..8da620c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.45.tar.gz) = 0aee394a7b256b8008be12e743781b5be8e9dea81fdf6cb1a229403b8ec33d2c6c3a7ea3f30b46fe160da4ba433e870c78efbf58b871ebb067c4ee3e46e7c41a +SHA512 (munin-2.0.49.tar.gz) = 20f1f27aa1ff39ed92c967a13581ae199930323f5d2b62b62ce0a548a4cf561595e85d069e836b156c05d4a94c66328009aba56cb1b06c4b2719fbd9e1061ca4 From bb516325ccc15ff2fac344fb504e6b802c3394ec Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 31 May 2019 16:24:36 +0200 Subject: [PATCH 052/108] Perl 5.30 rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 696db45..79d9c82 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.49 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -755,6 +755,9 @@ fi %changelog +* Fri May 31 2019 Jitka Plesnikova - 2.0.49-2 +- Perl 5.30 rebuild + * Thu May 16 2019 Kim B. Heino - 2.0.49-1 - Upgrade to 2.0.49 From b44176df1ddb3151d811d0fb4a175b9899e98165 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sat, 13 Jul 2019 10:52:50 +0300 Subject: [PATCH 053/108] rhbz#1721384: Mark .htaccess as ghost, include it to example config files Re-add munin-plugins-java subpackage for rhel6 and rhel7 --- httpd_cgi_graphs.conf | 21 ++++++++++++++++++++ httpd_cron_graphs.conf | 21 ++++++++++++++++++++ munin.spec | 44 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 85 insertions(+), 1 deletion(-) diff --git a/httpd_cgi_graphs.conf b/httpd_cgi_graphs.conf index bef5228..7a3787e 100644 --- a/httpd_cgi_graphs.conf +++ b/httpd_cgi_graphs.conf @@ -38,3 +38,24 @@ + + +# Uncomment following lines to require authentication: + +# +# AuthUserFile /etc/munin/munin-htpasswd +# AuthName "Munin" +# AuthType Basic +# Require valid-user +# # This next part requires mod_expires to be enabled. +# # +# # We could use around here, but I want it to be +# # as evident as possible that you either have to load mod_expires _or_ +# # you coment out/remove these lines. +# # +# # 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/httpd_cron_graphs.conf b/httpd_cron_graphs.conf index 15e1ac2..ed34bf8 100644 --- a/httpd_cron_graphs.conf +++ b/httpd_cron_graphs.conf @@ -26,3 +26,24 @@ + + +# Uncomment following lines to require authentication: + +# +# AuthUserFile /etc/munin/munin-htpasswd +# AuthName "Munin" +# AuthType Basic +# Require valid-user +# # This next part requires mod_expires to be enabled. +# # +# # We could use around here, but I want it to be +# # as evident as possible that you either have to load mod_expires _or_ +# # you coment out/remove these lines. +# # +# # 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.spec b/munin.spec index 79d9c82..a5211ef 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.49 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -63,6 +63,10 @@ BuildRequires: perl-Carp BuildRequires: systemd BuildRequires: firewalld-filesystem %endif +%if 0%{?rhel} <= 7 +BuildRequires: java-devel +BuildRequires: jpackage-utils +%endif # Munin server requires Requires: %{name}-common = %{version} @@ -137,10 +141,12 @@ Provides: munin-async = %{version}-%{release} Obsoletes: munin-async < 2.0.39-4 Provides: munin-netip-plugins = %{version}-%{release} Obsoletes: munin-netip-plugins < 2.0.39-4 +%if 0%{?rhel} >= 8 || 0%{?fedora} >= 28 Provides: munin-java-plugins = %{version}-%{release} Obsoletes: munin-java-plugins < 2.0.39-2 Provides: munin-plugins-java = %{version}-%{release} Obsoletes: munin-plugins-java < 2.0.45-2 +%endif %description node @@ -182,6 +188,20 @@ This package contains common files that are used by both the server (munin) and node (munin-node) packages. +%if 0%{?rhel} <= 7 +%package plugins-java +Summary: Java plugins for Munin resource monitoring +Requires: %{name}-node = %{version} +BuildArch: noarch +Provides: munin-java-plugins = %{version}-%{release} +Obsoletes: munin-java-plugins < 2.0.39-2 + + +%description plugins-java +Additional Java plugins for munin-node. +%endif + + %package plugins-ruby Summary: Ruby plugins for Munin resource monitoring Requires: %{name}-node = %{version} @@ -265,6 +285,9 @@ sed -i -e ' s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; %endif s,^RUBY := \(.*\),RUBY := /usr/bin/ruby,; +%if 0%{?rhel} <= 7 + s,^JAVALIBDIR = \(.*\),JAVALIBDIR = $(DESTDIR)%{_javadir},; +%endif s,^PERLLIB = \(.*\),PERLLIB = $(DESTDIR)%{perl_vendorlib},; s,^HOSTNAME := \(.*\),HOSTNAME := localhost.localdomain,; s,^PLUGINUSER := \(.*\),PLUGINUSER := munin,; @@ -286,10 +309,16 @@ cp %SOURCE18 . %build +%if 0%{?rhel} <= 7 +export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH +%endif make CONFIG=Makefile.config %install +%if 0%{?rhel} <= 7 +export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH +%endif make CONFIG=Makefile.config \ DESTDIR=%{buildroot} \ install @@ -663,6 +692,7 @@ fi %config(noreplace) %ghost %{_sysconfdir}/munin/munin-htpasswd %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf +%config(noreplace) %ghost %{_localstatedir}/www/html/munin/.htaccess %files node @@ -692,6 +722,7 @@ fi %dir %{_datadir}/munin %{_datadir}/munin/munin-async %{_datadir}/munin/plugins/ +%exclude %{_datadir}/munin/plugins/jmx_ %exclude %{_datadir}/munin/plugins/tomcat_ %exclude %{_datadir}/munin/plugins/munin_stats %{perl_vendorlib}/Munin/Node @@ -724,6 +755,13 @@ fi %endif +%if 0%{?rhel} <= 7 +%files plugins-java +%{_javadir}/munin-jmx-plugins.jar +%{_datadir}/munin/plugins/jmx_ +%endif + + %files plugins-ruby %{_datadir}/munin/plugins/tomcat_ @@ -755,6 +793,10 @@ fi %changelog +* Sat Jul 13 2019 Kim B. Heino - 2.0.49-3 +- rhbz#1721384: Mark .htaccess as ghost, include it to example config files +- Re-add munin-plugins-java subpackage for rhel6 and rhel7 + * Fri May 31 2019 Jitka Plesnikova - 2.0.49-2 - Perl 5.30 rebuild From e95e160d5b24ef919e0baee1e02133f70e6463e8 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sat, 13 Jul 2019 11:19:19 +0300 Subject: [PATCH 054/108] spec: drop java again, doesn't work... --- munin.spec | 41 ++--------------------------------------- 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/munin.spec b/munin.spec index a5211ef..4e9ae92 100644 --- a/munin.spec +++ b/munin.spec @@ -63,10 +63,6 @@ BuildRequires: perl-Carp BuildRequires: systemd BuildRequires: firewalld-filesystem %endif -%if 0%{?rhel} <= 7 -BuildRequires: java-devel -BuildRequires: jpackage-utils -%endif # Munin server requires Requires: %{name}-common = %{version} @@ -141,12 +137,10 @@ Provides: munin-async = %{version}-%{release} Obsoletes: munin-async < 2.0.39-4 Provides: munin-netip-plugins = %{version}-%{release} Obsoletes: munin-netip-plugins < 2.0.39-4 -%if 0%{?rhel} >= 8 || 0%{?fedora} >= 28 Provides: munin-java-plugins = %{version}-%{release} Obsoletes: munin-java-plugins < 2.0.39-2 Provides: munin-plugins-java = %{version}-%{release} Obsoletes: munin-plugins-java < 2.0.45-2 -%endif %description node @@ -188,20 +182,6 @@ This package contains common files that are used by both the server (munin) and node (munin-node) packages. -%if 0%{?rhel} <= 7 -%package plugins-java -Summary: Java plugins for Munin resource monitoring -Requires: %{name}-node = %{version} -BuildArch: noarch -Provides: munin-java-plugins = %{version}-%{release} -Obsoletes: munin-java-plugins < 2.0.39-2 - - -%description plugins-java -Additional Java plugins for munin-node. -%endif - - %package plugins-ruby Summary: Ruby plugins for Munin resource monitoring Requires: %{name}-node = %{version} @@ -285,9 +265,6 @@ sed -i -e ' s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; %endif s,^RUBY := \(.*\),RUBY := /usr/bin/ruby,; -%if 0%{?rhel} <= 7 - s,^JAVALIBDIR = \(.*\),JAVALIBDIR = $(DESTDIR)%{_javadir},; -%endif s,^PERLLIB = \(.*\),PERLLIB = $(DESTDIR)%{perl_vendorlib},; s,^HOSTNAME := \(.*\),HOSTNAME := localhost.localdomain,; s,^PLUGINUSER := \(.*\),PLUGINUSER := munin,; @@ -309,16 +286,10 @@ cp %SOURCE18 . %build -%if 0%{?rhel} <= 7 -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH -%endif make CONFIG=Makefile.config %install -%if 0%{?rhel} <= 7 -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH -%endif make CONFIG=Makefile.config \ DESTDIR=%{buildroot} \ install @@ -679,7 +650,8 @@ fi %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh %config(noreplace) %attr(0600, munin, munin) %{_sharedstatedir}/munin/.ssh/config %attr(-, munin, munin) %dir %{_localstatedir}/log/munin -%attr(-, munin, munin) %{_localstatedir}/www/html/munin +%attr(-, munin, munin) %dir %{_localstatedir}/www/html/munin +%attr(-, munin, munin) %{_localstatedir}/www/html/munin/cgi %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-html.log %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-limits.log %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-update.log @@ -722,7 +694,6 @@ fi %dir %{_datadir}/munin %{_datadir}/munin/munin-async %{_datadir}/munin/plugins/ -%exclude %{_datadir}/munin/plugins/jmx_ %exclude %{_datadir}/munin/plugins/tomcat_ %exclude %{_datadir}/munin/plugins/munin_stats %{perl_vendorlib}/Munin/Node @@ -755,13 +726,6 @@ fi %endif -%if 0%{?rhel} <= 7 -%files plugins-java -%{_javadir}/munin-jmx-plugins.jar -%{_datadir}/munin/plugins/jmx_ -%endif - - %files plugins-ruby %{_datadir}/munin/plugins/tomcat_ @@ -795,7 +759,6 @@ fi %changelog * Sat Jul 13 2019 Kim B. Heino - 2.0.49-3 - rhbz#1721384: Mark .htaccess as ghost, include it to example config files -- Re-add munin-plugins-java subpackage for rhel6 and rhel7 * Fri May 31 2019 Jitka Plesnikova - 2.0.49-2 - Perl 5.30 rebuild From 955c0adfa72ddc9c70acbcfab1e37292828475f1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 25 Jul 2019 17:58:50 +0000 Subject: [PATCH 055/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 4e9ae92..ed8a5da 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.49 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -757,6 +757,9 @@ fi %changelog +* Thu Jul 25 2019 Fedora Release Engineering - 2.0.49-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Sat Jul 13 2019 Kim B. Heino - 2.0.49-3 - rhbz#1721384: Mark .htaccess as ghost, include it to example config files From c8fdc68d415eac18da3258034eb7962e5f2bbb90 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Thu, 24 Oct 2019 15:53:31 +0300 Subject: [PATCH 056/108] Upgrade to 2.0.51 and improve comment about nginx/apache subpackages --- munin.conf | 18 ++++++++++++------ munin.spec | 23 ++++++++++++++--------- sources | 2 +- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/munin.conf b/munin.conf index 6818456..5d70186 100644 --- a/munin.conf +++ b/munin.conf @@ -1,7 +1,13 @@ -# -# Please don't edit this example config file. Create and edit -# file /etc/munin/conf.d/local.conf instead. -# +########################################################################### +# # +# Please don't edit this example config file. Create and edit # +# file /etc/munin/conf.d/local.conf instead. # +# # +# You must also install munin-nginx or munin-apache sub-package. See # +# /usr/share/doc/munin-*/*.conf for example nginx/apache config files # +# and installation instructions. # +# # +########################################################################### # The next three variables specifies where the location of the RRD # databases, the HTML output, logs and the lock/pid files. They all @@ -90,8 +96,8 @@ includedir /etc/munin/conf.d # Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime # something changes (OK -> WARNING, CRITICAL -> OK, etc) -#contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm -#contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm +#contact.someuser.command mail -s "Munin ${var:worst}: ${var:group}::${var:host}::${var:plugin}" somejuser@fnord.comm +#contact.anotheruser.command mail -s "Munin ${var:worst}: ${var:group}::${var:host}::${var:plugin}" anotheruser@blibb.comm # # For those with Nagios, the following might come in handy. In addition, # the services must be defined in the Nagios server as well. diff --git a/munin.spec b/munin.spec index ed8a5da..b403dd0 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.49 -Release: 4%{?dist} +Version: 2.0.51 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -102,10 +102,9 @@ it in your network. It will periodically poll all the nodes in your network it's aware of for data, which it in turn will use to create graphs and HTML pages, suitable for viewing with your graphical web browser of choice. -You must also install munin-nginx or munin-apache package. - -Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent -RRDtool. +You must also install munin-nginx or munin-apache sub-package. See +/usr/share/doc/munin-*/*.conf for example nginx/apache config files +and installation instructions. %package node @@ -161,9 +160,6 @@ relay information from other devices in your network that can't run Munin, such as a switch or a server running another operating system, by using SNMP or similar technology. -Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent -RRDtool. - %package common Summary: Network-wide resource monitoring tool (common files) @@ -757,6 +753,15 @@ fi %changelog +* Sat Oct 19 2019 Kim B. Heino - 2.0.51-1 +- Upgrade to 2.0.51 + +* Thu Oct 17 2019 Kim B. Heino - 2.0.50-2 +- Revert 290650ee2c as it breaks munin-limits on rhel + +* Thu Oct 17 2019 Kim B. Heino - 2.0.50-1 +- Upgrade to 2.0.50 + * Thu Jul 25 2019 Fedora Release Engineering - 2.0.49-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/sources b/sources index 8da620c..f14c16d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.49.tar.gz) = 20f1f27aa1ff39ed92c967a13581ae199930323f5d2b62b62ce0a548a4cf561595e85d069e836b156c05d4a94c66328009aba56cb1b06c4b2719fbd9e1061ca4 +SHA512 (munin-2.0.51.tar.gz) = 86e9d31cf755920fb42a1875c034847cdb0af4fab98d813c1362539f782e7c0c385c1c9c6653fafd7712bf54ce51f942fdb21f14204a7227b8cc95e11d9f388a From f78477cd28bb57193c1017b9c2b7f223b1b89ebc Mon Sep 17 00:00:00 2001 From: Gwyn Ciesla Date: Sun, 17 Nov 2019 12:53:11 -0600 Subject: [PATCH 057/108] "Adding package.cfg file" --- package.cfg | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 package.cfg diff --git a/package.cfg b/package.cfg new file mode 100644 index 0000000..66ea79d --- /dev/null +++ b/package.cfg @@ -0,0 +1,2 @@ +[koji] +targets = epel8 epel8-playground \ No newline at end of file From 5a7a5ce0e4472de913b29638d232dd25faf42f22 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 21 Jan 2020 13:05:13 +0200 Subject: [PATCH 058/108] Upgrade to 2.0.54 --- 00-default | 2 +- munin-asyncd.service | 5 ++++- munin-node.service | 5 ++++- munin.spec | 8 +++++++- sources | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/00-default b/00-default index 0a21efd..1811689 100644 --- a/00-default +++ b/00-default @@ -23,7 +23,7 @@ user root [df*] user root env.exclude none unknown binfmt_misc cgroup_root debugfs devpts devtmpfs fuse.gvfs-fuse-daemon iso9660 ramfs romfs rootfs rpc_pipefs squashfs udf -env.exclude_re ^/run/user/ ^/sys/ ^/var/lib/docker ^/media/ ^/var/lib/mock/ +env.exclude_re ^/run/user/ ^/sys/ ^/var/lib/docker ^/var/lib/containers/storage/overlay ^/var/lib/mock/ ^/media/ ^/mnt$ [exim*] group mail diff --git a/munin-asyncd.service b/munin-asyncd.service index 7dc783a..1396a2a 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -8,7 +8,10 @@ After=network.target network-online.target munin-node.service Type=simple User=munin ExecStart=/usr/sbin/munin-asyncd -PrivateTmp=true +PrivateDevices=yes +PrivateTmp=yes +ProtectHome=yes +ProtectSystem=full TimeoutStopSec=20s [Install] diff --git a/munin-node.service b/munin-node.service index a48b60a..ac57e54 100644 --- a/munin-node.service +++ b/munin-node.service @@ -8,7 +8,10 @@ PartOf=munin-asyncd.service Type=forking ExecStart=/usr/sbin/munin-node PIDFile=/run/munin/munin-node.pid -PrivateTmp=true +PrivateDevices=no +PrivateTmp=yes +ProtectHome=read-only +ProtectSystem=full TimeoutStopSec=30s [Install] diff --git a/munin.spec b/munin.spec index b403dd0..983ce7d 100644 --- a/munin.spec +++ b/munin.spec @@ -1,5 +1,5 @@ Name: munin -Version: 2.0.51 +Version: 2.0.54 Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 @@ -683,6 +683,7 @@ fi %endif %{_bindir}/munindoc +%{_bindir}/munin-get %{_sbindir}/munin-node %{_sbindir}/munin-node-configure %{_sbindir}/munin-run @@ -753,6 +754,11 @@ fi %changelog +* Tue Jan 21 2020 Kim B. Heino - 2.0.54-1 +- Upgrade to 2.0.54 +- Improve df's ignore list +- Use systemd hardening options for node and asyncd + * Sat Oct 19 2019 Kim B. Heino - 2.0.51-1 - Upgrade to 2.0.51 diff --git a/sources b/sources index f14c16d..16f47d9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.51.tar.gz) = 86e9d31cf755920fb42a1875c034847cdb0af4fab98d813c1362539f782e7c0c385c1c9c6653fafd7712bf54ce51f942fdb21f14204a7227b8cc95e11d9f388a +SHA512 (munin-2.0.54.tar.gz) = 48bb785d6e40f940e265f2e4723c09ccb54a8218b7f76766a3be23f91d0eaa1180fd1698c50d738c95bb983c586345bf5f65d0dab0e16d40b22fc0121955756b From 8793e82c1ebfb77d43686050e0650e6f62bfc13a Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 24 Jan 2020 12:27:32 +0200 Subject: [PATCH 059/108] Convert cronjob to systemd timer and tmpfiles, first epel8 build --- munin-asyncd.service | 2 +- munin-node.service | 2 +- munin.service | 12 ++++++++++++ munin.spec | 44 ++++++++++++++++++++++++++++--------------- munin.timer | 9 +++++++++ munin.tmpfilesd | 14 ++++++++++++++ nginx_cgi_graphs.conf | 4 +++- 7 files changed, 69 insertions(+), 18 deletions(-) create mode 100644 munin.service create mode 100644 munin.timer diff --git a/munin-asyncd.service b/munin-asyncd.service index 1396a2a..71fab85 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -1,6 +1,6 @@ [Unit] Description=Munin Node - Asynchronous Proxy -Documentation=man:munin-async http://munin.readthedocs.org/en/stable-2.0/reference/munin-async.html +Documentation=http://guide.munin-monitoring.org/en/latest/node/async.html Requires=munin-node.service After=network.target network-online.target munin-node.service diff --git a/munin-node.service b/munin-node.service index ac57e54..f3ca19c 100644 --- a/munin-node.service +++ b/munin-node.service @@ -1,6 +1,6 @@ [Unit] Description=Munin Node -Documentation=man:munin-node(1) http://munin.readthedocs.org/en/stable-2.0/reference/munin-node.html +Documentation=man:munin-node(1) http://guide.munin-monitoring.org/en/latest/node/index.html After=network.target network-online.target PartOf=munin-asyncd.service diff --git a/munin.service b/munin.service new file mode 100644 index 0000000..6b2bba4 --- /dev/null +++ b/munin.service @@ -0,0 +1,12 @@ +[Unit] +Description=Munin server to collect data from nodes +Documentation=man:munin-cron(8) +After=network.target network-online.target munin-node.service + +[Service] +User=munin +ExecStart=/usr/bin/munin-cron +PrivateDevices=yes +PrivateTmp=yes +ProtectHome=yes +ProtectSystem=full diff --git a/munin.spec b/munin.spec index 983ce7d..a73cc05 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.54 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -12,6 +12,8 @@ Source10: munin.conf Source11: munin.logrotate Source12: munin.tmpfilesd Source13: munin.cron.d +Source131: munin.timer +Source132: munin.service Source14: asyncd-ssh.config Source15: munin-rrdcached.service Source16: httpd_cgi_graphs.conf @@ -102,9 +104,9 @@ it in your network. It will periodically poll all the nodes in your network it's aware of for data, which it in turn will use to create graphs and HTML pages, suitable for viewing with your graphical web browser of choice. -You must also install munin-nginx or munin-apache sub-package. See -/usr/share/doc/munin-*/*.conf for example nginx/apache config files -and installation instructions. +You must also install munin-nginx or munin-apache sub-package to generate +web graphs. See /usr/share/doc/munin-*/*.conf for example nginx/apache config +files and installation instructions. %package node @@ -371,8 +373,13 @@ cp %{SOURCE12} %{buildroot}%{_tmpfilesdir}/%{name}.conf %endif # Add server cron job +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +cp %{SOURCE131} %{buildroot}%{_unitdir} +cp %{SOURCE132} %{buildroot}%{_unitdir} +%else mkdir -p %{buildroot}%{_sysconfdir}/cron.d cp %{SOURCE13} %{buildroot}%{_sysconfdir}/cron.d/munin +%endif # Default ssh config for asyncd mkdir -p %{buildroot}%{_sharedstatedir}/munin/.ssh @@ -452,15 +459,18 @@ EOF fi fi %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_post munin-rrdcached.service +%systemd_post munin-rrdcached.service munin.timer +if [ -f %{_sysconfdir}/cron.d/munin ]; then + systemctl enable --now munin.timer > /dev/null 2>&1 || : +fi %preun -%systemd_preun munin-rrdcached.service +%systemd_preun munin-rrdcached.service munin.timer %postun -%systemd_postun_with_restart munin-rrdcached.service +%systemd_postun_with_restart munin-rrdcached.service munin.timer %triggerun -- munin < 2.0.42-2 @@ -478,8 +488,7 @@ exit 0 %post node %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_post munin-node.service -%systemd_post munin-asyncd.service +%systemd_post munin-node.service munin-asyncd.service %firewalld_reload %else /sbin/chkconfig --add munin-node @@ -507,8 +516,7 @@ fi %preun node %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_preun munin-node.service -%systemd_preun munin-asyncd.service +%systemd_preun munin-node.service munin-asyncd.service %else if [ $1 -eq 0 ]; then /sbin/service munin-node stop >/dev/null 2>&1 || : @@ -521,8 +529,7 @@ fi %postun node %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_postun_with_restart munin-node.service -%systemd_postun_with_restart munin-asyncd.service +%systemd_postun_with_restart munin-node.service munin-asyncd.service %else if [ $1 -ge 1 ]; then /sbin/service munin-node condrestart >/dev/null 2>&1 @@ -538,8 +545,7 @@ fi chown -R munin:munin %{_sharedstatedir}/munin/spool/ >/dev/null 2>&1 %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 systemctl daemon-reload -%systemd_postun_with_restart munin-node.service -%systemd_postun_with_restart munin-asyncd.service +%systemd_postun_with_restart munin-node.service munin-asyncd.service %else if [ $1 -ge 1 ]; then /sbin/service munin-node condrestart >/dev/null 2>&1 @@ -626,7 +632,12 @@ fi %dir %{_sysconfdir}/munin/conf.d %dir %{_sysconfdir}/munin/templates %dir %{_sysconfdir}/munin/static +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +%{_unitdir}/munin.timer +%{_unitdir}/munin.service +%else %config(noreplace) %{_sysconfdir}/cron.d/munin +%endif %config(noreplace) %{_sysconfdir}/logrotate.d/munin %config(noreplace) %{_sysconfdir}/munin/munin.conf %config(noreplace) %{_sysconfdir}/munin/templates/* @@ -754,6 +765,9 @@ fi %changelog +* Fri Jan 24 2020 Kim B. Heino - 2.0.54-2 +- Convert cronjob to systemd timer and tmpfiles + * Tue Jan 21 2020 Kim B. Heino - 2.0.54-1 - Upgrade to 2.0.54 - Improve df's ignore list diff --git a/munin.timer b/munin.timer new file mode 100644 index 0000000..1e06efb --- /dev/null +++ b/munin.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Munin server to collect data from nodes +Documentation=man:munin-cron(8) + +[Timer] +OnCalendar=*:00/5 + +[Install] +WantedBy=timers.target diff --git a/munin.tmpfilesd b/munin.tmpfilesd index bdedfad..561bee2 100644 --- a/munin.tmpfilesd +++ b/munin.tmpfilesd @@ -1 +1,15 @@ +# Create runtime directory + d /run/munin 0775 root munin - + +# Cleanup for old rrd/png etc files + +x /var/lib/munin/.ssh +x /var/lib/munin/cgi-tmp +x /var/lib/munin/plugin-state +x /var/lib/munin/rrdcached + +e /var/lib/munin/cgi-tmp/* - - - 1d +e /var/lib/munin/plugin-state/* - - - 14d +e /var/lib/munin/spool - - - 14d +e /var/lib/munin - - - 30d diff --git a/nginx_cgi_graphs.conf b/nginx_cgi_graphs.conf index 3b60cb0..666cc90 100644 --- a/nginx_cgi_graphs.conf +++ b/nginx_cgi_graphs.conf @@ -8,7 +8,9 @@ # cgiurl_graph /munin/graph # # Then copy this file to /etc/nginx/conf.d/ directory and restart nginx. -# Services munin-cgi-graph and munin-cgi-html must also be started. +# Services munin-cgi-html and munin-cgi-graph must also be started: +# +# systemctl enable --now munin-cgi-html.socket munin-cgi-graph.socket # # Access Munin at http://localhost/munin/ From da5e6b3b08665d66dbff96d22b31c2b41fd8c725 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 24 Jan 2020 12:40:03 +0200 Subject: [PATCH 060/108] Remove unneeded Makefile and package.cfg --- .cvsignore | 0 Makefile | 21 --------------------- package.cfg | 2 -- 3 files changed, 23 deletions(-) delete mode 100644 .cvsignore delete mode 100644 Makefile delete mode 100644 package.cfg diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index e69de29..0000000 diff --git a/Makefile b/Makefile deleted file mode 100644 index 5e554a7..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: munin -# $Id$ -NAME := munin -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/package.cfg b/package.cfg deleted file mode 100644 index 66ea79d..0000000 --- a/package.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[koji] -targets = epel8 epel8-playground \ No newline at end of file From 1c00dec9bb320298b05c97bed15eaa891e3ef960 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 24 Jan 2020 12:54:50 +0200 Subject: [PATCH 061/108] Remove BR: perl(Directory::Scratch), it's for testing only, and not on epel8 --- munin.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/munin.spec b/munin.spec index a73cc05..2304215 100644 --- a/munin.spec +++ b/munin.spec @@ -60,7 +60,6 @@ BuildRequires: perl(Net::SSLeay) BuildRequires: perl(Net::SNMP) BuildRequires: perl(Text::Balanced) %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -BuildRequires: perl(Directory::Scratch) BuildRequires: perl-Carp BuildRequires: systemd BuildRequires: firewalld-filesystem From f64e33df436161b81862852a9d6f6e4f87a7d21b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 29 Jan 2020 14:19:32 +0000 Subject: [PATCH 062/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 2304215..4f0f722 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.54 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -764,6 +764,9 @@ fi %changelog +* Wed Jan 29 2020 Fedora Release Engineering - 2.0.54-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Fri Jan 24 2020 Kim B. Heino - 2.0.54-2 - Convert cronjob to systemd timer and tmpfiles From 97e4047018425642ba377382f2638739bfa6763d Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 24 Mar 2020 15:38:09 +0100 Subject: [PATCH 063/108] Specify all perl's dependencies for build --- munin.spec | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/munin.spec b/munin.spec index 4f0f722..bbe1fd5 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.54 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -52,15 +52,21 @@ BuildArch: noarch BuildRequires: perl-interpreter >= 5.8 BuildRequires: perl-generators -BuildRequires: perl(Module::Build) +BuildRequires: perl(base) +BuildRequires: perl(English) +BuildRequires: perl(File::Spec) BuildRequires: perl(HTML::Template) +BuildRequires: perl(lib) +BuildRequires: perl(Module::Build) BuildRequires: perl(Log::Log4perl) BuildRequires: perl(Net::Server) BuildRequires: perl(Net::SSLeay) BuildRequires: perl(Net::SNMP) +BuildRequires: perl(strict) BuildRequires: perl(Text::Balanced) +BuildRequires: perl(warnings) %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -BuildRequires: perl-Carp +BuildRequires: perl(Carp) BuildRequires: systemd BuildRequires: firewalld-filesystem %endif @@ -764,6 +770,9 @@ fi %changelog +* Tue Mar 24 2020 Jitka Plesnikova - 2.0.54-4 +- Specify all perl's dependencies for build + * Wed Jan 29 2020 Fedora Release Engineering - 2.0.54-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 22c7233576c4b7014480363b11882a8fdcfdec20 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 25 Jun 2020 15:03:14 +0200 Subject: [PATCH 064/108] Perl 5.32 rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index bbe1fd5..ec9a093 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.54 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -770,6 +770,9 @@ fi %changelog +* Thu Jun 25 2020 Jitka Plesnikova - 2.0.54-5 +- Perl 5.32 rebuild + * Tue Mar 24 2020 Jitka Plesnikova - 2.0.54-4 - Specify all perl's dependencies for build From e7542a3b416ed0f3b221db994a4162520a4280d3 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 6 Jul 2020 11:18:25 +0300 Subject: [PATCH 065/108] Upgrade to 2.0.63 --- asyncd-ssh.config | 5 ----- munin-asyncd.service | 2 +- munin-node.logrotate | 2 -- munin-node.service | 5 ++--- munin-run_no_systemd.patch | 28 ++++++++++++++++++++++++++++ munin.logrotate | 12 ------------ munin.spec | 28 ++++++++++++++++------------ 7 files changed, 47 insertions(+), 35 deletions(-) delete mode 100644 asyncd-ssh.config create mode 100644 munin-run_no_systemd.patch diff --git a/asyncd-ssh.config b/asyncd-ssh.config deleted file mode 100644 index b710158..0000000 --- a/asyncd-ssh.config +++ /dev/null @@ -1,5 +0,0 @@ -Host * - Compression yes - ConnectTimeout 15 - ServerAliveInterval 15 - ServerAliveCountMax 5 diff --git a/munin-asyncd.service b/munin-asyncd.service index 71fab85..c730e8b 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -5,7 +5,7 @@ Requires=munin-node.service After=network.target network-online.target munin-node.service [Service] -Type=simple +Type=notify User=munin ExecStart=/usr/sbin/munin-asyncd PrivateDevices=yes diff --git a/munin-node.logrotate b/munin-node.logrotate index 56a6be8..a77de03 100644 --- a/munin-node.logrotate +++ b/munin-node.logrotate @@ -1,6 +1,4 @@ /var/log/munin-node/munin-node.log { - daily - rotate 7 missingok notifempty compress diff --git a/munin-node.service b/munin-node.service index f3ca19c..e84725e 100644 --- a/munin-node.service +++ b/munin-node.service @@ -5,9 +5,8 @@ After=network.target network-online.target PartOf=munin-asyncd.service [Service] -Type=forking -ExecStart=/usr/sbin/munin-node -PIDFile=/run/munin/munin-node.pid +Type=notify +ExecStart=/usr/sbin/munin-node --foreground PrivateDevices=no PrivateTmp=yes ProtectHome=read-only diff --git a/munin-run_no_systemd.patch b/munin-run_no_systemd.patch new file mode 100644 index 0000000..6b7a80e --- /dev/null +++ b/munin-run_no_systemd.patch @@ -0,0 +1,28 @@ +diff -ur munin-2.0.63.orig/node/sbin/munin-run munin-2.0.63/node/sbin/munin-run +--- munin-2.0.63.orig/node/sbin/munin-run 2020-05-27 23:52:55.000000000 +0300 ++++ munin-2.0.63/node/sbin/munin-run 2020-07-04 10:55:27.079868324 +0300 +@@ -31,7 +31,7 @@ + # --pipe: 235 or later + # --collect: 236 or later + +-my $REQUIRED_SYSTEMD_VERSION = 236; ++my $REQUIRED_SYSTEMD_VERSION = 999; + + # See "man systemd.exec" for the list of all systemd properties. + # The following properties belong to the relevant sections "Capabilities", +@@ -50,7 +50,6 @@ + EnvironmentFile + Group + Limit\w+ +- LockPersonality + MemoryDenyWriteExecute + MountFlags + NetworkNamespacePath +@@ -189,6 +188,7 @@ + # "systemd show" does not output the EnvironmentFile property in a readable format. + # See https://github.com/systemd/systemd/issues/14723. + next if ($property_definition =~ /^EnvironmentFiles?=(.*) \(ignore_errors=(yes|no)\)$/); ++ next if ($property_definition =~ /^RestrictSUIDSGID=/); + push @flag_list, $1 if $property_definition =~ /$flag_name_regex/; + } + return @flag_list; diff --git a/munin.logrotate b/munin.logrotate index 78ed224..3953c6d 100644 --- a/munin.logrotate +++ b/munin.logrotate @@ -1,46 +1,34 @@ /var/log/munin/munin-cgi-graph.log { - daily - rotate 7 missingok notifempty compress } /var/log/munin/munin-cgi-html.log { - daily - rotate 7 missingok notifempty compress } /var/log/munin/munin-graph.log { - daily - rotate 7 missingok notifempty compress } /var/log/munin/munin-html.log { - daily - rotate 7 missingok notifempty compress } /var/log/munin/munin-limits.log { - daily - rotate 7 missingok notifempty compress } /var/log/munin/munin-update.log { - daily - rotate 7 missingok notifempty compress diff --git a/munin.spec b/munin.spec index ec9a093..80e1b51 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.54 -Release: 5%{?dist} +Version: 2.0.63 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -14,7 +14,6 @@ Source12: munin.tmpfilesd Source13: munin.cron.d Source131: munin.timer Source132: munin.service -Source14: asyncd-ssh.config Source15: munin-rrdcached.service Source16: httpd_cgi_graphs.conf Source17: httpd_cron_graphs.conf @@ -40,6 +39,7 @@ Source35: munin-cgi-html.socket # Patches Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch Patch102: postfix-category.patch +Patch103: munin-run_no_systemd.patch # Use some plugins from munin 3.0 branch Source200: mysql_ @@ -282,6 +282,7 @@ sed -i -e ' %patch101 -p1 %patch102 -p1 +%patch103 -p1 cp %SOURCE16 . cp %SOURCE17 . @@ -386,9 +387,8 @@ mkdir -p %{buildroot}%{_sysconfdir}/cron.d cp %{SOURCE13} %{buildroot}%{_sysconfdir}/cron.d/munin %endif -# Default ssh config for asyncd +# ssh for asyncd mkdir -p %{buildroot}%{_sharedstatedir}/munin/.ssh -install -m 0600 %{SOURCE14} %{buildroot}%{_sharedstatedir}/munin/.ssh/config # rrdcached %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 @@ -446,11 +446,11 @@ exit 0 %post # Create log files [ -f %{_localstatedir}/log/munin/munin-html.log ] || \ - /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-html.log + /usr/bin/install -m 0640 -o munin -g root /dev/null %{_localstatedir}/log/munin/munin-html.log [ -f %{_localstatedir}/log/munin/munin-limits.log ] || \ - /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-limits.log + /usr/bin/install -m 0640 -o munin -g root /dev/null %{_localstatedir}/log/munin/munin-limits.log [ -f %{_localstatedir}/log/munin/munin-update.log ] || \ - /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-update.log + /usr/bin/install -m 0640 -o munin -g root /dev/null %{_localstatedir}/log/munin/munin-update.log # On new install only: create simple localhost config. if [ "$1" = "1" ]; then if [ ! -f %{_sysconfdir}/munin/conf.d/local.conf ]; then @@ -660,13 +660,12 @@ fi %{perl_vendorlib}/Munin/Master %attr(-, munin, munin) %dir %{_sharedstatedir}/munin %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh -%config(noreplace) %attr(0600, munin, munin) %{_sharedstatedir}/munin/.ssh/config %attr(-, munin, munin) %dir %{_localstatedir}/log/munin %attr(-, munin, munin) %dir %{_localstatedir}/www/html/munin %attr(-, munin, munin) %{_localstatedir}/www/html/munin/cgi -%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-html.log -%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-limits.log -%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-update.log +%attr(0640, munin, root) %ghost %{_localstatedir}/log/munin/munin-html.log +%attr(0640, munin, root) %ghost %{_localstatedir}/log/munin/munin-limits.log +%attr(0640, munin, root) %ghost %{_localstatedir}/log/munin/munin-update.log %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/rrdcached %{_unitdir}/munin-rrdcached.service @@ -770,6 +769,11 @@ fi %changelog +* Mon Jul 6 2020 Kim B. Heino - 2.0.63-1 +- Upgrade to 2.0.63 +- Don't use systemd-run in munin-run, rhbz #1852345 +- Use "Type=notify" for munin-node and munin-asyncd + * Thu Jun 25 2020 Jitka Plesnikova - 2.0.54-5 - Perl 5.32 rebuild From 9184bb199a0ca1223d96a40cb3bb4c88d82f5d3c Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 6 Jul 2020 11:19:44 +0300 Subject: [PATCH 066/108] sources: update --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index 16f47d9..5ea4aea 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.54.tar.gz) = 48bb785d6e40f940e265f2e4723c09ccb54a8218b7f76766a3be23f91d0eaa1180fd1698c50d738c95bb983c586345bf5f65d0dab0e16d40b22fc0121955756b +SHA512 (munin-2.0.63.tar.gz) = c28d2bedda8abb8787e1ba40ec80961d1304c903e9e608e30ed7903210169f258f9c062fc97d89932ddd7aabefa4360495d19535520741911c489c9c3c2e76fe From 66a4fe31d4e4252751997a3886e7ccf4d3dce52d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 28 Jul 2020 08:39:45 +0000 Subject: [PATCH 067/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 80e1b51..6242b31 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.63 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -769,6 +769,9 @@ fi %changelog +* Tue Jul 28 2020 Fedora Release Engineering - 2.0.63-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Mon Jul 6 2020 Kim B. Heino - 2.0.63-1 - Upgrade to 2.0.63 - Don't use systemd-run in munin-run, rhbz #1852345 From ab88fc3fed37c4f9340560b9b4f9afa03a7e96f0 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 17 Nov 2020 14:55:46 +0200 Subject: [PATCH 068/108] 2.0.65 * Tue Nov 17 2020 Kim B. Heino - 2.0.65-1 - Upgrade to 2.0.65 - Improve plugin-state directory owners - Don't require tmpwatch - Change log file owner to root:adm or munin:adm --- munin-node.logrotate | 1 - munin.logrotate | 36 ++++------------------- munin.service | 2 +- munin.spec | 69 +++++++++++++++----------------------------- munin.tmpfilesd | 1 - 5 files changed, 29 insertions(+), 80 deletions(-) diff --git a/munin-node.logrotate b/munin-node.logrotate index a77de03..c674db4 100644 --- a/munin-node.logrotate +++ b/munin-node.logrotate @@ -1,6 +1,5 @@ /var/log/munin-node/munin-node.log { missingok notifempty - compress copytruncate } diff --git a/munin.logrotate b/munin.logrotate index 3953c6d..109748b 100644 --- a/munin.logrotate +++ b/munin.logrotate @@ -1,35 +1,9 @@ -/var/log/munin/munin-cgi-graph.log { - missingok - notifempty - compress -} - -/var/log/munin/munin-cgi-html.log { - missingok - notifempty - compress -} - -/var/log/munin/munin-graph.log { - missingok - notifempty - compress -} - -/var/log/munin/munin-html.log { - missingok - notifempty - compress -} - -/var/log/munin/munin-limits.log { - missingok - notifempty - compress -} - +/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 { missingok notifempty - compress } diff --git a/munin.service b/munin.service index 6b2bba4..b9586f6 100644 --- a/munin.service +++ b/munin.service @@ -6,7 +6,7 @@ After=network.target network-online.target munin-node.service [Service] User=munin ExecStart=/usr/bin/munin-cron -PrivateDevices=yes +PrivateDevices=no PrivateTmp=yes ProtectHome=yes ProtectSystem=full diff --git a/munin.spec b/munin.spec index 6242b31..3f4f1a4 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.63 -Release: 2%{?dist} +Version: 2.0.65 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -75,7 +75,9 @@ BuildRequires: firewalld-filesystem Requires: %{name}-common = %{version} Requires: %{name}-web-support Requires: logrotate +%if 0%{?rhel} == 6 Requires: tmpwatch +%endif Requires: rrdtool Requires: /bin/mail Requires: perl(FCGI) @@ -335,9 +337,8 @@ cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ cp %{SOURCE300} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ cp %{SOURCE301} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ -# Create plugin state dirs -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/root -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/munin +# Create plugin state dir +mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state %if 0%{?rhel} >= 7 || 0%{?fedora} > 19 mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services @@ -446,11 +447,11 @@ exit 0 %post # Create log files [ -f %{_localstatedir}/log/munin/munin-html.log ] || \ - /usr/bin/install -m 0640 -o munin -g root /dev/null %{_localstatedir}/log/munin/munin-html.log + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-html.log [ -f %{_localstatedir}/log/munin/munin-limits.log ] || \ - /usr/bin/install -m 0640 -o munin -g root /dev/null %{_localstatedir}/log/munin/munin-limits.log + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-limits.log [ -f %{_localstatedir}/log/munin/munin-update.log ] || \ - /usr/bin/install -m 0640 -o munin -g root /dev/null %{_localstatedir}/log/munin/munin-update.log + /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-update.log # On new install only: create simple localhost config. if [ "$1" = "1" ]; then if [ ! -f %{_sysconfdir}/munin/conf.d/local.conf ]; then @@ -476,11 +477,6 @@ fi %postun %systemd_postun_with_restart munin-rrdcached.service munin.timer - - -%triggerun -- munin < 2.0.42-2 -setfacl --remove-all %{_rundir}/munin -chmod 775 %{_rundir}/munin %endif @@ -501,7 +497,7 @@ exit 0 %endif # Create log file [ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ - /usr/bin/install -m 0640 -o root -g root /dev/null %{_localstatedir}/log/munin-node/munin-node.log + /usr/bin/install -m 0640 -o root -g adm /dev/null %{_localstatedir}/log/munin-node/munin-node.log # Only run configure on a new install, not an upgrade. if [ "$1" = "1" ]; then %{_sbindir}/munin-node-configure --shell 2> /dev/null | sh >& /dev/null || : @@ -543,22 +539,6 @@ fi %endif -%triggerun node -- munin-node < 2.0.40-2 -if ls %{_localstatedir}/log/munin/munin-node.log* >/dev/null 2>&1; then - mv -f %{_localstatedir}/log/munin/munin-node.log* %{_localstatedir}/log/munin-node/ -fi -chown -R munin:munin %{_sharedstatedir}/munin/spool/ >/dev/null 2>&1 -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -systemctl daemon-reload -%systemd_postun_with_restart munin-node.service munin-asyncd.service -%else -if [ $1 -ge 1 ]; then - /sbin/service munin-node condrestart >/dev/null 2>&1 - /sbin/service munin-asyncd condrestart >/dev/null 2>&1 -fi -%endif - - %pre common getent group munin >/dev/null || groupadd -r munin getent passwd munin >/dev/null || \ @@ -566,13 +546,6 @@ useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%triggerun common -- munin-common < 2.0.42-2 -setfacl --remove-all %{_rundir}/munin -chmod 775 %{_rundir}/munin -%endif - - %post nginx # Create log files [ -f %{_localstatedir}/log/munin/munin-cgi-graph.log ] || \ @@ -660,12 +633,12 @@ fi %{perl_vendorlib}/Munin/Master %attr(-, munin, munin) %dir %{_sharedstatedir}/munin %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh -%attr(-, munin, munin) %dir %{_localstatedir}/log/munin +%attr(0750, munin, adm) %dir %{_localstatedir}/log/munin %attr(-, munin, munin) %dir %{_localstatedir}/www/html/munin %attr(-, munin, munin) %{_localstatedir}/www/html/munin/cgi -%attr(0640, munin, root) %ghost %{_localstatedir}/log/munin/munin-html.log -%attr(0640, munin, root) %ghost %{_localstatedir}/log/munin/munin-limits.log -%attr(0640, munin, root) %ghost %{_localstatedir}/log/munin/munin-update.log +%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-html.log +%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-limits.log +%attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-update.log %if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/rrdcached %{_unitdir}/munin-rrdcached.service @@ -714,13 +687,11 @@ fi %{_prefix}/lib/firewalld/services/munin-node.xml %endif %attr(-, munin, munin) %dir %{_sharedstatedir}/munin -%attr(0775, root, munin) %dir %{_sharedstatedir}/munin/plugin-state -%attr(-, root, munin) %dir %{_sharedstatedir}/munin/plugin-state/root -%attr(-, munin, munin) %dir %{_sharedstatedir}/munin/plugin-state/munin +%attr(-, root, root) %dir %{_sharedstatedir}/munin/plugin-state %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/spool %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh -%attr(0755, root, root) %dir %{_localstatedir}/log/munin-node -%attr(0640, root, root) %ghost %{_localstatedir}/log/munin-node/munin-node.log +%attr(0750, root, adm) %dir %{_localstatedir}/log/munin-node +%attr(0640, root, adm) %ghost %{_localstatedir}/log/munin-node/munin-node.log %files common @@ -769,6 +740,12 @@ fi %changelog +* Tue Nov 17 2020 Kim B. Heino - 2.0.65-1 +- Upgrade to 2.0.65 +- Improve plugin-state directory owners +- Don't require tmpwatch +- Change log file owner to root:adm or munin:adm + * Tue Jul 28 2020 Fedora Release Engineering - 2.0.63-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild diff --git a/munin.tmpfilesd b/munin.tmpfilesd index 561bee2..68ba12f 100644 --- a/munin.tmpfilesd +++ b/munin.tmpfilesd @@ -10,6 +10,5 @@ x /var/lib/munin/plugin-state x /var/lib/munin/rrdcached e /var/lib/munin/cgi-tmp/* - - - 1d -e /var/lib/munin/plugin-state/* - - - 14d e /var/lib/munin/spool - - - 14d e /var/lib/munin - - - 30d From 1ba65a9e12491d278a3adc1cc08cb12271b645f0 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 17 Nov 2020 14:57:47 +0200 Subject: [PATCH 069/108] sources: update --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index 5ea4aea..481423e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.63.tar.gz) = c28d2bedda8abb8787e1ba40ec80961d1304c903e9e608e30ed7903210169f258f9c062fc97d89932ddd7aabefa4360495d19535520741911c489c9c3c2e76fe +SHA512 (munin-2.0.65.tar.gz) = 8a0dc93de878e1d502467f4e8589a0af2b809ec7282033534de2fd17b842bbf864d900136516a668a8e3f80e99215062620a503c5f664c799892f77950b4859a From f14b813b7abd9b4405175c31beb9c2152a4b58fc Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 14 Dec 2020 20:55:47 +0200 Subject: [PATCH 070/108] Drop epel6, major cleanup --- munin-asyncd.rc | 94 ----------------------- munin-cgi-graph.rc | 105 -------------------------- munin-cgi-html.rc | 105 -------------------------- munin-node.rc | 120 ----------------------------- munin.cron.d | 7 -- munin.spec | 183 +++++++-------------------------------------- 6 files changed, 25 insertions(+), 589 deletions(-) delete mode 100755 munin-asyncd.rc delete mode 100755 munin-cgi-graph.rc delete mode 100755 munin-cgi-html.rc delete mode 100755 munin-node.rc delete mode 100644 munin.cron.d diff --git a/munin-asyncd.rc b/munin-asyncd.rc deleted file mode 100755 index a9da4f3..0000000 --- a/munin-asyncd.rc +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/munin-asyncd -# -# chkconfig: - 91 9 -# description: Network-wide resource monitoring tool (async proxy) -# processname: munin-asyncd -# -### BEGIN INIT INFO -# Provides: munin-asyncd -# Required-Start: $network $syslog -# Required-Stop: -# Default-Stop: 0 1 2 6 -# Short-Description: Network-wide resource monitoring tool (async proxy) -# Description: Munin is a highly flexible and powerful solution used to create -# graphs of virtually everything imaginable throughout your network, -# while still maintaining a rattling ease of installation and -# configuration. -### END INIT INFO - -# Source function library. -. /etc/init.d/functions - -# Source networking configuration. -. /etc/sysconfig/network - -# Check that networking is up. -[ ${NETWORKING} = "no" ] && exit 0 - -# Read config -ASYNCD=yes -[ -f /etc/sysconfig/munin-node ] && . /etc/sysconfig/munin-node - -progasync=munin-asyncd -binasync=/usr/sbin/$progasync -RETVAL=0 - -start() { - echo -n $"Starting $progasync: " - mkdir -p /var/run/munin 2>/dev/null - chown munin:munin /var/run/munin - restorecon /var/run/munin 2>/dev/null - ${binasync} < /dev/null > /dev/null 2>&1 & - sleep 1 - pkill -0 $progasync - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - echo_success - touch /var/lock/subsys/$progasync - else - echo_failure - fi - echo - return $RETVAL -} - -stop() { - echo -n $"Stopping $progasync: " - killproc ${binasync} - RETVAL=$? - echo - [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$progasync - return $RETVAL -} - -restart() { - stop - start -} - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - restart - ;; - condrestart) - [ -f /var/lock/subsys/$progasync ] && restart - ;; - status) - status ${binasync} - RETVAL=$? - ;; - *) - echo "Usage: $0 {start|stop|restart|condrestart|status}" - RETVAL=2 -esac - -exit $RETVAL diff --git a/munin-cgi-graph.rc b/munin-cgi-graph.rc deleted file mode 100755 index b56c7ac..0000000 --- a/munin-cgi-graph.rc +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/sh -# -# munin-cgi-graph Start and stop Munin FastCGI processes for NGINX -# -# chkconfig: - 80 20 -# description: Spawn Munin FastCGI scripts to be used by NGINX web server - -### BEGIN INIT INFO -# Provides: -# Required-Start: $network $syslog -# Required-Stop: -# Should-Start: -# Should-Stop: -# Default-Start: -# Default-Stop: 0 1 2 6 -# Short-Description: Start and stop Munin FastCGI processes -# Description: Spawn Munin FastCGI scripts to be used by NGINX web server -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -exec=/usr/bin/spawn-fcgi -lockfile=/var/lock/subsys/munin-cgi-graph - -graphprog=/var/www/html/munin/cgi/munin-cgi-graph -graphsock=/var/run/munin/munin-cgi-graph.sock -graphpid=/var/run/munin/munin-cgi-graph.pid - -GRAPHOPTIONS="-u munin -U nginx -S -M 0600 -F 2" -[ -f /etc/sysconfig/munin-cgi-graph ] && . /etc/sysconfig/munin-cgi-graph - -munin_cleanup() { - # Remove the socket if it exists - [ -n "${graphsock}" -a -S "${graphsock}" ] && rm -f ${graphsock} -} - -start() { - munin_cleanup - echo -n $"Starting munin-cgi-graph: " - daemon "${exec} -s ${graphsock} -P ${graphpid} ${GRAPHOPTIONS} -- ${graphprog} >/dev/null" - RETVAL=$? - echo - if [ $RETVAL -eq 0 ]; then - touch $lockfile - fi - return $RETVAL -} - -stop() { - echo -n $"Stopping munin-cgi-graph: " - killproc $graphprog - RETVAL=$? - echo - munin_cleanup - [ $RETVAL -eq 0 ] && rm -f $lockfile - return $RETVAL -} - -restart() { - stop - start -} - -reload() { - restart -} - -rh_status() { - # run checks to determine if the service is running or use generic status - status $graphprog -} - -rh_status_q() { - rh_status &>/dev/null -} - -case "$1" in - start) - rh_status_q && exit 0 - $1 - ;; - stop) - rh_status_q || exit 0 - $1 - ;; - restart) - $1 - ;; - reload) - rh_status_q || exit 7 - $1 - ;; - status) - rh_status - ;; - condrestart|try-restart) - rh_status_q || exit 0 - restart - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload}" - exit 2 -esac -exit $? diff --git a/munin-cgi-html.rc b/munin-cgi-html.rc deleted file mode 100755 index f27430e..0000000 --- a/munin-cgi-html.rc +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/sh -# -# munin-cgi-html Start and stop Munin FastCGI processes for NGINX -# -# chkconfig: - 80 20 -# description: Spawn Munin FastCGI scripts to be used by NGINX web server - -### BEGIN INIT INFO -# Provides: -# Required-Start: $network $syslog -# Required-Stop: -# Should-Start: -# Should-Stop: -# Default-Start: -# Default-Stop: 0 1 2 6 -# Short-Description: Start and stop Munin FastCGI processes -# Description: Spawn Munin FastCGI scripts to be used by NGINX web server -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -exec=/usr/bin/spawn-fcgi -lockfile=/var/lock/subsys/munin-cgi-html - -htmlprog=/var/www/html/munin/cgi/munin-cgi-html -htmlsock=/var/run/munin/munin-cgi-html.sock -htmlpid=/var/run/munin/munin-cgi-html.pid - -HTMLOPTIONS="-u munin -U nginx -S -M 0600 -F 1" -[ -f /etc/sysconfig/munin-cgi-html ] && . /etc/sysconfig/munin-cgi-html - -munin_cleanup() { - # Remove the socket if it exists - [ -n "${htmlsock}" -a -S "${htmlsock}" ] && rm -f ${htmlsock} -} - -start() { - munin_cleanup - echo -n $"Starting munin-cgi-html: " - daemon "${exec} -s ${htmlsock} -P ${htmlpid} ${HTMLOPTIONS} -- ${htmlprog} >/dev/null" - RETVAL=$? - echo - if [ $RETVAL -eq 0 ]; then - touch $lockfile - fi - return $RETVAL -} - -stop() { - echo -n $"Stopping munin-cgi-html: " - killproc $htmlprog - RETVAL=$? - echo - munin_cleanup - [ $RETVAL -eq 0 ] && rm -f $lockfile - return $RETVAL -} - -restart() { - stop - start -} - -reload() { - restart -} - -rh_status() { - # run checks to determine if the service is running or use generic status - status $htmlprog -} - -rh_status_q() { - rh_status &>/dev/null -} - -case "$1" in - start) - rh_status_q && exit 0 - $1 - ;; - stop) - rh_status_q || exit 0 - $1 - ;; - restart) - $1 - ;; - reload) - rh_status_q || exit 7 - $1 - ;; - status) - rh_status - ;; - condrestart|try-restart) - rh_status_q || exit 0 - restart - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload}" - exit 2 -esac -exit $? diff --git a/munin-node.rc b/munin-node.rc deleted file mode 100755 index 8bd7257..0000000 --- a/munin-node.rc +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/munin-node -# -# chkconfig: - 90 10 -# description: Network-wide resource monitoring tool (node) -# processname: munin-node -# -### BEGIN INIT INFO -# Provides: munin-node -# Required-Start: $network $syslog -# Required-Stop: -# Default-Stop: 0 1 2 6 -# Short-Description: Network-wide resource monitoring tool (node) -# Description: Munin is a highly flexible and powerful solution used to create -# graphs of virtually everything imaginable throughout your network, -# while still maintaining a rattling ease of installation and -# configuration. -### END INIT INFO - -# Source function library. -. /etc/init.d/functions - -# Source networking configuration. -. /etc/sysconfig/network - -# Check that networking is up. -[ ${NETWORKING} = "no" ] && exit 0 - -# Read config -ASYNCD=no -[ -f /etc/sysconfig/munin-node ] && . /etc/sysconfig/munin-node - -prognode=munin-node -progasync=munin-asyncd -binnode=/usr/sbin/$prognode -binasync=/usr/sbin/$progasync -pidnode=/var/run/munin/$prognode.pid -RETVAL=0 - -start() { - echo -n $"Starting $prognode: " - mkdir -p /var/run/munin 2>/dev/null - chown munin:munin /var/run/munin - restorecon /var/run/munin 2>/dev/null - ${binnode} < /dev/null > /dev/null 2>&1 & - sleep 1 - pkill -0 $prognode - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - echo_success - touch /var/lock/subsys/$prognode - if [ "${ASYNCD}" = "yes" ]; then - echo - echo -n $"Starting $progasync: " - sleep 1 - ${binasync} < /dev/null > /dev/null 2>&1 & - sleep 1 - pkill -0 $progasync - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - echo_success - else - echo_failure - fi - fi - else - echo_failure - fi - echo - return $RETVAL -} - -stop() { - if [ "${ASYNCD}" = "yes" ]; then - echo -n $"Stopping $progasync: " - killproc ${binasync} - echo - fi - echo -n $"Stopping $prognode: " - killproc ${binnode} - RETVAL=$? - echo - [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prognode - return $RETVAL -} - -restart() { - stop - start -} - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - restart - ;; - condrestart) - [ -f /var/lock/subsys/$prognode ] && restart - ;; - status) - status -p ${pidnode} ${binnode} - RETVAL=$? - if [ $RETVAL = 0 -a "${ASYNCD}" = "yes" ]; then - status ${binasync} - RETVAL=$? - fi - ;; - *) - echo "Usage: $0 {start|stop|restart|condrestart|status}" - RETVAL=2 -esac - -exit $RETVAL diff --git a/munin.cron.d b/munin.cron.d deleted file mode 100644 index bcc7834..0000000 --- a/munin.cron.d +++ /dev/null @@ -1,7 +0,0 @@ -# Collect Munin data every five minutes, clean up once a day - -MAILTO=root - -*/5 * * * * munin /usr/bin/munin-cron -21 5 * * * root /usr/sbin/tmpwatch --ctime 24h /var/lib/munin/cgi-tmp -25 5 * * * root /usr/sbin/tmpwatch --ctime 30d /var/lib/munin --exclude /var/lib/munin/.ssh --exclude /var/lib/munin/cgi-tmp --exclude /var/lib/munin/plugin-state --exclude /var/lib/munin/rrdcached diff --git a/munin.spec b/munin.spec index 3f4f1a4..89c73d3 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.65 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -11,7 +11,6 @@ Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name} Source10: munin.conf Source11: munin.logrotate Source12: munin.tmpfilesd -Source13: munin.cron.d Source131: munin.timer Source132: munin.service Source15: munin-rrdcached.service @@ -22,15 +21,11 @@ Source18: nginx_cgi_graphs.conf # Node sources Source20: munin-node.conf Source21: munin-node.logrotate -Source22: munin-node.rc Source23: munin-node.service -Source24: munin-asyncd.rc Source25: munin-asyncd.service Source26: munin-node.xml # CGI sources -Source30: munin-cgi-html.rc -Source31: munin-cgi-graph.rc Source32: munin-cgi-graph.service Source33: munin-cgi-graph.socket Source34: munin-cgi-html.service @@ -65,19 +60,14 @@ BuildRequires: perl(Net::SNMP) BuildRequires: perl(strict) BuildRequires: perl(Text::Balanced) BuildRequires: perl(warnings) -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 BuildRequires: perl(Carp) BuildRequires: systemd BuildRequires: firewalld-filesystem -%endif # Munin server requires Requires: %{name}-common = %{version} Requires: %{name}-web-support Requires: logrotate -%if 0%{?rhel} == 6 -Requires: tmpwatch -%endif Requires: rrdtool Requires: /bin/mail Requires: perl(FCGI) @@ -132,23 +122,8 @@ Requires: perl(Net::SSLeay) Requires: perl(Cache::Cache) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires(pre): shadow-utils -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 Requires: firewalld-filesystem -%{?systemd_requires} -%else -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/chkconfig -Requires(preun): /sbin/service -%endif BuildArch: noarch -Provides: munin-async = %{version}-%{release} -Obsoletes: munin-async < 2.0.39-4 -Provides: munin-netip-plugins = %{version}-%{release} -Obsoletes: munin-netip-plugins < 2.0.39-4 -Provides: munin-java-plugins = %{version}-%{release} -Obsoletes: munin-java-plugins < 2.0.39-2 -Provides: munin-plugins-java = %{version}-%{release} -Obsoletes: munin-plugins-java < 2.0.45-2 %description node @@ -176,6 +151,7 @@ Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires: acl Requires(pre): shadow-utils BuildArch: noarch +%{?systemd_requires} %description common @@ -191,8 +167,6 @@ and node (munin-node) packages. Summary: Ruby plugins for Munin resource monitoring Requires: %{name}-node = %{version} BuildArch: noarch -Provides: munin-ruby-plugins = %{version}-%{release} -Obsoletes: munin-ruby-plugins < 2.0.39-2 %description plugins-ruby @@ -228,20 +202,8 @@ Apache support for Munin resource monitoring. %package cgi Summary: FastCGI startup scripts for Munin resource monitoring Requires: %{name} = %{version} -%if 0%{?rhel} == 6 -Requires: spawn-fcgi -%endif Requires: nginx-filesystem BuildArch: noarch -Provides: munin-fcgi = %{version}-%{release} -Obsoletes: munin-fcgi < 2.0.39-4 -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%{?systemd_requires} -%else -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/chkconfig -Requires(preun): /sbin/service -%endif %description cgi @@ -264,7 +226,7 @@ sed -i -e ' s,^DBDIR = \(.*\),DBDIR = $(DESTDIR)%{_sharedstatedir}/munin,; s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin,; s,^LOGDIR = \(.*\),LOGDIR = $(DESTDIR)%{_localstatedir}/log/munin,; -%if 0%{?rhel} >= 8 || 0%{?fedora} >= 24 +%if 0%{?rhel} >= 8 || 0%{?fedora} s,^PYTHON := \(.*\),PYTHON := /usr/bin/python3,; %else s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; @@ -292,13 +254,11 @@ cp %SOURCE18 . %build -make CONFIG=Makefile.config +make CONFIG=Makefile.config %install -make CONFIG=Makefile.config \ - DESTDIR=%{buildroot} \ - install +make CONFIG=Makefile.config DESTDIR=%{buildroot} install # Remove bundled fonts rm -f %{buildroot}%{_datadir}/munin/DejaVuSans*.ttf @@ -313,16 +273,10 @@ cp %{SOURCE20} %{buildroot}%{_sysconfdir}/munin/ mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d cp %{SOURCE21} %{buildroot}%{_sysconfdir}/logrotate.d/munin-node -# Add startup scripts -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +# Add services mkdir -p %{buildroot}%{_unitdir} cp %{SOURCE23} %{buildroot}%{_unitdir} cp %{SOURCE25} %{buildroot}%{_unitdir} -%else -mkdir -p %{buildroot}%{_initrddir} -cp %{SOURCE22} %{buildroot}%{_initrddir}/munin-node -cp %{SOURCE24} %{buildroot}%{_initrddir}/munin-asyncd -%endif # Move munin-asyncd to /usr/sbin/ (FHS) mv %{buildroot}%{_datadir}/munin/munin-asyncd %{buildroot}%{_sbindir}/munin-asyncd @@ -337,13 +291,14 @@ cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ cp %{SOURCE300} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ cp %{SOURCE301} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ -# Create plugin state dir +# Create plugin state dirs mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state +mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/munin +mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/root -%if 0%{?rhel} >= 7 || 0%{?fedora} > 19 +# firewalld config mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services cp %{SOURCE26} %{buildroot}/%{_prefix}/lib/firewalld/services/ -%endif # Disable some plugins from autoconfig @@ -364,6 +319,7 @@ done ### Server ### +# Rename server's config directory mv %{buildroot}%{_sysconfdir}/munin/munin-conf.d %{buildroot}%{_sysconfdir}/munin/conf.d # Overwrite default config file @@ -373,29 +329,20 @@ cp %{SOURCE10} %{buildroot}%{_sysconfdir}/munin/ cp %{SOURCE11} %{buildroot}%{_sysconfdir}/logrotate.d/munin # Install tmpfiles config -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 mkdir -p %{buildroot}%{_tmpfilesdir} mkdir -p %{buildroot}%{_rundir}/munin cp %{SOURCE12} %{buildroot}%{_tmpfilesdir}/%{name}.conf -%endif -# Add server cron job -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +# Add timer and service cp %{SOURCE131} %{buildroot}%{_unitdir} cp %{SOURCE132} %{buildroot}%{_unitdir} -%else -mkdir -p %{buildroot}%{_sysconfdir}/cron.d -cp %{SOURCE13} %{buildroot}%{_sysconfdir}/cron.d/munin -%endif # ssh for asyncd mkdir -p %{buildroot}%{_sharedstatedir}/munin/.ssh # rrdcached -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 mkdir -p %{buildroot}%{_sharedstatedir}/munin/rrdcached cp %{SOURCE15} %{buildroot}%{_unitdir} -%endif # Use UTF-8 in XML templates for i in static/definitions.html templates/partial/head.tmpl; do @@ -405,16 +352,10 @@ done ### CGI ### -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 cp %{SOURCE32} %{buildroot}%{_unitdir} cp %{SOURCE33} %{buildroot}%{_unitdir} cp %{SOURCE34} %{buildroot}%{_unitdir} cp %{SOURCE35} %{buildroot}%{_unitdir} -%else -mkdir -p %{buildroot}%{_initrddir} -cp %{SOURCE30} %{buildroot}%{_initrddir}/munin-cgi-html -cp %{SOURCE31} %{buildroot}%{_initrddir}/munin-cgi-graph -%endif ### Log files (ghost) ### @@ -439,8 +380,7 @@ touch %{buildroot}%{_sysconfdir}/munin/munin-htpasswd %pre getent group munin >/dev/null || groupadd -r munin -getent passwd munin >/dev/null || \ -useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin +getent passwd munin >/dev/null || useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 @@ -464,11 +404,7 @@ if [ "$1" = "1" ]; then EOF fi fi -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %systemd_post munin-rrdcached.service munin.timer -if [ -f %{_sysconfdir}/cron.d/munin ]; then - systemctl enable --now munin.timer > /dev/null 2>&1 || : -fi %preun @@ -477,72 +413,46 @@ fi %postun %systemd_postun_with_restart munin-rrdcached.service munin.timer -%endif %pre node getent group munin >/dev/null || groupadd -r munin -getent passwd munin >/dev/null || \ -useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin +getent passwd munin >/dev/null || useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 %post node -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_post munin-node.service munin-asyncd.service -%firewalld_reload -%else -/sbin/chkconfig --add munin-node -/sbin/chkconfig --add munin-asyncd -%endif # Create log file [ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ /usr/bin/install -m 0640 -o root -g adm /dev/null %{_localstatedir}/log/munin-node/munin-node.log -# Only run configure on a new install, not an upgrade. +# Run configure only on a new install, not an upgrade. if [ "$1" = "1" ]; then %{_sbindir}/munin-node-configure --shell 2> /dev/null | sh >& /dev/null || : # Clean up munin mysql_ plugin shmems and semaphores to fix selinux issue if [ -x %{_bindir}/ipcs -a -x %{_bindir}/ipcrm ]; then - for mem in $(%{_bindir}/ipcs --shmems | grep munin | cut --delimiter=' ' --fields=1) - do + for mem in $(%{_bindir}/ipcs --shmems | grep munin | cut --delimiter=' ' --fields=1); do %{_bindir}/ipcrm --shmem-key ${mem} 2>/dev/null || : done - for sem in $(%{_bindir}/ipcs --semaphores | grep munin | cut --delimiter=' ' --fields=1) - do + for sem in $(%{_bindir}/ipcs --semaphores | grep munin | cut --delimiter=' ' --fields=1); do %{_bindir}/ipcrm --semaphore-key ${sem} 2>/dev/null || : done fi fi +%firewalld_reload +%systemd_post munin-node.service munin-asyncd.service %preun node -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %systemd_preun munin-node.service munin-asyncd.service -%else -if [ $1 -eq 0 ]; then - /sbin/service munin-node stop >/dev/null 2>&1 || : - /sbin/chkconfig --del munin-node - /sbin/service munin-asyncd stop >/dev/null 2>&1 || : - /sbin/chkconfig --del munin-asyncd -fi -%endif %postun node -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %systemd_postun_with_restart munin-node.service munin-asyncd.service -%else -if [ $1 -ge 1 ]; then - /sbin/service munin-node condrestart >/dev/null 2>&1 - /sbin/service munin-asyncd condrestart >/dev/null 2>&1 -fi -%endif %pre common getent group munin >/dev/null || groupadd -r munin -getent passwd munin >/dev/null || \ -useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin +getent passwd munin >/dev/null || useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin exit 0 @@ -567,60 +477,33 @@ exit 0 %post cgi -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %systemd_post munin-cgi-graph.socket munin-cgi-graph.service %systemd_post munin-cgi-html.socket munin-cgi-html.service -%else -/sbin/chkconfig --add munin-cgi-html -/sbin/chkconfig --add munin-cgi-graph -%endif %preun cgi -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %systemd_preun munin-cgi-graph.socket munin-cgi-graph.service %systemd_preun munin-cgi-html.socket munin-cgi-html.service -%else -if [ $1 -eq 0 ]; then - /sbin/service munin-cgi-html stop >/dev/null 2>&1 || : - /sbin/chkconfig --del munin-cgi-html - /sbin/service munin-cgi-graph stop >/dev/null 2>&1 || : - /sbin/chkconfig --del munin-cgi-graph -fi -%endif %postun cgi -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %systemd_postun_with_restart munin-cgi-graph.socket munin-cgi-graph.service %systemd_postun_with_restart munin-cgi-html.socket munin-cgi-html.service -%else -if [ $1 -ge 1 ]; then - /sbin/service munin-cgi-html condrestart >/dev/null 2>&1 - /sbin/service munin-cgi-graph condrestart >/dev/null 2>&1 -fi -%endif %files %doc %{_mandir}/man5/munin.conf* %doc %{_mandir}/man8/munin* - %dir %{_sysconfdir}/munin %dir %{_sysconfdir}/munin/conf.d %dir %{_sysconfdir}/munin/templates %dir %{_sysconfdir}/munin/static -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %{_unitdir}/munin.timer %{_unitdir}/munin.service -%else -%config(noreplace) %{_sysconfdir}/cron.d/munin -%endif %config(noreplace) %{_sysconfdir}/logrotate.d/munin %config(noreplace) %{_sysconfdir}/munin/munin.conf %config(noreplace) %{_sysconfdir}/munin/templates/* %config(noreplace) %{_sysconfdir}/munin/static/* - %{_bindir}/munin-check %{_bindir}/munin-cron %dir %{_datadir}/munin @@ -639,10 +522,8 @@ fi %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-html.log %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-limits.log %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-update.log -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/rrdcached %{_unitdir}/munin-rrdcached.service -%endif %dir %{_datadir}/munin/plugins %{_datadir}/munin/plugins/munin_stats %config(noreplace) %ghost %{_sysconfdir}/munin/munin-htpasswd @@ -655,21 +536,14 @@ fi %doc %{_mandir}/man1/munin* %doc %{_mandir}/man3/Munin* %doc %{_mandir}/man5/munin-node.conf* - %dir %{_sysconfdir}/munin %dir %{_sysconfdir}/munin/plugin-conf.d %dir %{_sysconfdir}/munin/plugins %config(noreplace) %{_sysconfdir}/logrotate.d/munin-node %config(noreplace) %{_sysconfdir}/munin/munin-node.conf %config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/* -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %{_unitdir}/munin-node.service %{_unitdir}/munin-asyncd.service -%else -%{_initrddir}/munin-node -%{_initrddir}/munin-asyncd -%endif - %{_bindir}/munindoc %{_bindir}/munin-get %{_sbindir}/munin-node @@ -683,11 +557,11 @@ fi %exclude %{_datadir}/munin/plugins/munin_stats %{perl_vendorlib}/Munin/Node %{perl_vendorlib}/Munin/Plugin* -%if 0%{?rhel} >= 7 || 0%{?fedora} > 19 %{_prefix}/lib/firewalld/services/munin-node.xml -%endif %attr(-, munin, munin) %dir %{_sharedstatedir}/munin %attr(-, root, root) %dir %{_sharedstatedir}/munin/plugin-state +%attr(-, munin, root) %dir %{_sharedstatedir}/munin/plugin-state/munin +%attr(-, root, root) %dir %{_sharedstatedir}/munin/plugin-state/root %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/spool %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh %attr(0750, root, adm) %dir %{_localstatedir}/log/munin-node @@ -698,15 +572,10 @@ fi %license COPYING %doc ChangeLog HACKING.pod perltidyrc %doc httpd_cgi_graphs.conf httpd_cron_graphs.conf nginx_cgi_graphs.conf - %dir %{perl_vendorlib}/Munin %{perl_vendorlib}/Munin/Common -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %{_tmpfilesdir}/%{name}.conf %attr(0775, root, munin) %dir %{_rundir}/munin -%else -%attr(0775, root, munin) %dir %{_localstatedir}/run/munin -%endif %files plugins-ruby @@ -728,18 +597,16 @@ fi %files cgi -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 %{_unitdir}/munin-cgi-graph.service %{_unitdir}/munin-cgi-graph.socket %{_unitdir}/munin-cgi-html.service %{_unitdir}/munin-cgi-html.socket -%else -%{_initrddir}/munin-cgi-html -%{_initrddir}/munin-cgi-graph -%endif %changelog +* Mon Dec 14 2020 Kim B. Heino - 2.0.65-2 +- Add plugin-state subdirs for munin and root + * Tue Nov 17 2020 Kim B. Heino - 2.0.65-1 - Upgrade to 2.0.65 - Improve plugin-state directory owners From b768effb7c434b8deea9577933d6db7dcd2e77c3 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 7 Jan 2021 02:10:02 +0000 Subject: [PATCH 071/108] Add BuildRequires: make https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot --- munin.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/munin.spec b/munin.spec index 89c73d3..98b9912 100644 --- a/munin.spec +++ b/munin.spec @@ -45,6 +45,7 @@ Source301: munin-node BuildArch: noarch +BuildRequires: make BuildRequires: perl-interpreter >= 5.8 BuildRequires: perl-generators BuildRequires: perl(base) From 81fdcef4b55dfde796c542de815a6bf870ec0ae6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 26 Jan 2021 21:02:06 +0000 Subject: [PATCH 072/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 98b9912..1b46955 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.65 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -605,6 +605,9 @@ exit 0 %changelog +* Tue Jan 26 2021 Fedora Release Engineering - 2.0.65-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Mon Dec 14 2020 Kim B. Heino - 2.0.65-2 - Add plugin-state subdirs for munin and root From 44df45e8fd01fde0474b37e8c9c596e5e942b28e Mon Sep 17 00:00:00 2001 From: Todd Zullinger Date: Thu, 4 Feb 2021 23:52:23 -0500 Subject: [PATCH 073/108] Upgrade to 2.0.66 https://github.com/munin-monitoring/munin/blob/2.0.66/ChangeLog --- munin.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/munin.spec b/munin.spec index 1b46955..469b1ee 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.65 -Release: 3%{?dist} +Version: 2.0.66 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -605,6 +605,9 @@ exit 0 %changelog +* Fri Feb 05 2021 Todd Zullinger - 2.0.66-1 +- Upgrade to 2.0.66 + * Tue Jan 26 2021 Fedora Release Engineering - 2.0.65-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index 481423e..a731d92 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (munin-2.0.65.tar.gz) = 8a0dc93de878e1d502467f4e8589a0af2b809ec7282033534de2fd17b842bbf864d900136516a668a8e3f80e99215062620a503c5f664c799892f77950b4859a +SHA512 (munin-2.0.66.tar.gz) = 3bccb04a3e8d059a223e510a0551b98d6ca1993d5d5e9a67a8f36af1e77f8656513549bed532bdb4d1fd3a3b0ae7a3a4c8165a16ccbb219ab376e7bceb6d38c8 From 72fcc210010f3d0eab019c0a24ebd206ad67a7b5 Mon Sep 17 00:00:00 2001 From: Todd Zullinger Date: Thu, 4 Feb 2021 23:54:58 -0500 Subject: [PATCH 074/108] Verify upstream signature Upstream provides GPG signatures for releases. Verify them in %prep. This is particularly helpful because upstream does not provide the releases via https. The signing key was downloaded from the keyserver network and then exported in a minimal format using the following commands: fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133 gpg --recv-keys $fpr gpg -a --export-options export-minimal --export $fpr >gpgkey-$fpr.asc The resulting key file matches what was added to the Debian munin package by upstream contributor Lars Kruse, as found here: https://salsa.debian.org/debian/munin/-/blob/debian/debian/upstream/signing-key.asc While in the area, align the indentation of the recently added make BR. --- .gitignore | 2 +- ...0846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc | 77 +++++++++++++++++++ munin.spec | 10 ++- sources | 1 + 4 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc diff --git a/.gitignore b/.gitignore index 27c70c2..50d8957 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -munin-*.tar.gz +munin-*.tar.gz* *.src.rpm .build-*.log munin-2*/ diff --git a/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc new file mode 100644 index 0000000..9d85fc5 --- /dev/null +++ b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc @@ -0,0 +1,77 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +L7FW3jHudm/cMmq68DXxQA== +=WQyk +-----END PGP PUBLIC KEY BLOCK----- diff --git a/munin.spec b/munin.spec index 469b1ee..93040df 100644 --- a/munin.spec +++ b/munin.spec @@ -6,6 +6,11 @@ License: GPLv2 URL: http://munin-monitoring.org/ Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz +Source1: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.asc +# fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133 +# gpg --recv-keys $fpr +# gpg -a --export-options export-minimal --export $fpr >gpgkey-$fpr.asc +Source2: gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc # Master sources Source10: munin.conf @@ -45,7 +50,8 @@ Source301: munin-node BuildArch: noarch -BuildRequires: make +BuildRequires: gnupg2 +BuildRequires: make BuildRequires: perl-interpreter >= 5.8 BuildRequires: perl-generators BuildRequires: perl(base) @@ -214,6 +220,7 @@ FastCGI so you don't need this package. %prep +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' %setup -q sed -i -e ' @@ -607,6 +614,7 @@ exit 0 %changelog * Fri Feb 05 2021 Todd Zullinger - 2.0.66-1 - Upgrade to 2.0.66 +- Verify upstream signature * Tue Jan 26 2021 Fedora Release Engineering - 2.0.65-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index a731d92..8c727a2 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (munin-2.0.66.tar.gz) = 3bccb04a3e8d059a223e510a0551b98d6ca1993d5d5e9a67a8f36af1e77f8656513549bed532bdb4d1fd3a3b0ae7a3a4c8165a16ccbb219ab376e7bceb6d38c8 +SHA512 (munin-2.0.66.tar.gz.asc) = b72b3508093b5d918d16f609156e099d8beb0127f671f92d8d775237aede41495c30be43a168f65a2056dec0902e44b4a29bedbca1c6fa53e700e63dec3fc04a From 65bf794da840ed173cde5f190e11b5c147c0a821 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Fri, 5 Feb 2021 15:04:43 +0200 Subject: [PATCH 075/108] spec: cleanup --- munin.spec | 197 +++++++++++++++++++++++++++-------------------------- mysql_ | 65 ++++++++++-------- 2 files changed, 137 insertions(+), 125 deletions(-) diff --git a/munin.spec b/munin.spec index 93040df..b37f040 100644 --- a/munin.spec +++ b/munin.spec @@ -1,101 +1,102 @@ -Name: munin -Version: 2.0.66 -Release: 1%{?dist} -Summary: Network-wide resource monitoring tool -License: GPLv2 -URL: http://munin-monitoring.org/ +Name: munin +Version: 2.0.66 +Release: 1%{?dist} +Summary: Network-wide resource monitoring tool +License: GPLv2 +URL: http://munin-monitoring.org/ -Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz -Source1: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.asc +Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz +Source1: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.asc # fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133 # gpg --recv-keys $fpr # gpg -a --export-options export-minimal --export $fpr >gpgkey-$fpr.asc -Source2: gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc +Source2: gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc # Master sources -Source10: munin.conf -Source11: munin.logrotate -Source12: munin.tmpfilesd -Source131: munin.timer -Source132: munin.service -Source15: munin-rrdcached.service -Source16: httpd_cgi_graphs.conf -Source17: httpd_cron_graphs.conf -Source18: nginx_cgi_graphs.conf +Source10: munin.conf +Source11: munin.logrotate +Source12: munin.tmpfilesd +Source13: munin.timer +Source14: munin.service +Source15: munin-rrdcached.service +Source16: httpd_cgi_graphs.conf +Source17: httpd_cron_graphs.conf +Source18: nginx_cgi_graphs.conf # Node sources -Source20: munin-node.conf -Source21: munin-node.logrotate -Source23: munin-node.service -Source25: munin-asyncd.service -Source26: munin-node.xml +Source20: munin-node.conf +Source21: munin-node.logrotate +Source23: munin-node.service +Source25: munin-asyncd.service +Source26: munin-node.xml # CGI sources -Source32: munin-cgi-graph.service -Source33: munin-cgi-graph.socket -Source34: munin-cgi-html.service -Source35: munin-cgi-html.socket +Source32: munin-cgi-graph.service +Source33: munin-cgi-graph.socket +Source34: munin-cgi-html.service +Source35: munin-cgi-html.socket # Patches -Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch -Patch102: postfix-category.patch -Patch103: munin-run_no_systemd.patch +Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch +Patch102: postfix-category.patch +Patch103: munin-run_no_systemd.patch # Use some plugins from munin 3.0 branch -Source200: mysql_ +Source200: mysql_ # Plugin config -Source300: 00-default -Source301: munin-node - -BuildArch: noarch +Source300: 00-default +Source301: munin-node +BuildRequires: firewalld-filesystem BuildRequires: gnupg2 BuildRequires: make -BuildRequires: perl-interpreter >= 5.8 -BuildRequires: perl-generators -BuildRequires: perl(base) +BuildRequires: perl(Carp) BuildRequires: perl(English) BuildRequires: perl(File::Spec) BuildRequires: perl(HTML::Template) -BuildRequires: perl(lib) -BuildRequires: perl(Module::Build) BuildRequires: perl(Log::Log4perl) -BuildRequires: perl(Net::Server) -BuildRequires: perl(Net::SSLeay) +BuildRequires: perl(Module::Build) BuildRequires: perl(Net::SNMP) -BuildRequires: perl(strict) +BuildRequires: perl(Net::SSLeay) +BuildRequires: perl(Net::Server) BuildRequires: perl(Text::Balanced) +BuildRequires: perl(base) +BuildRequires: perl(lib) +BuildRequires: perl(strict) BuildRequires: perl(warnings) -BuildRequires: perl(Carp) +BuildRequires: perl-generators +BuildRequires: perl-interpreter >= 5.8 BuildRequires: systemd -BuildRequires: firewalld-filesystem # Munin server requires Requires: %{name}-common = %{version} Requires: %{name}-web-support -Requires: logrotate -Requires: rrdtool Requires: /bin/mail -Requires: perl(FCGI) +Requires: dejavu-sans-mono-fonts +Requires: logrotate +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires: perl(DateTime) Requires: perl(Digest::MD5) +Requires: perl(FCGI) Requires: perl(File::Copy::Recursive) Requires: perl(Getopt::Long) Requires: perl(HTML::Template) Requires: perl(IO::Socket::INET6) -Requires: perl(Net::Server) Requires: perl(Net::SNMP) Requires: perl(Net::SSLeay) +Requires: perl(Net::Server) Requires: perl(Params::Validate) Requires: perl(RRDs) Requires: perl(Storable) -Requires: perl(Text::Balanced) -Requires: perl(DateTime) -Requires: perl(Time::HiRes) Requires: perl(Taint::Runtime) -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires: perl(Text::Balanced) +Requires: perl(Time::HiRes) +Requires: rrdtool Requires(pre): shadow-utils -Requires: dejavu-sans-mono-fonts +%{?systemd_requires} + +BuildArch: noarch %description @@ -114,23 +115,24 @@ files and installation instructions. %package node -Summary: Network-wide resource monitoring tool (node) -Requires: %{name}-common = %{version} -Requires: procps -Requires: sysstat -Requires: hdparm -Requires: bc -Requires: /usr/bin/which -Requires: conntrack-tools -Requires: perl(Net::CIDR) -Requires: perl(Net::Server) -Requires: perl(IO::Socket::INET6) -Requires: perl(Net::SSLeay) -Requires: perl(Cache::Cache) -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) -Requires(pre): shadow-utils -Requires: firewalld-filesystem -BuildArch: noarch +Summary: Network-wide resource monitoring tool (node) +Requires: %{name}-common = %{version} +Requires: /usr/bin/which +Requires: bc +Requires: conntrack-tools +Requires: firewalld-filesystem +Requires: hdparm +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires: perl(Cache::Cache) +Requires: perl(IO::Socket::INET6) +Requires: perl(Net::CIDR) +Requires: perl(Net::SSLeay) +Requires: perl(Net::Server) +Requires: procps +Requires: sysstat +Requires(pre): shadow-utils +%{?systemd_requires} +BuildArch: noarch %description node @@ -153,12 +155,12 @@ SNMP or similar technology. %package common -Summary: Network-wide resource monitoring tool (common files) -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) -Requires: acl -Requires(pre): shadow-utils -BuildArch: noarch +Summary: Network-wide resource monitoring tool (common files) +Requires: acl +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires(pre): shadow-utils %{?systemd_requires} +BuildArch: noarch %description common @@ -171,9 +173,9 @@ and node (munin-node) packages. %package plugins-ruby -Summary: Ruby plugins for Munin resource monitoring -Requires: %{name}-node = %{version} -BuildArch: noarch +Summary: Ruby plugins for Munin resource monitoring +Requires: %{name}-node = %{version} +BuildArch: noarch %description plugins-ruby @@ -181,12 +183,12 @@ Additional Ruby plugins for munin-node. %package nginx -Summary: NGINX support for Munin resource monitoring -Requires: %{name} = %{version} -Requires: munin-cgi -Requires: nginx-filesystem -Provides: munin-web-support = %{version}-%{release} -BuildArch: noarch +Summary: NGINX support for Munin resource monitoring +Requires: %{name} = %{version} +Requires: munin-cgi +Requires: nginx-filesystem +Provides: munin-web-support = %{version}-%{release} +BuildArch: noarch %description nginx @@ -194,12 +196,12 @@ NGINX support for Munin resource monitoring. %package apache -Summary: Apache support for Munin resource monitoring -Requires: %{name} = %{version} -Requires: httpd -Requires: mod_fcgid -Provides: munin-web-support = %{version}-%{release} -BuildArch: noarch +Summary: Apache support for Munin resource monitoring +Requires: %{name} = %{version} +Requires: httpd +Requires: mod_fcgid +Provides: munin-web-support = %{version}-%{release} +BuildArch: noarch %description apache @@ -207,10 +209,11 @@ Apache support for Munin resource monitoring. %package cgi -Summary: FastCGI startup scripts for Munin resource monitoring -Requires: %{name} = %{version} -Requires: nginx-filesystem -BuildArch: noarch +Summary: FastCGI startup scripts for Munin resource monitoring +Requires: %{name} = %{version} +Requires: nginx-filesystem +%{?systemd_requires} +BuildArch: noarch %description cgi @@ -342,8 +345,8 @@ mkdir -p %{buildroot}%{_rundir}/munin cp %{SOURCE12} %{buildroot}%{_tmpfilesdir}/%{name}.conf # Add timer and service -cp %{SOURCE131} %{buildroot}%{_unitdir} -cp %{SOURCE132} %{buildroot}%{_unitdir} +cp %{SOURCE13} %{buildroot}%{_unitdir} +cp %{SOURCE14} %{buildroot}%{_unitdir} # ssh for asyncd mkdir -p %{buildroot}%{_sharedstatedir}/munin/.ssh diff --git a/mysql_ b/mysql_ index b22cf47..945ce8c 100755 --- a/mysql_ +++ b/mysql_ @@ -96,7 +96,7 @@ For example: =item Cache::Cache The plugin uses shared memory to cache the statistics gathered from -MySQL. This ensures minimal inpact on the MySQL server. +MySQL. This ensures minimal impact on the MySQL server. =item DBD::mysql @@ -173,21 +173,26 @@ use warnings; use strict; use utf8; -use DBI; +use English qw( -no_match_vars ); use File::Basename; -use Math::BigInt; # Used to append "=> lib 'GMP'" here, but GMP caused - # segfault on some occasions. Removed as I don't - # think the tiny performance boost is worth the - # debugging effort. use Storable qw(nfreeze thaw); use Munin::Plugin; my $has_cache; +my $has_dbi; +my $has_math_bigint; BEGIN { - eval 'require Cache::SharedMemoryCache'; - $has_cache = $@ ? 0 : 1; + eval { require Cache::SharedMemoryCache; }; + $has_cache = $EVAL_ERROR ? 0 : 1; + eval { require DBI; DBI->import(); }; + $has_dbi = $EVAL_ERROR ? 0 : 1; + # Used to append "=> lib 'GMP'" here, but GMP caused segfault on some + # occasions. Removed as I don't think the tiny performance boost is + # worth the debugging effort. + eval { require Math::BigInt; Math::BigInt->import(); }; + $has_math_bigint = $EVAL_ERROR ? 0 : 1; } @@ -1658,6 +1663,12 @@ sub main { die "Missing dependency Cache::Cache" unless $has_cache || $command eq 'autoconf'; + die "Missing dependency DBI" + unless $has_dbi || $command eq 'autoconf'; + + die "Missing dependency Math::BigInt" + unless $has_math_bigint || $command eq 'autoconf'; + return $command_map{$command}->($graph); } @@ -1675,6 +1686,14 @@ sub autoconf { print "no (Missing dependency Cache::Cache)\n"; return 0; } + unless ($has_dbi) { + print "no (Missing dependency DBI)\n"; + return 0; + } + unless ($has_math_bigint) { + print "no (Missing dependency Math::BigInt)\n"; + return 0; + } eval { db_connect(); @@ -1716,7 +1735,7 @@ sub suggest { sub config { my $graph_name = shift; - # In MySQL 5.1 (and probably erlier versions as well) status + # In MySQL 5.1 (and probably earlier versions as well) status # variables are unique when looking at the last 19 characters. # # SELECT RIGHT(variable_name, 19), COUNT(*) @@ -1765,7 +1784,6 @@ sub config { } print "graph_category db\n"; - my $i = 0; for my $ds (@{$graph->{data_sources}}) { my %ds_spec = ( %{$defaults{data_source_attrs}}, @@ -1773,23 +1791,14 @@ sub config { %$ds, ); while (my ($k, $v) = each %ds_spec) { - # 'name' is only used internally in this script, not - # understood by munin. - next if ($k eq 'name'); + # 'name' is only used internally in this script, not + # understood by munin. + next if ($k eq 'name'); - # AREASTACK is part of munin as of version 1.3.3 (not - # released yet). Until then ... - if ($k eq 'draw' && $v eq 'AREASTACK') { - printf("%s.%s %s\n", - clean_fieldname($ds->{name}), $k, ($i ? 'STACK' : 'AREA')); - } - else { - # support simple pattern substitution in cdef ("%s" -> fieldname) - my $fieldname = clean_fieldname($ds->{name}); - $v =~ s/%s/$fieldname/g if (($k eq "cdef") and ($v =~ /%s/)); - printf("%s.%s %s\n", $fieldname, $k, $v); - } - $i++; + # support simple pattern substitution in cdef ("%s" -> fieldname) + my $fieldname = clean_fieldname($ds->{name}); + $v =~ s/%s/$fieldname/g if (($k eq "cdef") and ($v =~ /%s/)); + printf("%s.%s %s\n", $fieldname, $k, $v); } print_thresholds(clean_fieldname($ds->{name})); } @@ -1955,7 +1964,7 @@ sub update_variables { $sth->finish(); } - $data->{'mysql_base_memory'} = $data->{'key_buffer_size'} + $data->{'mysql_base_memory'} = $data->{'key_buffer_size'} + $data->{'query_cache_size'} + $data->{'innodb_buffer_pool_size'} + ( $data->{'innodb_additional_mem_pool_size'} || 0 ) @@ -2465,7 +2474,7 @@ sub parse_buffer_pool_and_memory { return 1; }; # mariadb-5.5 - m/\GInternal hash tables \(constant factor \+ variable factor\)\n\s*Adaptive hash index\s*(\d+)\s*\((\d+) \+ (\d+)\) *\n\s+Page hash +(\d+) +\(buffer pool \d+ only\) *\n\s+Dictionary cache\s*(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+File system\s+(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+Lock system\s+(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+Recovery system\s*(\d+)\s+\((\d+) \+ (\d+)\) *\n/gc + m/\GInternal hash tables \(constant factor \+ variable factor\)\n\s*Adaptive hash index\s*(\d+)\s*\((\d+) \+ (\d+)\) *\n\s+Page hash +(\d+) +\(buffer pool \d+ only\) *\n\s+Dictionary cache\s*(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+File system\s+(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+Lock system\s+(\d+)\s+\((\d+) \+ (\d+)\) *\n\s+Recovery system\s*(\d+)\s+\((\d+) \+ (\d+)\) *\n/gc && do { $data->{ib_bpool_internal_adaptive_hash_size_total} = $1; $data->{ib_bpool_internal_adaptive_hash_size_const} = $2; From 56d48745950d5cd0a266de36c788057b31d99ccf Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Wed, 24 Feb 2021 15:14:13 +0200 Subject: [PATCH 076/108] 2.0.67 --- munin.spec | 5 ++++- sources | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/munin.spec b/munin.spec index b37f040..f5d7e0c 100644 --- a/munin.spec +++ b/munin.spec @@ -1,5 +1,5 @@ Name: munin -Version: 2.0.66 +Version: 2.0.67 Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 @@ -615,6 +615,9 @@ exit 0 %changelog +* Wed Feb 24 2021 Kim B. Heino - 2.0.67-1 +- Upgrade to 2.0.67 + * Fri Feb 05 2021 Todd Zullinger - 2.0.66-1 - Upgrade to 2.0.66 - Verify upstream signature diff --git a/sources b/sources index 8c727a2..1383b5f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (munin-2.0.66.tar.gz) = 3bccb04a3e8d059a223e510a0551b98d6ca1993d5d5e9a67a8f36af1e77f8656513549bed532bdb4d1fd3a3b0ae7a3a4c8165a16ccbb219ab376e7bceb6d38c8 -SHA512 (munin-2.0.66.tar.gz.asc) = b72b3508093b5d918d16f609156e099d8beb0127f671f92d8d775237aede41495c30be43a168f65a2056dec0902e44b4a29bedbca1c6fa53e700e63dec3fc04a +SHA512 (munin-2.0.67.tar.gz) = 1f3766b52b99f625ff9cf4d3748a8935abed32b129d2a4714e37118e0116019bee3c1fd0e95da416fb3e39c9be9df17d11bca7f5a835be65ac5147e8b9858417 +SHA512 (munin-2.0.67.tar.gz.asc) = 997b54924640df6b590d5d7feecfced69563dad42e9256d1234965916d0360844931dd5b96b4c4268d726c5ee0b4e6f660753a13458a3427f1d07aabcea0c50a From 6fe6c7fc63c691a7482a32859bf585da448fdd50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 2 Mar 2021 16:13:23 +0100 Subject: [PATCH 077/108] Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. --- munin.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index f5d7e0c..30aae98 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.67 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -615,6 +615,10 @@ exit 0 %changelog +* Tue Mar 02 2021 Zbigniew JÄ™drzejewski-Szmek - 2.0.67-2 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + * Wed Feb 24 2021 Kim B. Heino - 2.0.67-1 - Upgrade to 2.0.67 From 78b3d831734740d7595b654ec0c4ad23f15f9dac Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Sun, 23 May 2021 01:38:20 +0200 Subject: [PATCH 078/108] Perl 5.34 rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 30aae98..bfafbd7 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.67 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -615,6 +615,9 @@ exit 0 %changelog +* Sat May 22 2021 Jitka Plesnikova - 2.0.67-3 +- Perl 5.34 rebuild + * Tue Mar 02 2021 Zbigniew JÄ™drzejewski-Szmek - 2.0.67-2 - Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. From ab0187d28fa5bc16b3968740e4c800ad94285467 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 22 Jul 2021 15:37:22 +0000 Subject: [PATCH 079/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index bfafbd7..6c9b46d 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.67 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -615,6 +615,9 @@ exit 0 %changelog +* Thu Jul 22 2021 Fedora Release Engineering - 2.0.67-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Sat May 22 2021 Jitka Plesnikova - 2.0.67-3 - Perl 5.34 rebuild From 9ef93a8031e5f725690d1a4a76f9aff0203e41e5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jan 2022 20:40:28 +0000 Subject: [PATCH 080/108] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 6c9b46d..9d9197c 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.67 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -615,6 +615,9 @@ exit 0 %changelog +* Thu Jan 20 2022 Fedora Release Engineering - 2.0.67-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Thu Jul 22 2021 Fedora Release Engineering - 2.0.67-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 29952713f76f338af79d344209caf890d38f2926 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 1 Jun 2022 02:16:58 +0200 Subject: [PATCH 081/108] Perl 5.36 rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 9d9197c..269fa75 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.67 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -615,6 +615,9 @@ exit 0 %changelog +* Wed Jun 01 2022 Jitka Plesnikova - 2.0.67-6 +- Perl 5.36 rebuild + * Thu Jan 20 2022 Fedora Release Engineering - 2.0.67-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 82a717e5710e98d6f368064670e254632e642fb9 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Wed, 20 Jul 2022 14:39:20 +0300 Subject: [PATCH 082/108] 2.0.69, use /etc/munin/munin-conf.d instead of /etc/munin/conf.d as in upstream --- 00-default | 17 ++++++++++++++++ munin.conf | 6 +++--- munin.spec | 59 +++++++++++++++++++++++++++++++++++++++++++----------- mysql_ | 9 --------- sources | 4 ++-- 5 files changed, 69 insertions(+), 26 deletions(-) diff --git a/00-default b/00-default index 1811689..55df6fb 100644 --- a/00-default +++ b/00-default @@ -12,6 +12,9 @@ # individual plugins to find out which variables they # care about. +[amavis_multi] +user amavis + [bind9_rndc] user root env.rndc /usr/sbin/rndc @@ -25,6 +28,11 @@ user root env.exclude none unknown binfmt_misc cgroup_root debugfs devpts devtmpfs fuse.gvfs-fuse-daemon iso9660 ramfs romfs rootfs rpc_pipefs squashfs udf env.exclude_re ^/run/user/ ^/sys/ ^/var/lib/docker ^/var/lib/containers/storage/overlay ^/var/lib/mock/ ^/media/ ^/mnt$ +[dhcp-pool] +user root +env.conffile /etc/dhcp/dhcpd.conf +env.leasefile /var/lib/dhcpd/dhcpd.leases + [exim*] group mail @@ -37,6 +45,9 @@ user root [if_*] user root +[knot] +user root + [load] env.load_warning 100 @@ -59,6 +70,9 @@ env.seconds_behind_master_critical 86400 env.wsrep_flow_control_paused_ns_warning 200000000 env.wsrep_flow_control_paused_ns_critical 10000000000 +[nsd_requests] +user root + [postfix*] user root env.logfile maillog @@ -69,6 +83,9 @@ user postgres env.PGUSER postgres env.PGPORT 5432 +[raid2] +user root + [sendmail*] user root env.mspqueue /var/spool/clientmqueue diff --git a/munin.conf b/munin.conf index 5d70186..ee4aa79 100644 --- a/munin.conf +++ b/munin.conf @@ -1,7 +1,7 @@ ########################################################################### # # # Please don't edit this example config file. Create and edit # -# file /etc/munin/conf.d/local.conf instead. # +# file /etc/munin/munin-conf.d/local.conf instead. # # # # You must also install munin-nginx or munin-apache sub-package. See # # /usr/share/doc/munin-*/*.conf for example nginx/apache config files # @@ -17,7 +17,7 @@ #dbdir /var/lib/munin #htmldir /var/www/html/munin #logdir /var/log/munin -#rundir /var/run/munin +#rundir /run/munin # Where to look for the HTML templates # @@ -33,7 +33,7 @@ #cgitmpdir /var/lib/munin/cgi-tmp # (Exactly one) directory to include all files from. -includedir /etc/munin/conf.d +includedir /etc/munin/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" diff --git a/munin.spec b/munin.spec index 269fa75..a245caf 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.67 -Release: 6%{?dist} +Version: 2.0.69 +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -9,7 +9,7 @@ Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{ Source1: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.asc # fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133 # gpg --recv-keys $fpr -# gpg -a --export-options export-minimal --export $fpr >gpgkey-$fpr.asc +# gpg -a --export-options export-minimal --export $fpr > gpgkey-$fpr.asc Source2: gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc # Master sources @@ -41,7 +41,7 @@ Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch Patch102: postfix-category.patch Patch103: munin-run_no_systemd.patch -# Use some plugins from munin 3.0 branch +# Use some plugins from Munin 3.0 branch / Munin contrib Source200: mysql_ # Plugin config @@ -98,6 +98,9 @@ Requires(pre): shadow-utils BuildArch: noarch +# Some plugins are php or python3, remove them from autogenerated requires +%global __requires_exclude ^/usr/bin/(php|python3)$ + %description Munin is a highly flexible and powerful solution used to create graphs of @@ -153,6 +156,8 @@ relay information from other devices in your network that can't run Munin, such as a switch or a server running another operating system, by using SNMP or similar technology. +This package includes some extra plugins from Munin contrib plugins. + %package common Summary: Network-wide resource monitoring tool (common files) @@ -295,7 +300,7 @@ mv %{buildroot}%{_datadir}/munin/munin-asyncd %{buildroot}%{_sbindir}/munin-asyn # Remove the Sybase plugin for now, as they need perl modules that are not available rm -f %{buildroot}%{_datadir}/munin/plugins/sybase_space -# Update some plugins from 3.0 branch +# Update some plugins from 3.0 branch / contrib cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ # Install plugin config @@ -330,8 +335,8 @@ done ### Server ### -# Rename server's config directory -mv %{buildroot}%{_sysconfdir}/munin/munin-conf.d %{buildroot}%{_sysconfdir}/munin/conf.d +# Create compatibility symlink ghost +ln -s munin-conf.d %{buildroot}%{_sysconfdir}/munin/conf.d # Overwrite default config file cp %{SOURCE10} %{buildroot}%{_sysconfdir}/munin/ @@ -405,8 +410,8 @@ exit 0 /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-update.log # On new install only: create simple localhost config. if [ "$1" = "1" ]; then - if [ ! -f %{_sysconfdir}/munin/conf.d/local.conf ]; then - cat - >> %{_sysconfdir}/munin/conf.d/local.conf <> %{_sysconfdir}/munin/munin-conf.d/local.conf </dev/null)" ]; then + mv -f %{_sysconfdir}/munin/conf.d/* %{_sysconfdir}/munin/munin-conf.d/ +fi +exit 0 + + +%triggerpostun -- munin < 2.0.69-2 +if [ -d %{_sysconfdir}/munin/conf.d ]; then + if ! rmdir %{_sysconfdir}/munin/conf.d 2>/dev/null; then + mv -f %{_sysconfdir}/munin/conf.d %{_sysconfdir}/munin/conf.d.rpmold + fi +fi +if [ -f %{_sysconfdir}/munin/munin.conf.rpmnew ]; then + if [ -n "$(ls %{_sysconfdir}/munin/munin-conf.d/* 2>/dev/null)" ]; then + ln -sf munin-conf.d %{_sysconfdir}/munin/conf.d + fi +fi +exit 0 %pre node @@ -506,11 +533,12 @@ exit 0 %doc %{_mandir}/man5/munin.conf* %doc %{_mandir}/man8/munin* %dir %{_sysconfdir}/munin -%dir %{_sysconfdir}/munin/conf.d +%dir %{_sysconfdir}/munin/munin-conf.d %dir %{_sysconfdir}/munin/templates %dir %{_sysconfdir}/munin/static %{_unitdir}/munin.timer %{_unitdir}/munin.service +%ghost %{_sysconfdir}/munin/conf.d %config(noreplace) %{_sysconfdir}/logrotate.d/munin %config(noreplace) %{_sysconfdir}/munin/munin.conf %config(noreplace) %{_sysconfdir}/munin/templates/* @@ -615,6 +643,13 @@ exit 0 %changelog +* Wed Jul 20 2022 Kim B. Heino - 2.0.69-2 +- Replace /etc/munin/conf.d with upstream default /etc/munin/munin-conf.d +- Add compatibility symlink /etc/munin/conf.d if necessary + +* Wed Jul 20 2022 Kim B. Heino - 2.0.69-1 +- Upgrade to 2.0.69 + * Wed Jun 01 2022 Jitka Plesnikova - 2.0.67-6 - Perl 5.36 rebuild diff --git a/mysql_ b/mysql_ index 945ce8c..3458832 100755 --- a/mysql_ +++ b/mysql_ @@ -983,9 +983,6 @@ $graphs{innodb_semaphores} = { }, }, data_sources => [ - {name => 'ib_spin_rounds', label => 'Spin Rounds'}, - {name => 'ib_spin_waits', label => 'Spin Waits'}, - {name => 'ib_os_waits', label => 'OS Waits'}, {name => 'ib_rw_shared_rounds', label => 'RW/S Rounds'}, {name => 'ib_rw_shared_waits', label => 'RW/S Waits'}, {name => 'ib_rw_shared_os_waits', label => 'RW/S OS Waits'}, @@ -2301,12 +2298,6 @@ sub parse_row_operations { sub parse_semaphores { parse_section( sub { - m/\GMutex spin waits (\d+), rounds (\d+), OS waits (\d+)\n/gc && do { - $data->{ib_spin_waits} = $1; - $data->{ib_spin_rounds} = $2; - $data->{ib_os_waits} = $3; - return 1; - }; m/\GRW-shared spins (\d+), rounds (\d+), OS waits (\d+)\n/gc && do { $data->{ib_rw_shared_waits} = $1; $data->{ib_rw_shared_rounds} = $2; diff --git a/sources b/sources index 1383b5f..d8e3914 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (munin-2.0.67.tar.gz) = 1f3766b52b99f625ff9cf4d3748a8935abed32b129d2a4714e37118e0116019bee3c1fd0e95da416fb3e39c9be9df17d11bca7f5a835be65ac5147e8b9858417 -SHA512 (munin-2.0.67.tar.gz.asc) = 997b54924640df6b590d5d7feecfced69563dad42e9256d1234965916d0360844931dd5b96b4c4268d726c5ee0b4e6f660753a13458a3427f1d07aabcea0c50a +SHA512 (munin-2.0.69.tar.gz) = e79c446d04df97d77b36972203667163ee662e0894e264c5dd84bd9402df780c5e67b69314bfdaddd87f102c4cdedb8fa7d2c07aeea46a8e4e9f08e50a08408f +SHA512 (munin-2.0.69.tar.gz.asc) = 50500e4a509f6cf4320bfcad3763601a6eb538260ff791c1be8e1bcb6497d5067c0bcba4ea8a4de21aef0d693d7a5956576fbc3ea58521aa9708cf30f8d75321 From 8136ab9a892ad635ec5a3887efc9bf16e8e5a02b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 22 Jul 2022 00:00:03 +0000 Subject: [PATCH 083/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index a245caf..0e6a423 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.69 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -643,6 +643,9 @@ exit 0 %changelog +* Fri Jul 22 2022 Fedora Release Engineering - 2.0.69-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Wed Jul 20 2022 Kim B. Heino - 2.0.69-2 - Replace /etc/munin/conf.d with upstream default /etc/munin/munin-conf.d - Add compatibility symlink /etc/munin/conf.d if necessary From 81c32c8bf7697381d7db37fc62e40e4230256f77 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sat, 23 Jul 2022 21:33:55 +0300 Subject: [PATCH 084/108] Replace /var/lib/munin/plugin-state with upstream default /var/lib/munin-node/plugin-state --- munin.spec | 33 ++++++++++++++++++++++++--------- munin.tmpfilesd | 1 - 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/munin.spec b/munin.spec index 0e6a423..6391920 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.69 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -134,6 +134,8 @@ Requires: perl(Net::Server) Requires: procps Requires: sysstat Requires(pre): shadow-utils +Requires(pre): %{_sbindir}/semanage +Requires(pre): %{_sbindir}/restorecon %{?systemd_requires} BuildArch: noarch @@ -240,7 +242,7 @@ sed -i -e ' s,^HTMLDIR = \(.*\),HTMLDIR = $(DESTDIR)%{_localstatedir}/www/html/munin,; s,^CGIDIR = \(.*\),CGIDIR = $(HTMLDIR)/cgi,; s,^DBDIR = \(.*\),DBDIR = $(DESTDIR)%{_sharedstatedir}/munin,; - s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin,; + s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin-node,; s,^LOGDIR = \(.*\),LOGDIR = $(DESTDIR)%{_localstatedir}/log/munin,; %if 0%{?rhel} >= 8 || 0%{?fedora} s,^PYTHON := \(.*\),PYTHON := /usr/bin/python3,; @@ -308,9 +310,8 @@ cp %{SOURCE300} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ cp %{SOURCE301} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ # Create plugin state dirs -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/munin -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/root +mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/plugin-state/munin +mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/plugin-state/root # firewalld config mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services @@ -463,8 +464,13 @@ exit 0 # Create log file [ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ /usr/bin/install -m 0640 -o root -g adm /dev/null %{_localstatedir}/log/munin-node/munin-node.log -# Run configure only on a new install, not an upgrade. +# Fix plugin-state SELinux +%{_sbindir}/semanage fcontext -a -e %{_sharedstatedir}/munin %{_sharedstatedir}/munin-node 2> /dev/null || : +%{_sbindir}/semanage fcontext -a -e %{_sharedstatedir}/munin/plugin-state %{_sharedstatedir}/munin-node/plugin-state 2> /dev/null || : +%{_sbindir}/restorecon -R %{_sharedstatedir}/munin-node || : +# Is this new install, not upgrade? if [ "$1" = "1" ]; then + # Run configure %{_sbindir}/munin-node-configure --shell 2> /dev/null | sh >& /dev/null || : # Clean up munin mysql_ plugin shmems and semaphores to fix selinux issue if [ -x %{_bindir}/ipcs -a -x %{_bindir}/ipcrm ]; then @@ -485,6 +491,11 @@ fi %postun node +# Is this uninstall, not upgrade? +if [ "$1" = "0" ]; then + %{_sbindir}/semanage fcontext -a -d %{_sharedstatedir}/munin-node/plugin-state 2> /dev/null || : + %{_sbindir}/semanage fcontext -a -d %{_sharedstatedir}/munin-node 2> /dev/null || : +fi %systemd_postun_with_restart munin-node.service munin-asyncd.service @@ -598,9 +609,10 @@ exit 0 %{perl_vendorlib}/Munin/Plugin* %{_prefix}/lib/firewalld/services/munin-node.xml %attr(-, munin, munin) %dir %{_sharedstatedir}/munin -%attr(-, root, root) %dir %{_sharedstatedir}/munin/plugin-state -%attr(-, munin, root) %dir %{_sharedstatedir}/munin/plugin-state/munin -%attr(-, root, root) %dir %{_sharedstatedir}/munin/plugin-state/root +%attr(-, root, root) %dir %{_sharedstatedir}/munin-node +%attr(-, root, root) %dir %{_sharedstatedir}/munin-node/plugin-state +%attr(-, munin, root) %dir %{_sharedstatedir}/munin-node/plugin-state/munin +%attr(-, root, root) %dir %{_sharedstatedir}/munin-node/plugin-state/root %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/spool %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh %attr(0750, root, adm) %dir %{_localstatedir}/log/munin-node @@ -643,6 +655,9 @@ exit 0 %changelog +* Sat Jul 23 2022 Kim B. Heino - 2.0.69-4 +- Replace /var/lib/munin/plugin-state with upstream default /var/lib/munin-node/plugin-state + * Fri Jul 22 2022 Fedora Release Engineering - 2.0.69-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/munin.tmpfilesd b/munin.tmpfilesd index 68ba12f..7d62768 100644 --- a/munin.tmpfilesd +++ b/munin.tmpfilesd @@ -6,7 +6,6 @@ d /run/munin 0775 root munin - x /var/lib/munin/.ssh x /var/lib/munin/cgi-tmp -x /var/lib/munin/plugin-state x /var/lib/munin/rrdcached e /var/lib/munin/cgi-tmp/* - - - 1d From 771506eab0cf08a7d96bd77924bf539ddd949ec3 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sun, 24 Jul 2022 15:26:24 +0300 Subject: [PATCH 085/108] spec: bump release for rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 6391920..e51ec98 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.69 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -655,6 +655,9 @@ exit 0 %changelog +* Sun Jul 24 2022 Kim B. Heino - 2.0.69-5 +- Bump release for rebuild + * Sat Jul 23 2022 Kim B. Heino - 2.0.69-4 - Replace /var/lib/munin/plugin-state with upstream default /var/lib/munin-node/plugin-state From 6c979bfa452d5d7efed288e9f0701c94c6308e73 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 13 Jan 2023 09:49:18 +0100 Subject: [PATCH 086/108] Remove perl(MODULE_COMPAT), it will be replaced by generators --- munin.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/munin.spec b/munin.spec index e51ec98..307cc47 100644 --- a/munin.spec +++ b/munin.spec @@ -75,7 +75,6 @@ Requires: %{name}-web-support Requires: /bin/mail Requires: dejavu-sans-mono-fonts Requires: logrotate -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires: perl(DateTime) Requires: perl(Digest::MD5) Requires: perl(FCGI) @@ -125,7 +124,6 @@ Requires: bc Requires: conntrack-tools Requires: firewalld-filesystem Requires: hdparm -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires: perl(Cache::Cache) Requires: perl(IO::Socket::INET6) Requires: perl(Net::CIDR) @@ -164,7 +162,6 @@ This package includes some extra plugins from Munin contrib plugins. %package common Summary: Network-wide resource monitoring tool (common files) Requires: acl -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires(pre): shadow-utils %{?systemd_requires} BuildArch: noarch From 56e001ab976618752ff37273bb05984857a9be7f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 21:00:18 +0000 Subject: [PATCH 087/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 307cc47..4ac57b5 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.69 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -652,6 +652,9 @@ exit 0 %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 2.0.69-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Sun Jul 24 2022 Kim B. Heino - 2.0.69-5 - Bump release for rebuild From bb95f3a6163e31b0509eabee321a5f225d4b7082 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 7 Mar 2023 11:33:50 +0200 Subject: [PATCH 088/108] 00-default: add config for ipmi_* plugins --- 00-default | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/00-default b/00-default index 55df6fb..2f83c3b 100644 --- a/00-default +++ b/00-default @@ -45,6 +45,10 @@ user root [if_*] user root +[ipmi_*] +user root +timeout 20 + [knot] user root From 3d7e775bef68b338e5275fee44d6a0c4fb0f2a51 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 7 Mar 2023 11:34:16 +0200 Subject: [PATCH 089/108] *.service: cleanup --- munin-asyncd.service | 4 +++- munin-cgi-graph.service | 1 - munin-cgi-html.service | 1 - munin-node.service | 3 ++- munin.service | 5 ++++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/munin-asyncd.service b/munin-asyncd.service index c730e8b..00ced51 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -2,7 +2,9 @@ Description=Munin Node - Asynchronous Proxy Documentation=http://guide.munin-monitoring.org/en/latest/node/async.html Requires=munin-node.service -After=network.target network-online.target munin-node.service +After=network.target +After=network-online.target +After=munin-node.service [Service] Type=notify diff --git a/munin-cgi-graph.service b/munin-cgi-graph.service index b089451..36ab23f 100644 --- a/munin-cgi-graph.service +++ b/munin-cgi-graph.service @@ -1,6 +1,5 @@ [Unit] Description=Munin FastCGI Graphs Service -After=network.target Requires=munin-cgi-graph.socket [Service] diff --git a/munin-cgi-html.service b/munin-cgi-html.service index 95be1d8..9859960 100644 --- a/munin-cgi-html.service +++ b/munin-cgi-html.service @@ -1,6 +1,5 @@ [Unit] Description=Munin FastCGI HTML Pages Service -After=network.target Requires=munin-cgi-html.socket [Service] diff --git a/munin-node.service b/munin-node.service index e84725e..115856a 100644 --- a/munin-node.service +++ b/munin-node.service @@ -1,7 +1,8 @@ [Unit] Description=Munin Node Documentation=man:munin-node(1) http://guide.munin-monitoring.org/en/latest/node/index.html -After=network.target network-online.target +After=network.target +After=network-online.target PartOf=munin-asyncd.service [Service] diff --git a/munin.service b/munin.service index b9586f6..75be8bb 100644 --- a/munin.service +++ b/munin.service @@ -1,7 +1,10 @@ [Unit] Description=Munin server to collect data from nodes Documentation=man:munin-cron(8) -After=network.target network-online.target munin-node.service +After=network.target +After=network-online.target +After=munin-node.service +After=munin-rrdcached.service [Service] User=munin From e9fabf86e9c142cd19c9ad844afbd90b67230a91 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 7 Mar 2023 11:43:06 +0200 Subject: [PATCH 090/108] spec: update --- munin.spec | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/munin.spec b/munin.spec index 4ac57b5..c0fdab9 100644 --- a/munin.spec +++ b/munin.spec @@ -1,12 +1,12 @@ Name: munin -Version: 2.0.69 -Release: 6%{?dist} +Version: 2.0.72 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ -Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz -Source1: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.asc +Source0: https://sourceforge.net/projects/munin/files/stable/%{version}/%{name}-%{version}.tar.gz +Source1: https://sourceforge.net/projects/munin/files/stable/%{version}/%{name}-%{version}.tar.gz.asc # fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133 # gpg --recv-keys $fpr # gpg -a --export-options export-minimal --export $fpr > gpgkey-$fpr.asc @@ -124,13 +124,13 @@ Requires: bc Requires: conntrack-tools Requires: firewalld-filesystem Requires: hdparm +Requires: jo Requires: perl(Cache::Cache) Requires: perl(IO::Socket::INET6) Requires: perl(Net::CIDR) Requires: perl(Net::SSLeay) Requires: perl(Net::Server) -Requires: procps -Requires: sysstat +Requires: procps-ng Requires(pre): shadow-utils Requires(pre): %{_sbindir}/semanage Requires(pre): %{_sbindir}/restorecon @@ -192,6 +192,7 @@ Requires: %{name} = %{version} Requires: munin-cgi Requires: nginx-filesystem Provides: munin-web-support = %{version}-%{release} +Conflicts: munin-apache BuildArch: noarch @@ -205,6 +206,7 @@ Requires: %{name} = %{version} Requires: httpd Requires: mod_fcgid Provides: munin-web-support = %{version}-%{release} +Conflicts: munin-nginx BuildArch: noarch @@ -259,6 +261,8 @@ sed -i -e ' s,^JC := \(.*\),JC := /bin/false,; ' Makefile.config +sed -i -e 's,@@DBDIR@@,%{_sharedstatedir}/munin-node,g' node/_bin/munin-get.in + %patch101 -p1 %patch102 -p1 %patch103 -p1 @@ -310,6 +314,9 @@ cp %{SOURCE301} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/plugin-state/munin mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/plugin-state/root +# munin-get plugin directory +mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/munin-get-plugins + # firewalld config mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services cp %{SOURCE26} %{buildroot}/%{_prefix}/lib/firewalld/services/ @@ -461,9 +468,10 @@ exit 0 # Create log file [ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ /usr/bin/install -m 0640 -o root -g adm /dev/null %{_localstatedir}/log/munin-node/munin-node.log -# Fix plugin-state SELinux -%{_sbindir}/semanage fcontext -a -e %{_sharedstatedir}/munin %{_sharedstatedir}/munin-node 2> /dev/null || : -%{_sbindir}/semanage fcontext -a -e %{_sharedstatedir}/munin/plugin-state %{_sharedstatedir}/munin-node/plugin-state 2> /dev/null || : +# Fix munin-node/plugin-state and munin-node/munin-get-plugins SELinux +%{_sbindir}/semanage fcontext --delete --equal %{_sharedstatedir}/munin %{_sharedstatedir}/munin-node 2> /dev/null || : +%{_sbindir}/semanage fcontext --add --type munin_plugin_state_t "%{_sharedstatedir}/munin-node/plugin-state(/.*)?" 2> /dev/null || : +%{_sbindir}/semanage fcontext --add --type unconfined_munin_plugin_exec_t "%{_sharedstatedir}/munin-node/munin-get-plugins(/.*)?" 2> /dev/null || : %{_sbindir}/restorecon -R %{_sharedstatedir}/munin-node || : # Is this new install, not upgrade? if [ "$1" = "1" ]; then @@ -490,8 +498,8 @@ fi %postun node # Is this uninstall, not upgrade? if [ "$1" = "0" ]; then - %{_sbindir}/semanage fcontext -a -d %{_sharedstatedir}/munin-node/plugin-state 2> /dev/null || : - %{_sbindir}/semanage fcontext -a -d %{_sharedstatedir}/munin-node 2> /dev/null || : + %{_sbindir}/semanage fcontext --delete --type munin_plugin_state_t "%{_sharedstatedir}/munin-node/plugin-state(/.*)?" 2> /dev/null || : + %{_sbindir}/semanage fcontext --delete --type unconfined_munin_plugin_exec_t "%{_sharedstatedir}/munin-node/munin-get-plugins(/.*)?" 2> /dev/null || : fi %systemd_postun_with_restart munin-node.service munin-asyncd.service @@ -607,6 +615,7 @@ exit 0 %{_prefix}/lib/firewalld/services/munin-node.xml %attr(-, munin, munin) %dir %{_sharedstatedir}/munin %attr(-, root, root) %dir %{_sharedstatedir}/munin-node +%attr(-, root, root) %dir %{_sharedstatedir}/munin-node/munin-get-plugins %attr(-, root, root) %dir %{_sharedstatedir}/munin-node/plugin-state %attr(-, munin, root) %dir %{_sharedstatedir}/munin-node/plugin-state/munin %attr(-, root, root) %dir %{_sharedstatedir}/munin-node/plugin-state/root @@ -652,6 +661,12 @@ exit 0 %changelog +* Tue Mar 7 2023 Kim B. Heino - 2.0.72-1 +- Upgrade to 2.0.72 +- Add munin-get plugin directory +- Mangle /var/lib/munin-node SELinux +- Fix service startup order + * Thu Jan 19 2023 Fedora Release Engineering - 2.0.69-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 3667ae34b8adb69913263f27077444ec64150149 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 7 Mar 2023 11:44:40 +0200 Subject: [PATCH 091/108] sources: update for 2.0.72 --- sources | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources b/sources index d8e3914..572612f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (munin-2.0.69.tar.gz) = e79c446d04df97d77b36972203667163ee662e0894e264c5dd84bd9402df780c5e67b69314bfdaddd87f102c4cdedb8fa7d2c07aeea46a8e4e9f08e50a08408f -SHA512 (munin-2.0.69.tar.gz.asc) = 50500e4a509f6cf4320bfcad3763601a6eb538260ff791c1be8e1bcb6497d5067c0bcba4ea8a4de21aef0d693d7a5956576fbc3ea58521aa9708cf30f8d75321 +SHA512 (munin-2.0.72.tar.gz) = 3da1e904630289f4e101a3cbc2f0b193a022a11be98d52f66311bda4f05a923935c02d69f04f3cd67e5e8c0d8cfee6d305bfccdffa49326cb29ae43e2cbc1f25 +SHA512 (munin-2.0.72.tar.gz.asc) = cd1a334b9aee0ce525610e75f0a754e45e6f93569dd1041b77d0e8a97e937880b619cc95822285c9ca17f862a00bc31d5b47991d56ee81700dc5bd5caeb9ac17 From c55cca5272d2dfdf27075dfb0ebc4f3bd2715063 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Thu, 18 May 2023 14:23:24 +0300 Subject: [PATCH 092/108] 2.0.73 --- munin.spec | 16 +++++++++++----- sources | 4 ++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/munin.spec b/munin.spec index c0fdab9..1658d99 100644 --- a/munin.spec +++ b/munin.spec @@ -1,5 +1,5 @@ Name: munin -Version: 2.0.72 +Version: 2.0.73 Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 @@ -263,9 +263,9 @@ sed -i -e ' sed -i -e 's,@@DBDIR@@,%{_sharedstatedir}/munin-node,g' node/_bin/munin-get.in -%patch101 -p1 -%patch102 -p1 -%patch103 -p1 +%patch -P 101 -p1 +%patch -P 102 -p1 +%patch -P 103 -p1 cp %SOURCE16 . cp %SOURCE17 . @@ -407,6 +407,7 @@ exit 0 %post # Create log files +mkdir -p %{_localstatedir}/log/munin [ -f %{_localstatedir}/log/munin/munin-html.log ] || \ /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-html.log [ -f %{_localstatedir}/log/munin/munin-limits.log ] || \ @@ -571,7 +572,6 @@ exit 0 %{perl_vendorlib}/Munin/Master %attr(-, munin, munin) %dir %{_sharedstatedir}/munin %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh -%attr(0750, munin, adm) %dir %{_localstatedir}/log/munin %attr(-, munin, munin) %dir %{_localstatedir}/www/html/munin %attr(-, munin, munin) %{_localstatedir}/www/html/munin/cgi %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-html.log @@ -641,6 +641,7 @@ exit 0 %files nginx %attr(0775, munin, munin) %dir %{_sharedstatedir}/munin/cgi-tmp +%attr(0750, munin, adm) %dir %{_localstatedir}/log/munin %attr(0660, munin, munin) %ghost %{_localstatedir}/log/munin/munin-cgi-graph.log %attr(0660, munin, munin) %ghost %{_localstatedir}/log/munin/munin-cgi-html.log %attr(0660, munin, munin) %ghost %{_localstatedir}/log/munin/munin-graph.log @@ -648,6 +649,7 @@ exit 0 %files apache %attr(0775, munin, apache) %dir %{_sharedstatedir}/munin/cgi-tmp +%attr(0750, munin, apache) %dir %{_localstatedir}/log/munin %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-graph.log %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-cgi-html.log %attr(0660, munin, apache) %ghost %{_localstatedir}/log/munin/munin-graph.log @@ -661,6 +663,10 @@ exit 0 %changelog +* Wed May 17 2023 Kim B. Heino - 2.0.73-1 +- Upgrade to 2.0.73 +- rhbz 2183484: Permission denied for group apache on /var/log/munin + * Tue Mar 7 2023 Kim B. Heino - 2.0.72-1 - Upgrade to 2.0.72 - Add munin-get plugin directory diff --git a/sources b/sources index 572612f..eeb6c39 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (munin-2.0.72.tar.gz) = 3da1e904630289f4e101a3cbc2f0b193a022a11be98d52f66311bda4f05a923935c02d69f04f3cd67e5e8c0d8cfee6d305bfccdffa49326cb29ae43e2cbc1f25 -SHA512 (munin-2.0.72.tar.gz.asc) = cd1a334b9aee0ce525610e75f0a754e45e6f93569dd1041b77d0e8a97e937880b619cc95822285c9ca17f862a00bc31d5b47991d56ee81700dc5bd5caeb9ac17 +SHA512 (munin-2.0.73.tar.gz) = 2097e35dc83c9f90ee3832de5856f5c7582c4f66c80e365aeb5426cc9bbcac24f5c75c006c523317b0533ce5fcb48abc004f0c7aa65b3bebd94fa0d7f1b03402 +SHA512 (munin-2.0.73.tar.gz.asc) = 1d94b3094c8fe8e30148f1e16bef137b248385d8e20f9fadeb8ca8f0bfd5c97551dc878c197d3a8327cf93d2033c521f2775837b50331749e25e6ebd8baa9ba9 From 6599f221c9748ab6017ea8331379cc53496e4180 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jul 2023 16:04:58 +0000 Subject: [PATCH 093/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 1658d99..d3a0ce5 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.73 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ @@ -663,6 +663,9 @@ exit 0 %changelog +* Thu Jul 20 2023 Fedora Release Engineering - 2.0.73-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Wed May 17 2023 Kim B. Heino - 2.0.73-1 - Upgrade to 2.0.73 - rhbz 2183484: Permission denied for group apache on /var/log/munin From 4341115b3d0d7d3372ffdd9a97618a198c3404c8 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Wed, 4 Oct 2023 14:36:40 +0300 Subject: [PATCH 094/108] 2.0.74 --- 00-default | 3 + ...2e36f3ab1a55c05304d6b78dc07048bd8f84.patch | 0 ...0846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc | 447 +++++++++++++++--- munin.spec | 13 +- mysql_ | 13 +- sources | 4 +- 6 files changed, 407 insertions(+), 73 deletions(-) rename postfix-category.patch => cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch (100%) diff --git a/00-default b/00-default index 2f83c3b..9a35a05 100644 --- a/00-default +++ b/00-default @@ -49,6 +49,9 @@ user root user root timeout 20 +[kea] +user root + [knot] user root diff --git a/postfix-category.patch b/cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch similarity index 100% rename from postfix-category.patch rename to cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch diff --git a/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc index 9d85fc5..b9a7c71 100644 --- a/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc +++ b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc @@ -1,6 +1,9 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: 9108 46AD EE4C 5D67 C19B 3E6F 0A24 C059 98BA 4133 +Comment: Steve Schnepp +Comment: Steve Schnepp -mQINBE9Z0UYBEAChD/KVfJFENj65GLjiVEnrLwPqN6wF2EPsu3hnacKmXBJIUVOh +xsFNBE9Z0UYBEAChD/KVfJFENj65GLjiVEnrLwPqN6wF2EPsu3hnacKmXBJIUVOh ER6XC9hFmR2ZIXd8vkaHIIJ/3QmeUQsJWtd4JjHKV7vpTwStFbxtsexU0HVGpO10 jKJjfrjM9f+xkFW2xOpk/S16nLKq9kFDjVUOswq5qWuksIE22EBjQPyDROo/fhCJ uZbAPJz5RuHuuOrFAzqcDq5pI1WdY6MRDklKr6TZl6tp8d1mO5HBz37uMzTTBoyV @@ -11,67 +14,383 @@ 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 -L7FW3jHudm/cMmq68DXxQA== -=WQyk +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 +n/XLQBZaBHh4qw== +=1xbr -----END PGP PUBLIC KEY BLOCK----- diff --git a/munin.spec b/munin.spec index d3a0ce5..3863b73 100644 --- a/munin.spec +++ b/munin.spec @@ -1,12 +1,12 @@ Name: munin -Version: 2.0.73 -Release: 2%{?dist} +Version: 2.0.74 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPLv2 URL: http://munin-monitoring.org/ -Source0: https://sourceforge.net/projects/munin/files/stable/%{version}/%{name}-%{version}.tar.gz -Source1: https://sourceforge.net/projects/munin/files/stable/%{version}/%{name}-%{version}.tar.gz.asc +Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz +Source1: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.asc # fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133 # gpg --recv-keys $fpr # gpg -a --export-options export-minimal --export $fpr > gpgkey-$fpr.asc @@ -38,7 +38,7 @@ Source35: munin-cgi-html.socket # Patches Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch -Patch102: postfix-category.patch +Patch102: cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch Patch103: munin-run_no_systemd.patch # Use some plugins from Munin 3.0 branch / Munin contrib @@ -663,6 +663,9 @@ exit 0 %changelog +* Wed Oct 4 2023 Kim B. Heino - 2.0.74-1 +- Upgrade to 2.0.74 + * Thu Jul 20 2023 Fedora Release Engineering - 2.0.73-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/mysql_ b/mysql_ index 3458832..9de8628 100755 --- a/mysql_ +++ b/mysql_ @@ -983,6 +983,9 @@ $graphs{innodb_semaphores} = { }, }, data_sources => [ + {name => 'ib_spin_rounds', label => 'Spin Rounds'}, + {name => 'ib_spin_waits', label => 'Spin Waits'}, + {name => 'ib_os_waits', label => 'OS Waits'}, {name => 'ib_rw_shared_rounds', label => 'RW/S Rounds'}, {name => 'ib_rw_shared_waits', label => 'RW/S Waits'}, {name => 'ib_rw_shared_os_waits', label => 'RW/S OS Waits'}, @@ -1962,7 +1965,7 @@ sub update_variables { } $data->{'mysql_base_memory'} = $data->{'key_buffer_size'} - + $data->{'query_cache_size'} + + ( $data->{'query_cache_size'} || 0 ) + $data->{'innodb_buffer_pool_size'} + ( $data->{'innodb_additional_mem_pool_size'} || 0 ) + $data->{'innodb_log_buffer_size'} @@ -2130,7 +2133,7 @@ sub innodb_bigint { return defined $y ? Math::BigInt->new($x)->blsft(32) + $y - : Math::BigInt->new("0x$x"); + : Math::BigInt->new($x); } #--------------------------------------------------------------------- @@ -2298,6 +2301,12 @@ sub parse_row_operations { sub parse_semaphores { parse_section( sub { + m/\GMutex spin waits (\d+), rounds (\d+), OS waits (\d+)\n/gc && do { + $data->{ib_spin_waits} = $1; + $data->{ib_spin_rounds} = $2; + $data->{ib_os_waits} = $3; + return 1; + }; m/\GRW-shared spins (\d+), rounds (\d+), OS waits (\d+)\n/gc && do { $data->{ib_rw_shared_waits} = $1; $data->{ib_rw_shared_rounds} = $2; diff --git a/sources b/sources index eeb6c39..56c627e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (munin-2.0.73.tar.gz) = 2097e35dc83c9f90ee3832de5856f5c7582c4f66c80e365aeb5426cc9bbcac24f5c75c006c523317b0533ce5fcb48abc004f0c7aa65b3bebd94fa0d7f1b03402 -SHA512 (munin-2.0.73.tar.gz.asc) = 1d94b3094c8fe8e30148f1e16bef137b248385d8e20f9fadeb8ca8f0bfd5c97551dc878c197d3a8327cf93d2033c521f2775837b50331749e25e6ebd8baa9ba9 +SHA512 (munin-2.0.74.tar.gz) = 4526a5f414118001a9f97d2dff46cb7bb6ce54175279d42a268d013793aa0a171afd736c15def3a7236f818c6b9a49f5eed6dcfc76985ec05bda147e4ad326f4 +SHA512 (munin-2.0.74.tar.gz.asc) = baaeaed64e62addbd7b58a073f82faa5df5de1a0a8a196df9778f59b0adb4c2103bf74aeef0712dd958b24c44039d07421c8f9a0384ddd8cbda19d43c5ccb89c From c560021120cf1af88adc5bc6bf6bc90adef67c5b Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 6 Nov 2023 11:32:09 +0200 Subject: [PATCH 095/108] 2.0.75 --- munin.spec | 7 +++++-- sources | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/munin.spec b/munin.spec index 3863b73..c876031 100644 --- a/munin.spec +++ b/munin.spec @@ -1,8 +1,8 @@ Name: munin -Version: 2.0.74 +Version: 2.0.75 Release: 1%{?dist} Summary: Network-wide resource monitoring tool -License: GPLv2 +License: GPL-2.0-only URL: http://munin-monitoring.org/ Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz @@ -663,6 +663,9 @@ exit 0 %changelog +* Mon Nov 6 2023 Kim B. Heino - 2.0.75-1 +- Upgrade to 2.0.75 + * Wed Oct 4 2023 Kim B. Heino - 2.0.74-1 - Upgrade to 2.0.74 diff --git a/sources b/sources index 56c627e..700f698 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (munin-2.0.74.tar.gz) = 4526a5f414118001a9f97d2dff46cb7bb6ce54175279d42a268d013793aa0a171afd736c15def3a7236f818c6b9a49f5eed6dcfc76985ec05bda147e4ad326f4 -SHA512 (munin-2.0.74.tar.gz.asc) = baaeaed64e62addbd7b58a073f82faa5df5de1a0a8a196df9778f59b0adb4c2103bf74aeef0712dd958b24c44039d07421c8f9a0384ddd8cbda19d43c5ccb89c +SHA512 (munin-2.0.75.tar.gz) = 5322a427c611ce13a1a72b2dae8555e8fef225d431112474dafcfa9bb219339a70e4cb9e38cd11f18230e71757acf67dabe4d993a94e6bede905e3da01c37e7b +SHA512 (munin-2.0.75.tar.gz.asc) = be5ff2cf7ba8492784fc8847e2079c2b05de828f903d999542511fb66d8c7502955c5adfc82bbc4a3622a8f5a4390e0a5958a602c4be8b6a10452bfe92e91348 From b73a0daa50590c4c75b186ce1d14f2921b2cb329 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 21 Jan 2024 08:55:08 +0000 Subject: [PATCH 096/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index c876031..189413a 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.75 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -663,6 +663,9 @@ exit 0 %changelog +* Sun Jan 21 2024 Fedora Release Engineering - 2.0.75-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Mon Nov 6 2023 Kim B. Heino - 2.0.75-1 - Upgrade to 2.0.75 From 89bd7b20eccef1c7b0d8d6eb0f50bfde827be820 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 25 Jan 2024 08:23:26 +0000 Subject: [PATCH 097/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 189413a..0eea722 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.75 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -663,6 +663,9 @@ exit 0 %changelog +* Thu Jan 25 2024 Fedora Release Engineering - 2.0.75-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Sun Jan 21 2024 Fedora Release Engineering - 2.0.75-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From c9c48a14ad033de730beb53920c44e0175b69703 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Wed, 19 Jun 2024 14:27:45 +0300 Subject: [PATCH 098/108] 2.0.76 --- 00-default | 20 - ...0846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc | 862 ++++++++++-------- munin.spec | 20 +- sources | 3 +- 4 files changed, 496 insertions(+), 409 deletions(-) diff --git a/00-default b/00-default index 9a35a05..ccc9d52 100644 --- a/00-default +++ b/00-default @@ -12,9 +12,6 @@ # individual plugins to find out which variables they # care about. -[amavis_multi] -user amavis - [bind9_rndc] user root env.rndc /usr/sbin/rndc @@ -28,11 +25,6 @@ user root env.exclude none unknown binfmt_misc cgroup_root debugfs devpts devtmpfs fuse.gvfs-fuse-daemon iso9660 ramfs romfs rootfs rpc_pipefs squashfs udf env.exclude_re ^/run/user/ ^/sys/ ^/var/lib/docker ^/var/lib/containers/storage/overlay ^/var/lib/mock/ ^/media/ ^/mnt$ -[dhcp-pool] -user root -env.conffile /etc/dhcp/dhcpd.conf -env.leasefile /var/lib/dhcpd/dhcpd.leases - [exim*] group mail @@ -49,12 +41,6 @@ user root user root timeout 20 -[kea] -user root - -[knot] -user root - [load] env.load_warning 100 @@ -77,9 +63,6 @@ env.seconds_behind_master_critical 86400 env.wsrep_flow_control_paused_ns_warning 200000000 env.wsrep_flow_control_paused_ns_critical 10000000000 -[nsd_requests] -user root - [postfix*] user root env.logfile maillog @@ -90,9 +73,6 @@ user postgres env.PGUSER postgres env.PGPORT 5432 -[raid2] -user root - [sendmail*] user root env.mspqueue /var/spool/clientmqueue diff --git a/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc index b9a7c71..8bb70ec 100644 --- a/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc +++ b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc @@ -16,381 +16,489 @@ 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 -n/XLQBZaBHh4qw== -=1xbr +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 +=bOn3 -----END PGP PUBLIC KEY BLOCK----- diff --git a/munin.spec b/munin.spec index 0eea722..24eb5db 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin -Version: 2.0.75 -Release: 3%{?dist} +Version: 2.0.76 +Release: 1%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -41,7 +41,7 @@ Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch Patch102: cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch Patch103: munin-run_no_systemd.patch -# Use some plugins from Munin 3.0 branch / Munin contrib +# Use mysql plugin from Munin 3.0 branch for Galera support Source200: mysql_ # Plugin config @@ -156,8 +156,6 @@ relay information from other devices in your network that can't run Munin, such as a switch or a server running another operating system, by using SNMP or similar technology. -This package includes some extra plugins from Munin contrib plugins. - %package common Summary: Network-wide resource monitoring tool (common files) @@ -243,11 +241,7 @@ sed -i -e ' s,^DBDIR = \(.*\),DBDIR = $(DESTDIR)%{_sharedstatedir}/munin,; s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin-node,; s,^LOGDIR = \(.*\),LOGDIR = $(DESTDIR)%{_localstatedir}/log/munin,; -%if 0%{?rhel} >= 8 || 0%{?fedora} s,^PYTHON := \(.*\),PYTHON := /usr/bin/python3,; -%else - s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; -%endif s,^RUBY := \(.*\),RUBY := /usr/bin/ruby,; s,^PERLLIB = \(.*\),PERLLIB = $(DESTDIR)%{perl_vendorlib},; s,^HOSTNAME := \(.*\),HOSTNAME := localhost.localdomain,; @@ -303,7 +297,7 @@ mv %{buildroot}%{_datadir}/munin/munin-asyncd %{buildroot}%{_sbindir}/munin-asyn # Remove the Sybase plugin for now, as they need perl modules that are not available rm -f %{buildroot}%{_datadir}/munin/plugins/sybase_space -# Update some plugins from 3.0 branch / contrib +# Update plugins from 3.0 branch cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ # Install plugin config @@ -346,6 +340,9 @@ ln -s munin-conf.d %{buildroot}%{_sysconfdir}/munin/conf.d # Overwrite default config file cp %{SOURCE10} %{buildroot}%{_sysconfdir}/munin/ +# Add missing custom.css +touch %{buildroot}%{_sysconfdir}/munin/static/custom.css + # Install logrotate script cp %{SOURCE11} %{buildroot}%{_sysconfdir}/logrotate.d/munin @@ -663,6 +660,9 @@ exit 0 %changelog +* Wed Jun 19 2024 Kim B. Heino - 2.0.76-1 +- Upgrade to 2.0.76 + * Thu Jan 25 2024 Fedora Release Engineering - 2.0.75-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/sources b/sources index 700f698..2a678e7 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (munin-2.0.75.tar.gz) = 5322a427c611ce13a1a72b2dae8555e8fef225d431112474dafcfa9bb219339a70e4cb9e38cd11f18230e71757acf67dabe4d993a94e6bede905e3da01c37e7b -SHA512 (munin-2.0.75.tar.gz.asc) = be5ff2cf7ba8492784fc8847e2079c2b05de828f903d999542511fb66d8c7502955c5adfc82bbc4a3622a8f5a4390e0a5958a602c4be8b6a10452bfe92e91348 +SHA512 (munin-2.0.76.tar.gz) = 37ad31fa8c7585e4a79ce5b62e6ac83c6f12fe0cbb1c28a257f7c71f99c6b05cc837c7557870a28211c253eb85d981a4b17aed2f6028881d5bdef27c01e445a2 From 34b47ae6ae3138e2cbdc4af8092c8f67a0fb75b7 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Wed, 19 Jun 2024 14:30:32 +0300 Subject: [PATCH 099/108] sources: add .asc too --- sources | 1 + 1 file changed, 1 insertion(+) diff --git a/sources b/sources index 2a678e7..bc776f3 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (munin-2.0.76.tar.gz) = 37ad31fa8c7585e4a79ce5b62e6ac83c6f12fe0cbb1c28a257f7c71f99c6b05cc837c7557870a28211c253eb85d981a4b17aed2f6028881d5bdef27c01e445a2 +SHA512 (munin-2.0.76.tar.gz.asc) = b34d6c62f73a1bc381e21e95c03e386fe26e1d32eebc396b82fea69326694db3370bdfc8f2cfcaf37d7c9d4bed27f68e17bebd729a5eac8505ddd97bf677241b From def83f20172c7af663b0f084025c0eececfb2dde Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 18 Jul 2024 18:56:25 +0000 Subject: [PATCH 100/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 24eb5db..f4f88b2 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -660,6 +660,9 @@ exit 0 %changelog +* Thu Jul 18 2024 Fedora Release Engineering - 2.0.76-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Wed Jun 19 2024 Kim B. Heino - 2.0.76-1 - Upgrade to 2.0.76 From 244836eb03684fd9bef2870b3e7d6baf2ac03107 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 21 Oct 2024 10:22:31 +0300 Subject: [PATCH 101/108] Don't restart firewalld on package update, rhbz #2295597 --- munin.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/munin.spec b/munin.spec index f4f88b2..d9a1781 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -485,7 +485,6 @@ if [ "$1" = "1" ]; then done fi fi -%firewalld_reload %systemd_post munin-node.service munin-asyncd.service @@ -660,6 +659,9 @@ exit 0 %changelog +* Mon Oct 21 2024 Kim B. Heino - 2.0.76-3 +- Don't restart firewalld on package update, rhbz #2295597 + * Thu Jul 18 2024 Fedora Release Engineering - 2.0.76-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From a881836b8d80e48405bcfe6de3c47b9da501bf07 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 17 Jan 2025 19:26:34 +0000 Subject: [PATCH 102/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index d9a1781..eab9b4a 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -659,6 +659,9 @@ exit 0 %changelog +* Fri Jan 17 2025 Fedora Release Engineering - 2.0.76-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Mon Oct 21 2024 Kim B. Heino - 2.0.76-3 - Don't restart firewalld on package update, rhbz #2295597 From 5335015f6bed36694c479ef9fbb01ede49608557 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Mon, 27 Jan 2025 15:34:48 +0200 Subject: [PATCH 103/108] rhbz 2340895: Fix build on Fedora 42 --- munin.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index eab9b4a..cab509d 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -232,6 +232,7 @@ FastCGI so you don't need this package. sed -i -e ' s,^PREFIX = \(.*\),PREFIX = $(DESTDIR)%{_prefix},; + s,^SBINDIR = \(.*\),SBINDIR = $(DESTDIR)%{_sbindir},; s,^CONFDIR = \(.*\),CONFDIR = $(DESTDIR)%{_sysconfdir}/munin,; s,^DOCDIR = \(.*\),DOCDIR = $(DESTDIR)%{_docdir}/%{name}-%{version},; s,^MANDIR = \(.*\),MANDIR = $(DESTDIR)%{_mandir},; @@ -659,6 +660,9 @@ exit 0 %changelog +* Mon Jan 27 2025 Kim B. Heino - 2.0.76-5 +- rhbz 2340895: Fix build on Fedora 42 + * Fri Jan 17 2025 Fedora Release Engineering - 2.0.76-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 14d481ff843d2d2aaa8978f1542ad88afbbcc67d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 11 Feb 2025 15:53:23 +0100 Subject: [PATCH 104/108] Add sysusers.d config file to allow rpm to create users/groups automatically See https://fedoraproject.org/wiki/Changes/RPMSuportForSystemdSysusers. --- munin.spec | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/munin.spec b/munin.spec index cab509d..781090b 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -92,7 +92,6 @@ Requires: perl(Taint::Runtime) Requires: perl(Text::Balanced) Requires: perl(Time::HiRes) Requires: rrdtool -Requires(pre): shadow-utils %{?systemd_requires} BuildArch: noarch @@ -131,7 +130,6 @@ Requires: perl(Net::CIDR) Requires: perl(Net::SSLeay) Requires: perl(Net::Server) Requires: procps-ng -Requires(pre): shadow-utils Requires(pre): %{_sbindir}/semanage Requires(pre): %{_sbindir}/restorecon %{?systemd_requires} @@ -160,7 +158,6 @@ SNMP or similar technology. %package common Summary: Network-wide resource monitoring tool (common files) Requires: acl -Requires(pre): shadow-utils %{?systemd_requires} BuildArch: noarch @@ -266,6 +263,11 @@ cp %SOURCE16 . cp %SOURCE17 . cp %SOURCE18 . +# Create a sysusers.d config file +cat >munin.sysusers.conf </dev/null || groupadd -r munin -getent passwd munin >/dev/null || useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin -exit 0 %post @@ -582,6 +582,7 @@ exit 0 %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %config(noreplace) %ghost %{_localstatedir}/www/html/munin/.htaccess +%{_sysusersdir}/munin.conf %files node @@ -660,6 +661,9 @@ exit 0 %changelog +* Tue Feb 11 2025 Zbigniew JÄ™drzejewski-Szmek - 2.0.76-6 +- Add sysusers.d config file to allow rpm to create users/groups automatically + * Mon Jan 27 2025 Kim B. Heino - 2.0.76-5 - rhbz 2340895: Fix build on Fedora 42 From b9d3bae50ab2e9b5137bc7d9245fd7f2bc73c190 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 24 Jul 2025 22:30:37 +0000 Subject: [PATCH 105/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 781090b..01e9565 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -661,6 +661,9 @@ exit 0 %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 2.0.76-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Tue Feb 11 2025 Zbigniew JÄ™drzejewski-Szmek - 2.0.76-6 - Add sysusers.d config file to allow rpm to create users/groups automatically From 11f3c22afc88319d4755d15abfc9685f8ce62dd6 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sun, 28 Dec 2025 20:09:31 +0200 Subject: [PATCH 106/108] rhbz 2406177: Move sysusers.d config to munin-common --- munin.spec | 50 ++++++++++++-------------------------------------- munin.sysusers | 1 + 2 files changed, 13 insertions(+), 38 deletions(-) create mode 100644 munin.sysusers diff --git a/munin.spec b/munin.spec index 01e9565..41d1715 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -36,6 +36,9 @@ Source33: munin-cgi-graph.socket Source34: munin-cgi-html.service Source35: munin-cgi-html.socket +# Common sources +Source40: munin.sysusers + # Patches Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch Patch102: cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch @@ -159,6 +162,7 @@ SNMP or similar technology. Summary: Network-wide resource monitoring tool (common files) Requires: acl %{?systemd_requires} +%{?sysusers_requires_compat} BuildArch: noarch @@ -263,11 +267,6 @@ cp %SOURCE16 . cp %SOURCE17 . cp %SOURCE18 . -# Create a sysusers.d config file -cat >munin.sysusers.conf </dev/null)" ]; then - mv -f %{_sysconfdir}/munin/conf.d/* %{_sysconfdir}/munin/munin-conf.d/ -fi -exit 0 - - -%triggerpostun -- munin < 2.0.69-2 -if [ -d %{_sysconfdir}/munin/conf.d ]; then - if ! rmdir %{_sysconfdir}/munin/conf.d 2>/dev/null; then - mv -f %{_sysconfdir}/munin/conf.d %{_sysconfdir}/munin/conf.d.rpmold - fi -fi -if [ -f %{_sysconfdir}/munin/munin.conf.rpmnew ]; then - if [ -n "$(ls %{_sysconfdir}/munin/munin-conf.d/* 2>/dev/null)" ]; then - ln -sf munin-conf.d %{_sysconfdir}/munin/conf.d - fi -fi -exit 0 - - -%pre node -getent group munin >/dev/null || groupadd -r munin -getent passwd munin >/dev/null || useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin -exit 0 - - %post node # Create log file [ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ @@ -503,9 +476,7 @@ fi %pre common -getent group munin >/dev/null || groupadd -r munin -getent passwd munin >/dev/null || useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin -exit 0 +%sysusers_create_compat %{SOURCE40} %post nginx @@ -582,7 +553,6 @@ exit 0 %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf %config(noreplace) %ghost %{_localstatedir}/www/html/munin/.htaccess -%{_sysusersdir}/munin.conf %files node @@ -630,6 +600,7 @@ exit 0 %dir %{perl_vendorlib}/Munin %{perl_vendorlib}/Munin/Common %{_tmpfilesdir}/%{name}.conf +%{_sysusersdir}/munin.conf %attr(0775, root, munin) %dir %{_rundir}/munin @@ -661,6 +632,9 @@ exit 0 %changelog +* Sun Dec 28 2025 Kim B. Heino - 2.0.76-8 +- rhbz 2406177: Move sysusers.d config to munin-common + * Thu Jul 24 2025 Fedora Release Engineering - 2.0.76-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/munin.sysusers b/munin.sysusers new file mode 100644 index 0000000..50515ab --- /dev/null +++ b/munin.sysusers @@ -0,0 +1 @@ +u munin - "Munin user" /var/lib/munin /bin/sh From eaf3b3bfab0799ae5b6fb3e46b283bb8b1d04059 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 16 Jan 2026 21:47:02 +0000 Subject: [PATCH 107/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 41d1715..883440f 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -632,6 +632,9 @@ fi %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 2.0.76-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Sun Dec 28 2025 Kim B. Heino - 2.0.76-8 - rhbz 2406177: Move sysusers.d config to munin-common From adb3603dc922c36b2fd3f41eb0d9eebd255e0e2e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jul 2026 09:09:21 +0000 Subject: [PATCH 108/108] Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild --- munin.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/munin.spec b/munin.spec index 883440f..85e913d 100644 --- a/munin.spec +++ b/munin.spec @@ -1,6 +1,6 @@ Name: munin Version: 2.0.76 -Release: 9%{?dist} +Release: 10%{?dist} Summary: Network-wide resource monitoring tool License: GPL-2.0-only URL: http://munin-monitoring.org/ @@ -632,6 +632,9 @@ fi %changelog +* Thu Jul 16 2026 Fedora Release Engineering - 2.0.76-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + * Fri Jan 16 2026 Fedora Release Engineering - 2.0.76-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild