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 0a21efd..ccc9d52 100644 --- a/00-default +++ b/00-default @@ -23,7 +23,7 @@ user root [df*] user root env.exclude none unknown binfmt_misc cgroup_root debugfs devpts devtmpfs fuse.gvfs-fuse-daemon iso9660 ramfs romfs rootfs rpc_pipefs squashfs udf -env.exclude_re ^/run/user/ ^/sys/ ^/var/lib/docker ^/media/ ^/var/lib/mock/ +env.exclude_re ^/run/user/ ^/sys/ ^/var/lib/docker ^/var/lib/containers/storage/overlay ^/var/lib/mock/ ^/media/ ^/mnt$ [exim*] group mail @@ -37,6 +37,10 @@ user root [if_*] user root +[ipmi_*] +user root +timeout 20 + [load] env.load_warning 100 diff --git a/asyncd-ssh.config b/asyncd-ssh.config deleted file mode 100644 index b710158..0000000 --- a/asyncd-ssh.config +++ /dev/null @@ -1,5 +0,0 @@ -Host * - Compression yes - ConnectTimeout 15 - ServerAliveInterval 15 - ServerAliveCountMax 5 diff --git a/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/httpd_cgi_graphs.conf b/httpd_cgi_graphs.conf index bef5228..7a3787e 100644 --- a/httpd_cgi_graphs.conf +++ b/httpd_cgi_graphs.conf @@ -38,3 +38,24 @@ + + +# Uncomment following lines to require authentication: + +# +# AuthUserFile /etc/munin/munin-htpasswd +# AuthName "Munin" +# AuthType Basic +# Require valid-user +# # This next part requires mod_expires to be enabled. +# # +# # We could use around here, but I want it to be +# # as evident as possible that you either have to load mod_expires _or_ +# # you coment out/remove these lines. +# # +# # Set the default expiery time for files 5 minutes 10 seconds from +# # their creation (modification) time. There are probably new files by +# # that time. +# ExpiresActive On +# ExpiresDefault M310 +# diff --git a/httpd_cron_graphs.conf b/httpd_cron_graphs.conf index 15e1ac2..ed34bf8 100644 --- a/httpd_cron_graphs.conf +++ b/httpd_cron_graphs.conf @@ -26,3 +26,24 @@ + + +# Uncomment following lines to require authentication: + +# +# AuthUserFile /etc/munin/munin-htpasswd +# AuthName "Munin" +# AuthType Basic +# Require valid-user +# # This next part requires mod_expires to be enabled. +# # +# # We could use around here, but I want it to be +# # as evident as possible that you either have to load mod_expires _or_ +# # you coment out/remove these lines. +# # +# # Set the default expiery time for files 5 minutes 10 seconds from +# # their creation (modification) time. There are probably new files by +# # that time. +# ExpiresActive On +# ExpiresDefault M310 +# diff --git a/munin-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 7dc783a..00ced51 100644 --- a/munin-asyncd.service +++ b/munin-asyncd.service @@ -1,14 +1,19 @@ [Unit] Description=Munin Node - Asynchronous Proxy -Documentation=man:munin-async http://munin.readthedocs.org/en/stable-2.0/reference/munin-async.html +Documentation=http://guide.munin-monitoring.org/en/latest/node/async.html Requires=munin-node.service -After=network.target network-online.target munin-node.service +After=network.target +After=network-online.target +After=munin-node.service [Service] -Type=simple +Type=notify User=munin ExecStart=/usr/sbin/munin-asyncd -PrivateTmp=true +PrivateDevices=yes +PrivateTmp=yes +ProtectHome=yes +ProtectSystem=full TimeoutStopSec=20s [Install] 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.logrotate b/munin-node.logrotate index 56a6be8..c674db4 100644 --- a/munin-node.logrotate +++ b/munin-node.logrotate @@ -1,8 +1,5 @@ /var/log/munin-node/munin-node.log { - daily - rotate 7 missingok notifempty - compress copytruncate } 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 a48b60a..115856a 100644 --- a/munin-node.service +++ b/munin-node.service @@ -1,14 +1,17 @@ [Unit] Description=Munin Node -Documentation=man:munin-node(1) http://munin.readthedocs.org/en/stable-2.0/reference/munin-node.html -After=network.target network-online.target +Documentation=man:munin-node(1) http://guide.munin-monitoring.org/en/latest/node/index.html +After=network.target +After=network-online.target PartOf=munin-asyncd.service [Service] -Type=forking -ExecStart=/usr/sbin/munin-node -PIDFile=/run/munin/munin-node.pid -PrivateTmp=true +Type=notify +ExecStart=/usr/sbin/munin-node --foreground +PrivateDevices=no +PrivateTmp=yes +ProtectHome=read-only +ProtectSystem=full TimeoutStopSec=30s [Install] diff --git a/munin-run_no_systemd.patch b/munin-run_no_systemd.patch new file mode 100644 index 0000000..6b7a80e --- /dev/null +++ b/munin-run_no_systemd.patch @@ -0,0 +1,28 @@ +diff -ur munin-2.0.63.orig/node/sbin/munin-run munin-2.0.63/node/sbin/munin-run +--- munin-2.0.63.orig/node/sbin/munin-run 2020-05-27 23:52:55.000000000 +0300 ++++ munin-2.0.63/node/sbin/munin-run 2020-07-04 10:55:27.079868324 +0300 +@@ -31,7 +31,7 @@ + # --pipe: 235 or later + # --collect: 236 or later + +-my $REQUIRED_SYSTEMD_VERSION = 236; ++my $REQUIRED_SYSTEMD_VERSION = 999; + + # See "man systemd.exec" for the list of all systemd properties. + # The following properties belong to the relevant sections "Capabilities", +@@ -50,7 +50,6 @@ + EnvironmentFile + Group + Limit\w+ +- LockPersonality + MemoryDenyWriteExecute + MountFlags + NetworkNamespacePath +@@ -189,6 +188,7 @@ + # "systemd show" does not output the EnvironmentFile property in a readable format. + # See https://github.com/systemd/systemd/issues/14723. + next if ($property_definition =~ /^EnvironmentFiles?=(.*) \(ignore_errors=(yes|no)\)$/); ++ next if ($property_definition =~ /^RestrictSUIDSGID=/); + push @flag_list, $1 if $property_definition =~ /$flag_name_regex/; + } + return @flag_list; diff --git a/munin.conf b/munin.conf index 6818456..ee4aa79 100644 --- a/munin.conf +++ b/munin.conf @@ -1,7 +1,13 @@ -# -# Please don't edit this example config file. Create and edit -# file /etc/munin/conf.d/local.conf instead. -# +########################################################################### +# # +# Please don't edit this example config file. Create and edit # +# file /etc/munin/munin-conf.d/local.conf instead. # +# # +# You must also install munin-nginx or munin-apache sub-package. See # +# /usr/share/doc/munin-*/*.conf for example nginx/apache config files # +# and installation instructions. # +# # +########################################################################### # The next three variables specifies where the location of the RRD # databases, the HTML output, logs and the lock/pid files. They all @@ -11,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 # @@ -27,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" @@ -90,8 +96,8 @@ includedir /etc/munin/conf.d # Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime # something changes (OK -> WARNING, CRITICAL -> OK, etc) -#contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm -#contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm +#contact.someuser.command mail -s "Munin ${var:worst}: ${var:group}::${var:host}::${var:plugin}" somejuser@fnord.comm +#contact.anotheruser.command mail -s "Munin ${var:worst}: ${var:group}::${var:host}::${var:plugin}" anotheruser@blibb.comm # # For those with Nagios, the following might come in handy. In addition, # the services must be defined in the Nagios server as well. diff --git a/munin.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.logrotate b/munin.logrotate index 78ed224..109748b 100644 --- a/munin.logrotate +++ b/munin.logrotate @@ -1,47 +1,9 @@ -/var/log/munin/munin-cgi-graph.log { - daily - rotate 7 - missingok - notifempty - compress -} - -/var/log/munin/munin-cgi-html.log { - daily - rotate 7 - missingok - notifempty - compress -} - -/var/log/munin/munin-graph.log { - daily - rotate 7 - missingok - notifempty - compress -} - -/var/log/munin/munin-html.log { - daily - rotate 7 - missingok - notifempty - compress -} - -/var/log/munin/munin-limits.log { - daily - rotate 7 - missingok - notifempty - compress -} - +/var/log/munin/munin-cgi-graph.log +/var/log/munin/munin-cgi-html.log +/var/log/munin/munin-graph.log +/var/log/munin/munin-html.log +/var/log/munin/munin-limits.log /var/log/munin/munin-update.log { - daily - rotate 7 missingok notifempty - compress } diff --git a/munin.service b/munin.service new file mode 100644 index 0000000..75be8bb --- /dev/null +++ b/munin.service @@ -0,0 +1,15 @@ +[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 + +[Service] +User=munin +ExecStart=/usr/bin/munin-cron +PrivateDevices=no +PrivateTmp=yes +ProtectHome=yes +ProtectSystem=full diff --git a/munin.spec b/munin.spec index a5ab937..85e913d 100644 --- a/munin.spec +++ b/munin.spec @@ -1,97 +1,106 @@ -Name: munin -Version: 2.0.45 -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 -Source14: asyncd-ssh.config -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 +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(Module::Build) +BuildRequires: firewalld-filesystem +BuildRequires: gnupg2 +BuildRequires: make +BuildRequires: perl(Carp) +BuildRequires: perl(English) +BuildRequires: perl(File::Spec) BuildRequires: perl(HTML::Template) BuildRequires: perl(Log::Log4perl) -BuildRequires: perl(Net::Server) -BuildRequires: perl(Net::SSLeay) +BuildRequires: perl(Module::Build) BuildRequires: perl(Net::SNMP) +BuildRequires: perl(Net::SSLeay) +BuildRequires: perl(Net::Server) BuildRequires: perl(Text::Balanced) -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -BuildRequires: perl(Directory::Scratch) -BuildRequires: perl-Carp +BuildRequires: perl(base) +BuildRequires: perl(lib) +BuildRequires: perl(strict) +BuildRequires: perl(warnings) +BuildRequires: perl-generators +BuildRequires: perl-interpreter >= 5.8 BuildRequires: systemd -BuildRequires: firewalld-filesystem -%endif -BuildRequires: java-devel -BuildRequires: jpackage-utils # Munin server requires Requires: %{name}-common = %{version} Requires: %{name}-web-support -Requires: logrotate -Requires: tmpwatch -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 @@ -104,40 +113,30 @@ it in your network. It will periodically poll all the nodes in your network it's aware of for data, which it in turn will use to create graphs and HTML pages, suitable for viewing with your graphical web browser of choice. -You must also install munin-nginx or munin-apache package. - -Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent -RRDtool. +You must also install munin-nginx or munin-apache sub-package to generate +web graphs. See /usr/share/doc/munin-*/*.conf for example nginx/apache config +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::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 +BuildArch: noarch %description node @@ -158,16 +157,13 @@ relay information from other devices in your network that can't run Munin, such as a switch or a server running another operating system, by using SNMP or similar technology. -Munin is written in Perl, and relies heavily on Tobi Oetiker's excellent -RRDtool. - %package common -Summary: Network-wide resource monitoring tool (common files) -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 @@ -179,24 +175,10 @@ This package contains common files that are used by both the server (munin) and node (munin-node) packages. -%package plugins-java -Summary: Java plugins for Munin resource monitoring -Requires: %{name}-node = %{version} -BuildArch: noarch -Provides: munin-java-plugins = %{version}-%{release} -Obsoletes: munin-java-plugins < 2.0.39-2 - - -%description plugins-java -Additional Java plugins for munin-node. - - %package plugins-ruby -Summary: Ruby plugins for Munin resource monitoring -Requires: %{name}-node = %{version} -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 @@ -204,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 @@ -217,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 @@ -230,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 @@ -255,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},; @@ -266,15 +241,10 @@ 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%{?fedora} >= 24 s,^PYTHON := \(.*\),PYTHON := /usr/bin/python3,; -%else - s,^PYTHON := \(.*\),PYTHON := /usr/bin/python2,; -%endif s,^RUBY := \(.*\),RUBY := /usr/bin/ruby,; - s,^JAVALIBDIR = \(.*\),JAVALIBDIR = $(DESTDIR)%{_javadir},; s,^PERLLIB = \(.*\),PERLLIB = $(DESTDIR)%{perl_vendorlib},; s,^HOSTNAME := \(.*\),HOSTNAME := localhost.localdomain,; s,^PLUGINUSER := \(.*\),PLUGINUSER := munin,; @@ -284,10 +254,14 @@ sed -i -e ' s,^CHOWN := \(.*\),CHOWN := echo Not done: chown,; s,^CHMOD := \(.*\),CHMOD := echo Not done: chmod,; s,^CHGRP := \(.*\),CHGRP := echo Not done: chgrp,; + s,^JC := \(.*\),JC := /bin/false,; ' Makefile.config -%patch101 -p1 -%patch102 -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 . @@ -295,15 +269,11 @@ cp %SOURCE18 . %build -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH -make CONFIG=Makefile.config +make CONFIG=Makefile.config %install -export CLASSPATH=plugins/javalib/org/munin/plugin/jmx:$CLASSPATH -make CONFIG=Makefile.config \ - DESTDIR=%{buildroot} \ - install +make CONFIG=Makefile.config DESTDIR=%{buildroot} install # Remove bundled fonts rm -f %{buildroot}%{_datadir}/munin/DejaVuSans*.ttf @@ -318,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 @@ -335,7 +299,7 @@ mv %{buildroot}%{_datadir}/munin/munin-asyncd %{buildroot}%{_sbindir}/munin-asyn # Remove the Sybase plugin for now, as they need perl modules that are not available rm -f %{buildroot}%{_datadir}/munin/plugins/sybase_space -# Update some plugins from 3.0 branch +# Update plugins from 3.0 branch cp %{SOURCE200} %{buildroot}%{_datadir}/munin/plugins/ # Install plugin config @@ -343,13 +307,15 @@ cp %{SOURCE300} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ cp %{SOURCE301} %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/ # Create plugin state dirs -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/root -mkdir -p %{buildroot}%{_sharedstatedir}/munin/plugin-state/munin +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 @@ -370,34 +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 -mkdir -p %{buildroot}%{_sysconfdir}/cron.d -cp %{SOURCE13} %{buildroot}%{_sysconfdir}/cron.d/munin +# Add timer and service +cp %{SOURCE13} %{buildroot}%{_unitdir} +cp %{SOURCE14} %{buildroot}%{_unitdir} -# Default ssh config for asyncd +# ssh for asyncd mkdir -p %{buildroot}%{_sharedstatedir}/munin/.ssh -install -m 0600 %{SOURCE14} %{buildroot}%{_sharedstatedir}/munin/.ssh/config # rrdcached -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 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 @@ -407,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) ### @@ -439,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 ] || \ @@ -456,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 +%systemd_post munin-rrdcached.service munin.timer munin.service %preun -%systemd_preun munin-rrdcached.service +%systemd_preun munin-rrdcached.service munin.timer munin.service %postun -%systemd_postun_with_restart munin-rrdcached.service - - -%triggerun -- munin < 2.0.42-2 -setfacl --remove-all %{_rundir}/munin -chmod 775 %{_rundir}/munin -%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_with_restart munin-rrdcached.service munin.timer +%systemd_postun munin.service %post node -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_post munin-node.service -%systemd_post munin-asyncd.service -%firewalld_reload -%else -/sbin/chkconfig --add munin-node -/sbin/chkconfig --add munin-asyncd -%endif # Create log file [ -f %{_localstatedir}/log/munin-node/munin-node.log ] || \ - /usr/bin/install -m 0640 -o root -g root /dev/null %{_localstatedir}/log/munin-node/munin-node.log -# Only run configure on a new install, not an upgrade. + /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? 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 -%systemd_preun 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 +%systemd_preun munin-node.service munin-asyncd.service %postun node -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%systemd_postun_with_restart munin-node.service -%systemd_postun_with_restart munin-asyncd.service -%else -if [ $1 -ge 1 ]; then - /sbin/service munin-node condrestart >/dev/null 2>&1 - /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 - - -%triggerun node -- munin-node < 2.0.40-2 -if ls %{_localstatedir}/log/munin/munin-node.log* >/dev/null 2>&1; then - mv -f %{_localstatedir}/log/munin/munin-node.log* %{_localstatedir}/log/munin-node/ -fi -chown -R munin:munin %{_sharedstatedir}/munin/spool/ >/dev/null 2>&1 -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -systemctl daemon-reload -%systemd_postun_with_restart munin-node.service -%systemd_postun_with_restart munin-asyncd.service -%else -if [ $1 -ge 1 ]; then - /sbin/service munin-node condrestart >/dev/null 2>&1 - /sbin/service munin-asyncd condrestart >/dev/null 2>&1 -fi -%endif +%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 - - -%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16 -%triggerun common -- munin-common < 2.0.42-2 -setfacl --remove-all %{_rundir}/munin -chmod 775 %{_rundir}/munin -%endif +%sysusers_create_compat %{SOURCE40} %post nginx @@ -598,55 +500,34 @@ chmod 775 %{_rundir}/munin %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 -%config(noreplace) %{_sysconfdir}/cron.d/munin +%{_unitdir}/munin.timer +%{_unitdir}/munin.service +%ghost %{_sysconfdir}/munin/conf.d %config(noreplace) %{_sysconfdir}/logrotate.d/munin %config(noreplace) %{_sysconfdir}/munin/munin.conf %config(noreplace) %{_sysconfdir}/munin/templates/* %config(noreplace) %{_sysconfdir}/munin/static/* - %{_bindir}/munin-check %{_bindir}/munin-cron %dir %{_datadir}/munin @@ -659,87 +540,68 @@ fi %{perl_vendorlib}/Munin/Master %attr(-, munin, munin) %dir %{_sharedstatedir}/munin %attr(0700, munin, munin) %dir %{_sharedstatedir}/munin/.ssh -%config(noreplace) %attr(0600, munin, munin) %{_sharedstatedir}/munin/.ssh/config -%attr(-, munin, munin) %dir %{_localstatedir}/log/munin -%attr(-, munin, munin) %{_localstatedir}/www/html/munin +%attr(-, munin, munin) %dir %{_localstatedir}/www/html/munin +%attr(-, munin, munin) %{_localstatedir}/www/html/munin/cgi %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-html.log %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-limits.log %attr(0640, munin, adm) %ghost %{_localstatedir}/log/munin/munin-update.log -%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 %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf +%config(noreplace) %ghost %{_localstatedir}/www/html/munin/.htaccess %files node %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 %{_sbindir}/munin-node-configure %{_sbindir}/munin-run -%{_sbindir}/munin-sched %{_sbindir}/munin-asyncd %dir %{_datadir}/munin %{_datadir}/munin/munin-async %{_datadir}/munin/plugins/ -%exclude %{_datadir}/munin/plugins/jmx_ %exclude %{_datadir}/munin/plugins/tomcat_ %exclude %{_datadir}/munin/plugins/munin_stats %{perl_vendorlib}/Munin/Node %{perl_vendorlib}/Munin/Plugin* -%if 0%{?rhel} >= 7 || 0%{?fedora} > 19 %{_prefix}/lib/firewalld/services/munin-node.xml -%endif %attr(-, munin, munin) %dir %{_sharedstatedir}/munin -%attr(0775, root, munin) %dir %{_sharedstatedir}/munin/plugin-state -%attr(-, root, munin) %dir %{_sharedstatedir}/munin/plugin-state/root -%attr(-, munin, munin) %dir %{_sharedstatedir}/munin/plugin-state/munin +%attr(-, root, root) %dir %{_sharedstatedir}/munin-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(0755, root, root) %dir %{_localstatedir}/log/munin-node -%attr(0640, root, root) %ghost %{_localstatedir}/log/munin-node/munin-node.log +%attr(0750, root, adm) %dir %{_localstatedir}/log/munin-node +%attr(0640, root, adm) %ghost %{_localstatedir}/log/munin-node/munin-node.log %files common %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-java -%{_javadir}/munin-jmx-plugins.jar -%{_datadir}/munin/plugins/jmx_ %files plugins-ruby @@ -748,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 @@ -755,24 +618,178 @@ 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 +- Don't require tmpwatch +- Change log file owner to root:adm or munin:adm + +* Tue Jul 28 2020 Fedora Release Engineering - 2.0.63-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 6 2020 Kim B. Heino - 2.0.63-1 +- Upgrade to 2.0.63 +- Don't use systemd-run in munin-run, rhbz #1852345 +- Use "Type=notify" for munin-node and munin-asyncd + +* Thu Jun 25 2020 Jitka Plesnikova - 2.0.54-5 +- Perl 5.32 rebuild + +* Tue Mar 24 2020 Jitka Plesnikova - 2.0.54-4 +- Specify all perl's dependencies for build + +* Wed Jan 29 2020 Fedora Release Engineering - 2.0.54-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jan 24 2020 Kim B. Heino - 2.0.54-2 +- Convert cronjob to systemd timer and tmpfiles + +* Tue Jan 21 2020 Kim B. Heino - 2.0.54-1 +- Upgrade to 2.0.54 +- Improve df's ignore list +- Use systemd hardening options for node and asyncd + +* Sat Oct 19 2019 Kim B. Heino - 2.0.51-1 +- Upgrade to 2.0.51 + +* Thu Oct 17 2019 Kim B. Heino - 2.0.50-2 +- Revert 290650ee2c as it breaks munin-limits on rhel + +* Thu Oct 17 2019 Kim B. Heino - 2.0.50-1 +- Upgrade to 2.0.50 + +* Thu Jul 25 2019 Fedora Release Engineering - 2.0.49-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Jul 13 2019 Kim B. Heino - 2.0.49-3 +- rhbz#1721384: Mark .htaccess as ghost, include it to example config files + +* Fri May 31 2019 Jitka Plesnikova - 2.0.49-2 +- Perl 5.30 rebuild + +* Thu May 16 2019 Kim B. Heino - 2.0.49-1 +- Upgrade to 2.0.49 + +* Mon Mar 18 2019 Kim B. Heino - 2.0.45-2 +- Drop munin-plugins-java subpackage + * Fri Feb 8 2019 Kim B. Heino - 2.0.45-1 - Upgrade to 2.0.45 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.timer b/munin.timer new file mode 100644 index 0000000..1e06efb --- /dev/null +++ b/munin.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Munin server to collect data from nodes +Documentation=man:munin-cron(8) + +[Timer] +OnCalendar=*:00/5 + +[Install] +WantedBy=timers.target diff --git a/munin.tmpfilesd b/munin.tmpfilesd index bdedfad..7d62768 100644 --- a/munin.tmpfilesd +++ b/munin.tmpfilesd @@ -1 +1,13 @@ +# Create runtime directory + d /run/munin 0775 root munin - + +# Cleanup for old rrd/png etc files + +x /var/lib/munin/.ssh +x /var/lib/munin/cgi-tmp +x /var/lib/munin/rrdcached + +e /var/lib/munin/cgi-tmp/* - - - 1d +e /var/lib/munin/spool - - - 14d +e /var/lib/munin - - - 30d 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/nginx_cgi_graphs.conf b/nginx_cgi_graphs.conf index 3b60cb0..666cc90 100644 --- a/nginx_cgi_graphs.conf +++ b/nginx_cgi_graphs.conf @@ -8,7 +8,9 @@ # cgiurl_graph /munin/graph # # Then copy this file to /etc/nginx/conf.d/ directory and restart nginx. -# Services munin-cgi-graph and munin-cgi-html must also be started. +# Services munin-cgi-html and munin-cgi-graph must also be started: +# +# systemctl enable --now munin-cgi-html.socket munin-cgi-graph.socket # # Access Munin at http://localhost/munin/ diff --git a/sources b/sources index 1fb6653..bc776f3 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (munin-2.0.45.tar.gz) = 0aee394a7b256b8008be12e743781b5be8e9dea81fdf6cb1a229403b8ec33d2c6c3a7ea3f30b46fe160da4ba433e870c78efbf58b871ebb067c4ee3e46e7c41a +SHA512 (munin-2.0.76.tar.gz) = 37ad31fa8c7585e4a79ce5b62e6ac83c6f12fe0cbb1c28a257f7c71f99c6b05cc837c7557870a28211c253eb85d981a4b17aed2f6028881d5bdef27c01e445a2 +SHA512 (munin-2.0.76.tar.gz.asc) = b34d6c62f73a1bc381e21e95c03e386fe26e1d32eebc396b82fea69326694db3370bdfc8f2cfcaf37d7c9d4bed27f68e17bebd729a5eac8505ddd97bf677241b