diff --git a/.gitignore b/.gitignore index 50d8957..27c70c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -munin-*.tar.gz* +munin-*.tar.gz *.src.rpm .build-*.log munin-2*/ diff --git a/00-default b/00-default index ccc9d52..1811689 100644 --- a/00-default +++ b/00-default @@ -37,10 +37,6 @@ user root [if_*] user root -[ipmi_*] -user root -timeout 20 - [load] env.load_warning 100 diff --git a/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc deleted file mode 100644 index 8bb70ec..0000000 --- a/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc +++ /dev/null @@ -1,504 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Comment: 9108 46AD EE4C 5D67 C19B 3E6F 0A24 C059 98BA 4133 -Comment: Steve Schnepp -Comment: Steve Schnepp - -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 -=bOn3 ------END PGP PUBLIC KEY BLOCK----- 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 00ced51..c730e8b 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -2,9 +2,7 @@ Description=Munin Node - Asynchronous Proxy Documentation=http://guide.munin-monitoring.org/en/latest/node/async.html Requires=munin-node.service -After=network.target -After=network-online.target -After=munin-node.service +After=network.target network-online.target munin-node.service [Service] Type=notify 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 index 36ab23f..b089451 100644 --- a/munin-cgi-graph.service +++ b/munin-cgi-graph.service @@ -1,5 +1,6 @@ [Unit] Description=Munin FastCGI Graphs Service +After=network.target Requires=munin-cgi-graph.socket [Service] 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 index 9859960..95be1d8 100644 --- a/munin-cgi-html.service +++ b/munin-cgi-html.service @@ -1,5 +1,6 @@ [Unit] Description=Munin FastCGI HTML Pages Service +After=network.target Requires=munin-cgi-html.socket [Service] diff --git a/munin-node.rc b/munin-node.rc new file mode 100755 index 0000000..8bd7257 --- /dev/null +++ b/munin-node.rc @@ -0,0 +1,120 @@ +#!/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-node.service b/munin-node.service index 115856a..e84725e 100644 --- a/munin-node.service +++ b/munin-node.service @@ -1,8 +1,7 @@ [Unit] Description=Munin Node Documentation=man:munin-node(1) http://guide.munin-monitoring.org/en/latest/node/index.html -After=network.target -After=network-online.target +After=network.target network-online.target PartOf=munin-asyncd.service [Service] diff --git a/munin.conf b/munin.conf index ee4aa79..5d70186 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/munin-conf.d/local.conf instead. # +# 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 # @@ -17,7 +17,7 @@ #dbdir /var/lib/munin #htmldir /var/www/html/munin #logdir /var/log/munin -#rundir /run/munin +#rundir /var/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/munin-conf.d +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" diff --git a/munin.cron.d b/munin.cron.d new file mode 100644 index 0000000..bcc7834 --- /dev/null +++ b/munin.cron.d @@ -0,0 +1,7 @@ +# 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.service b/munin.service index 75be8bb..b9586f6 100644 --- a/munin.service +++ b/munin.service @@ -1,10 +1,7 @@ [Unit] Description=Munin server to collect data from nodes Documentation=man:munin-cron(8) -After=network.target -After=network-online.target -After=munin-node.service -After=munin-rrdcached.service +After=network.target network-online.target munin-node.service [Service] User=munin diff --git a/munin.spec b/munin.spec index 85e913d..3f4f1a4 100644 --- a/munin.spec +++ b/munin.spec @@ -1,106 +1,104 @@ -Name: munin -Version: 2.0.76 -Release: 10%{?dist} -Summary: Network-wide resource monitoring tool -License: GPL-2.0-only -URL: http://munin-monitoring.org/ +Name: munin +Version: 2.0.65 +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 -# fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133 -# gpg --recv-keys $fpr -# gpg -a --export-options export-minimal --export $fpr > gpgkey-$fpr.asc -Source2: gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc +Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz # Master sources -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 +Source10: munin.conf +Source11: munin.logrotate +Source12: munin.tmpfilesd +Source13: munin.cron.d +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 # 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 +Source22: munin-node.rc +Source23: munin-node.service +Source24: munin-asyncd.rc +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 - -# Common sources -Source40: munin.sysusers +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 -Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch -Patch102: cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch -Patch103: munin-run_no_systemd.patch +Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch +Patch102: postfix-category.patch +Patch103: munin-run_no_systemd.patch -# Use mysql plugin from Munin 3.0 branch for Galera support -Source200: mysql_ +# Use some plugins from munin 3.0 branch +Source200: mysql_ # Plugin config -Source300: 00-default -Source301: munin-node +Source300: 00-default +Source301: munin-node -BuildRequires: firewalld-filesystem -BuildRequires: gnupg2 -BuildRequires: make -BuildRequires: perl(Carp) +BuildArch: noarch + +BuildRequires: perl-interpreter >= 5.8 +BuildRequires: perl-generators +BuildRequires: perl(base) BuildRequires: perl(English) BuildRequires: perl(File::Spec) BuildRequires: perl(HTML::Template) -BuildRequires: perl(Log::Log4perl) -BuildRequires: perl(Module::Build) -BuildRequires: perl(Net::SNMP) -BuildRequires: perl(Net::SSLeay) -BuildRequires: perl(Net::Server) -BuildRequires: perl(Text::Balanced) -BuildRequires: perl(base) 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) -BuildRequires: perl-generators -BuildRequires: perl-interpreter >= 5.8 +%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: /bin/mail -Requires: dejavu-sans-mono-fonts Requires: logrotate -Requires: perl(DateTime) -Requires: perl(Digest::MD5) +%if 0%{?rhel} == 6 +Requires: tmpwatch +%endif +Requires: rrdtool +Requires: /bin/mail Requires: perl(FCGI) +Requires: perl(Digest::MD5) 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(Taint::Runtime) Requires: perl(Text::Balanced) +Requires: perl(DateTime) Requires: perl(Time::HiRes) -Requires: rrdtool -%{?systemd_requires} - -BuildArch: noarch - -# Some plugins are php or python3, remove them from autogenerated requires -%global __requires_exclude ^/usr/bin/(php|python3)$ +Requires: perl(Taint::Runtime) +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires(pre): shadow-utils +Requires: dejavu-sans-mono-fonts %description @@ -119,24 +117,38 @@ files and installation instructions. %package node -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: jo -Requires: perl(Cache::Cache) -Requires: perl(IO::Socket::INET6) -Requires: perl(Net::CIDR) -Requires: perl(Net::SSLeay) -Requires: perl(Net::Server) -Requires: procps-ng -Requires(pre): %{_sbindir}/semanage -Requires(pre): %{_sbindir}/restorecon +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 +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 +Requires: firewalld-filesystem %{?systemd_requires} -BuildArch: noarch +%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 @@ -159,11 +171,11 @@ SNMP or similar technology. %package common -Summary: Network-wide resource monitoring tool (common files) -Requires: acl -%{?systemd_requires} -%{?sysusers_requires_compat} -BuildArch: noarch +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 %description common @@ -176,9 +188,11 @@ 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 +Provides: munin-ruby-plugins = %{version}-%{release} +Obsoletes: munin-ruby-plugins < 2.0.39-2 %description plugins-ruby @@ -186,13 +200,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} -Conflicts: munin-apache -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 @@ -200,13 +213,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} -Conflicts: munin-nginx -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 @@ -214,11 +226,22 @@ Apache support for Munin resource monitoring. %package cgi -Summary: FastCGI startup scripts for Munin resource monitoring -Requires: %{name} = %{version} -Requires: nginx-filesystem +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} -BuildArch: noarch +%else +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +%endif %description cgi @@ -228,12 +251,10 @@ FastCGI so you don't need this package. %prep -%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' %setup -q 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},; @@ -241,9 +262,13 @@ 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-node,; + s,^DBDIRNODE = \(.*\),DBDIRNODE = $(DESTDIR)%{_sharedstatedir}/munin,; s,^LOGDIR = \(.*\),LOGDIR = $(DESTDIR)%{_localstatedir}/log/munin,; +%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,^PERLLIB = \(.*\),PERLLIB = $(DESTDIR)%{perl_vendorlib},; s,^HOSTNAME := \(.*\),HOSTNAME := localhost.localdomain,; @@ -257,11 +282,9 @@ sed -i -e ' s,^JC := \(.*\),JC := /bin/false,; ' Makefile.config -sed -i -e 's,@@DBDIR@@,%{_sharedstatedir}/munin-node,g' node/_bin/munin-get.in - -%patch -P 101 -p1 -%patch -P 102 -p1 -%patch -P 103 -p1 +%patch101 -p1 +%patch102 -p1 +%patch103 -p1 cp %SOURCE16 . cp %SOURCE17 . @@ -269,11 +292,13 @@ 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 @@ -288,10 +313,16 @@ cp %{SOURCE20} %{buildroot}%{_sysconfdir}/munin/ mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d cp %{SOURCE21} %{buildroot}%{_sysconfdir}/logrotate.d/munin-node -# Add services +# Add startup scripts +%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 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 @@ -299,23 +330,20 @@ 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 plugins from 3.0 branch +# Update some plugins from 3.0 branch cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ # Install plugin config 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-node/plugin-state/munin -mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/plugin-state/root +# Create plugin state dir +mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state -# munin-get plugin directory -mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/munin-get-plugins - -# firewalld config +%if 0%{?rhel} >= 7 || 0%{?fedora} > 19 mkdir -p %{buildroot}/%{_prefix}/lib/firewalld/services cp %{SOURCE26} %{buildroot}/%{_prefix}/lib/firewalld/services/ +%endif # Disable some plugins from autoconfig @@ -336,33 +364,38 @@ done ### Server ### -# Create compatibility symlink ghost -ln -s munin-conf.d %{buildroot}%{_sysconfdir}/munin/conf.d +mv %{buildroot}%{_sysconfdir}/munin/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 # 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 timer and service -cp %{SOURCE13} %{buildroot}%{_unitdir} -cp %{SOURCE14} %{buildroot}%{_unitdir} +# 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 # 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 @@ -372,10 +405,16 @@ 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) ### @@ -398,14 +437,15 @@ touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin-cgi.conf touch %{buildroot}%{_sysconfdir}/munin/munin-htpasswd -### Common ### - -install -m0644 -D %{SOURCE40} %{buildroot}%{_sysusersdir}/munin.conf +%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 -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 ] || \ @@ -414,8 +454,8 @@ mkdir -p %{_localstatedir}/log/munin /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/munin-conf.d/local.conf ]; then - cat - >> %{_sysconfdir}/munin/munin-conf.d/local.conf <> %{_sysconfdir}/munin/conf.d/local.conf <= 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 -%systemd_preun munin-rrdcached.service munin.timer munin.service +%systemd_preun munin-rrdcached.service munin.timer %postun %systemd_postun_with_restart munin-rrdcached.service munin.timer -%systemd_postun munin.service +%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 +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 -# 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? +# Only run configure on a new install, not an 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 - 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 -%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 -# Is this uninstall, not upgrade? -if [ "$1" = "0" ]; then - %{_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 +%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 -%sysusers_create_compat %{SOURCE40} +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 @@ -500,34 +567,60 @@ fi %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/munin-conf.d +%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 -%ghost %{_sysconfdir}/munin/conf.d +%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 @@ -540,13 +633,16 @@ fi %{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 %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 @@ -559,14 +655,21 @@ 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 @@ -580,13 +683,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-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 +%attr(-, root, root) %dir %{_sharedstatedir}/munin/plugin-state %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/spool %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh %attr(0750, root, adm) %dir %{_localstatedir}/log/munin-node @@ -597,11 +698,15 @@ 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 -%{_sysusersdir}/munin.conf %attr(0775, root, munin) %dir %{_rundir}/munin +%else +%attr(0775, root, munin) %dir %{_localstatedir}/run/munin +%endif %files plugins-ruby @@ -610,7 +715,6 @@ fi %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 @@ -618,123 +722,24 @@ fi %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 %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 -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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 - -* 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. - -* 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 - -* 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 - * Tue Nov 17 2020 Kim B. Heino - 2.0.65-1 - Upgrade to 2.0.65 - Improve plugin-state directory owners diff --git a/munin.sysusers b/munin.sysusers deleted file mode 100644 index 50515ab..0000000 --- a/munin.sysusers +++ /dev/null @@ -1 +0,0 @@ -u munin - "Munin user" /var/lib/munin /bin/sh diff --git a/munin.tmpfilesd b/munin.tmpfilesd index 7d62768..68ba12f 100644 --- a/munin.tmpfilesd +++ b/munin.tmpfilesd @@ -6,6 +6,7 @@ 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 diff --git a/mysql_ b/mysql_ index 9de8628..b22cf47 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 impact on the MySQL server. +MySQL. This ensures minimal inpact on the MySQL server. =item DBD::mysql @@ -173,26 +173,21 @@ use warnings; use strict; use utf8; -use English qw( -no_match_vars ); +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; -my $has_dbi; -my $has_math_bigint; BEGIN { - 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; + eval 'require Cache::SharedMemoryCache'; + $has_cache = $@ ? 0 : 1; } @@ -1663,12 +1658,6 @@ 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); } @@ -1686,14 +1675,6 @@ 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(); @@ -1735,7 +1716,7 @@ sub suggest { sub config { my $graph_name = shift; - # In MySQL 5.1 (and probably earlier versions as well) status + # 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(*) @@ -1784,6 +1765,7 @@ sub config { } print "graph_category db\n"; + my $i = 0; for my $ds (@{$graph->{data_sources}}) { my %ds_spec = ( %{$defaults{data_source_attrs}}, @@ -1791,14 +1773,23 @@ 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'); - # 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); + # 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})); } @@ -1964,8 +1955,8 @@ sub update_variables { $sth->finish(); } - $data->{'mysql_base_memory'} = $data->{'key_buffer_size'} - + ( $data->{'query_cache_size'} || 0 ) + $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'} @@ -2133,7 +2124,7 @@ sub innodb_bigint { return defined $y ? Math::BigInt->new($x)->blsft(32) + $y - : Math::BigInt->new($x); + : Math::BigInt->new("0x$x"); } #--------------------------------------------------------------------- @@ -2474,7 +2465,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; diff --git a/cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch b/postfix-category.patch similarity index 100% rename from cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch rename to postfix-category.patch diff --git a/sources b/sources index bc776f3..481423e 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (munin-2.0.76.tar.gz) = 37ad31fa8c7585e4a79ce5b62e6ac83c6f12fe0cbb1c28a257f7c71f99c6b05cc837c7557870a28211c253eb85d981a4b17aed2f6028881d5bdef27c01e445a2 -SHA512 (munin-2.0.76.tar.gz.asc) = b34d6c62f73a1bc381e21e95c03e386fe26e1d32eebc396b82fea69326694db3370bdfc8f2cfcaf37d7c9d4bed27f68e17bebd729a5eac8505ddd97bf677241b +SHA512 (munin-2.0.65.tar.gz) = 8a0dc93de878e1d502467f4e8589a0af2b809ec7282033534de2fd17b842bbf864d900136516a668a8e3f80e99215062620a503c5f664c799892f77950b4859a