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/00-default b/00-default index 1811689..ccc9d52 100644 --- a/00-default +++ b/00-default @@ -37,6 +37,10 @@ user root [if_*] user root +[ipmi_*] +user root +timeout 20 + [load] env.load_warning 100 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 new file mode 100644 index 0000000..8bb70ec --- /dev/null +++ b/gpgkey-910846ADEE4C5D67C19B3E6F0A24C05998BA4133.asc @@ -0,0 +1,504 @@ +-----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 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-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.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-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.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-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.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-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.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.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.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 diff --git a/munin.spec b/munin.spec index 3f4f1a4..85e913d 100644 --- a/munin.spec +++ b/munin.spec @@ -1,104 +1,106 @@ -Name: munin -Version: 2.0.65 -Release: 1%{?dist} -Summary: Network-wide resource monitoring tool -License: GPLv2 -URL: http://munin-monitoring.org/ +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/ -Source0: http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz +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 -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 +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 -Source22: munin-node.rc -Source23: munin-node.service -Source24: munin-asyncd.rc -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 -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 +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 # Patches -Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch -Patch102: postfix-category.patch -Patch103: munin-run_no_systemd.patch +Patch101: 21b3d860c17d7997d64267963f91ed75ca8a3e03.patch +Patch102: cd842e36f3ab1a55c05304d6b78dc07048bd8f84.patch +Patch103: munin-run_no_systemd.patch -# Use some plugins from munin 3.0 branch -Source200: mysql_ +# Use mysql plugin from Munin 3.0 branch for Galera support +Source200: mysql_ # Plugin config -Source300: 00-default -Source301: munin-node +Source300: 00-default +Source301: munin-node -BuildArch: noarch - -BuildRequires: perl-interpreter >= 5.8 -BuildRequires: perl-generators -BuildRequires: perl(base) +BuildRequires: firewalld-filesystem +BuildRequires: gnupg2 +BuildRequires: make +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) -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -BuildRequires: perl(Carp) +BuildRequires: perl-generators +BuildRequires: perl-interpreter >= 5.8 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) +Requires: dejavu-sans-mono-fonts +Requires: logrotate +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(pre): shadow-utils -Requires: dejavu-sans-mono-fonts +Requires: perl(Text::Balanced) +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)$ %description @@ -117,38 +119,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 -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -Requires: firewalld-filesystem +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 %{?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 +BuildArch: noarch %description node @@ -171,11 +159,11 @@ 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 +%{?systemd_requires} +%{?sysusers_requires_compat} +BuildArch: noarch %description common @@ -188,11 +176,9 @@ and node (munin-node) packages. %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 +Summary: Ruby plugins for Munin resource monitoring +Requires: %{name}-node = %{version} +BuildArch: noarch %description plugins-ruby @@ -200,12 +186,13 @@ 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} +Conflicts: munin-apache +BuildArch: noarch %description nginx @@ -213,12 +200,13 @@ 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} +Conflicts: munin-nginx +BuildArch: noarch %description apache @@ -226,22 +214,11 @@ 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 +Summary: FastCGI startup scripts for Munin resource monitoring +Requires: %{name} = %{version} +Requires: nginx-filesystem %{?systemd_requires} -%else -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/chkconfig -Requires(preun): /sbin/service -%endif +BuildArch: noarch %description cgi @@ -251,10 +228,12 @@ 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},; @@ -262,13 +241,9 @@ 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} >= 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,; @@ -282,9 +257,11 @@ sed -i -e ' s,^JC := \(.*\),JC := /bin/false,; ' Makefile.config -%patch101 -p1 -%patch102 -p1 -%patch103 -p1 +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 cp %SOURCE16 . cp %SOURCE17 . @@ -292,13 +269,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 +288,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 @@ -330,20 +299,23 @@ 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 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 dir -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state +# Create plugin state dirs +mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/plugin-state/munin +mkdir -p %{buildroot}%{_sharedstatedir}/munin-node/plugin-state/root -%if 0%{?rhel} >= 7 || 0%{?fedora} > 19 +# 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/ -%endif # Disable some plugins from autoconfig @@ -364,38 +336,33 @@ done ### Server ### -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/ +# 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 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 +# Add timer and service +cp %{SOURCE13} %{buildroot}%{_unitdir} +cp %{SOURCE14} %{buildroot}%{_unitdir} # 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 +372,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) ### @@ -437,15 +398,14 @@ touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin-cgi.conf 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 -exit 0 +### Common ### + +install -m0644 -D %{SOURCE40} %{buildroot}%{_sysusersdir}/munin.conf %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 ] || \ @@ -454,8 +414,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 <= 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 +%systemd_post munin-rrdcached.service munin.timer munin.service %preun -%systemd_preun munin-rrdcached.service munin.timer +%systemd_preun munin-rrdcached.service munin.timer munin.service %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 -exit 0 +%systemd_postun munin.service %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. +# 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 + # 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 -%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 +# 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 -%endif +%systemd_postun_with_restart munin-node.service munin-asyncd.service %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 @@ -567,60 +500,34 @@ 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/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 +%ghost %{_sysconfdir}/munin/conf.d %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 @@ -633,16 +540,13 @@ 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 @@ -655,21 +559,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 +580,13 @@ 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(-, 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(-, 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 +597,11 @@ 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 @@ -715,6 +610,7 @@ 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 @@ -722,24 +618,123 @@ 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 new file mode 100644 index 0000000..50515ab --- /dev/null +++ b/munin.sysusers @@ -0,0 +1 @@ +u munin - "Munin user" /var/lib/munin /bin/sh 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 diff --git a/mysql_ b/mysql_ index b22cf47..9de8628 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,8 +1964,8 @@ sub update_variables { $sth->finish(); } - $data->{'mysql_base_memory'} = $data->{'key_buffer_size'} - + $data->{'query_cache_size'} + $data->{'mysql_base_memory'} = $data->{'key_buffer_size'} + + ( $data->{'query_cache_size'} || 0 ) + $data->{'innodb_buffer_pool_size'} + ( $data->{'innodb_additional_mem_pool_size'} || 0 ) + $data->{'innodb_log_buffer_size'} @@ -2124,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); } #--------------------------------------------------------------------- @@ -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; diff --git a/sources b/sources index 481423e..bc776f3 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (munin-2.0.65.tar.gz) = 8a0dc93de878e1d502467f4e8589a0af2b809ec7282033534de2fd17b842bbf864d900136516a668a8e3f80e99215062620a503c5f664c799892f77950b4859a +SHA512 (munin-2.0.76.tar.gz) = 37ad31fa8c7585e4a79ce5b62e6ac83c6f12fe0cbb1c28a257f7c71f99c6b05cc837c7557870a28211c253eb85d981a4b17aed2f6028881d5bdef27c01e445a2 +SHA512 (munin-2.0.76.tar.gz.asc) = b34d6c62f73a1bc381e21e95c03e386fe26e1d32eebc396b82fea69326694db3370bdfc8f2cfcaf37d7c9d4bed27f68e17bebd729a5eac8505ddd97bf677241b