--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
Please unblock package munin, it fixes three important bugs (and a bunch
of normal bugs). munin is a leaf package and 2.0.49 is just another bugfix
release and has been in sid since 11 days without any new issues reported.
munin (2.0.49-1) unstable; urgency=medium
[ Lars Kruse ]
* New upstream version 2.0.49, fixing the upstream issue #1187
(https://github.com/munin-monitoring/munin/issues/1187) which breaks the
visualization of comparison pages and the "problems" overview for munin's
default settings ("html_strategy" and "graph_strategy" being "cron").
* New upstream version 2.0.48, fixing various issues, including bugs in:
- Accept DNS names in "allow" (Closes: #483617)
- Natural sort output on cpuspeed plugin (Closes: #924366)
- postgres_connections_ "Query failed!" (Closes: #924424)
- diskstat_ plugin fails with 4.19 kernels (Closes: #926146)
- open_files max is 18 quintillion, obscuring graph (Closes: #928211)
- upstream issues:
* https://github.com/munin-monitoring/munin/issues/579:
A connection issue with a node leads to the premature removal of all
its graphs from the master visualization, if any plugin (from any
node) returned an invalid output.
* https://github.com/munin-monitoring/munin/issues/951:
munin-async failed to handle plugins with names containing special
characters. Such valid plugins worked only locally, but not via
munin-async.
* https://github.com/munin-monitoring/munin/issues/460:
In an fcgid-based setup (recommended when using nginx) every but the
first request for a "comparison" page returned invalid graphs due to
a mistaken permanent internal state change. This long-standing issue
plagued munin since wheezy.
* Re-export upstream signing key without extra signatures.
* Ensure that /var/cache/munin/www exists.
Thanks to Marvin Gülker (Closes: #927692)
* Keep permission of /run/munin in sync for systemd and sysvinit
-- Holger Levsen <hol...@debian.org> Thu, 16 May 2019 01:21:08 +0200
$ debdiff munin_2.0.47-1.dsc munin_2.0.49-1.dsc | diffstat
ChangeLog | 56 ++++++++++++
RELEASE | 2
debian/changelog | 57 ++++++++++--
debian/examples/systemd-fastcgi/munin-graph.service | 11 ++
debian/examples/systemd-fastcgi/munin-graph.socket | 8 +
debian/examples/systemd-fastcgi/munin-html.service | 11 ++
debian/examples/systemd-fastcgi/munin-html.socket | 8 +
debian/munin-common.tmpfile | 2
debian/munin-node.tmpfile | 2
debian/munin.examples | 1
debian/munin.init | 10 +-
debian/tests/munin-node/02.plugins.t | 4
debian/upstream/signing-key.asc | 39 --------
master/lib/Munin/Master/Config.pm | 21 +++-
master/lib/Munin/Master/HTMLOld.pm | 92 ++++++++++++++++++--
master/lib/Munin/Master/Node.pm | 32 ++++--
master/lib/Munin/Master/Update.pm | 3
master/lib/Munin/Master/UpdateWorker.pm | 26 ++++-
node/_bin/munin-asyncd.in | 5 -
node/lib/Munin/Node/Config.pm | 1
node/lib/Munin/Node/SpoolWriter.pm | 9 +
node/t/munin_node_spoolreader.t | 40 ++++----
node/t/munin_node_spoolwriter.t | 4
plugins/node.d.linux/acpi.in | 2
plugins/node.d.linux/cpuspeed.in | 2
plugins/node.d.linux/diskstat_.in | 4
plugins/node.d.linux/open_files.in | 6 -
plugins/node.d/nutups_.in | 16 ++-
plugins/node.d/postgres_connections_.in | 2
plugins/node.d/snmp__if_.in | 4
30 files changed, 348 insertions(+), 132 deletions(-)
The full debdiff is attached.
unblock munin/2.0.49-1
--
tschau,
Holger
-------------------------------------------------------------------------------
holger@(debian|reproducible-builds|layer-acht).org
PGP fingerprint: B8BF 5413 7B09 D35C F026 FE9D 091A B856 069A AA1C
Dance like no one's watching. Encrypt like everyone is.
diff -Nru munin-2.0.47/ChangeLog munin-2.0.49/ChangeLog
--- munin-2.0.47/ChangeLog 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/ChangeLog 2019-05-09 05:45:43.000000000 +0200
@@ -1,5 +1,60 @@
-*- text -*-
+munin-2.0.49, 2019-05-09
+
+-------
+Summary
+-------
+
+Bugfix release.
+
+------------------
+Detailed Changelog
+------------------
+
+Lars Kruse (2):
+ Fix the reversal of path manipulation
+ Add image path manipulation for "problems" graphs
+
+
+munin-2.0.48, 2019-05-03
+
+-------
+Summary
+-------
+
+Bugfix release.
+
+------------------
+Detailed Changelog
+------------------
+
+Lars Kruse (10):
+ munin-cgi-html: avoid accidental permanent path manipulation
+ Plugins: use natural order for numbered items with multiple digits
+ Ignore malformed lines when parsing "datafile"
+ Plugin snmp__if: handle broken "zero" speed announcements
+ Plugin diskstat_: accept block device information of newer kernel
+ tests: verify name munging of remote plugins via async
+ Plugin open_files: remove "max" field from graph
+ Allow node-specific TLS settings on the master
+ Add support for the Net::Server option "reverse_lookups"
+
+Matthew Gabeler-Lee (1):
+ fix(nutups): make frequency chart aware of input, output, not polling
+
+Valentin Lorentz (1):
+ Sanitise plugin names in munin-asyncd.
+
+Vincas Dargis (1):
+ Remove stray comment in postgresql_connections_
+
+Zenon Mousmoulas (3):
+ Let the server use max timestamp rather than now for non-timestamped
+ Do not fall back to current timestamp for spoolfetch
+ Use a named constant rather than hardcoding -1
+
+
munin-2.0.47, 2019-02-28
-------
@@ -16,6 +71,7 @@
fix t/munin_master_update.t warning
t: remove munin_master_processmanager.t
+
munin-2.0.46, 2019-02-28
-------
diff -Nru munin-2.0.47/debian/changelog munin-2.0.49/debian/changelog
--- munin-2.0.47/debian/changelog 2019-02-28 16:06:07.000000000 +0100
+++ munin-2.0.49/debian/changelog 2019-05-16 01:21:08.000000000 +0200
@@ -1,3 +1,37 @@
+munin (2.0.49-1) unstable; urgency=medium
+
+ [ Lars Kruse ]
+ * New upstream version 2.0.49, fixing the upstream issue #1187
+ (https://github.com/munin-monitoring/munin/issues/1187) which breaks the
+ visualization of comparison pages and the "problems" overview for munin's
+ default settings ("html_strategy" and "graph_strategy" being "cron").
+ * New upstream version 2.0.48, fixing various issues, including bugs in:
+ - Accept DNS names in "allow" (Closes: #483617)
+ - Natural sort output on cpuspeed plugin (Closes: #924366)
+ - postgres_connections_ "Query failed!" (Closes: #924424)
+ - diskstat_ plugin fails with 4.19 kernels (Closes: #926146)
+ - open_files max is 18 quintillion, obscuring graph (Closes: #928211)
+ - upstream issues:
+ * https://github.com/munin-monitoring/munin/issues/579:
+ A connection issue with a node leads to the premature removal of all
+ its graphs from the master visualization, if any plugin (from any
+ node) returned an invalid output.
+ * https://github.com/munin-monitoring/munin/issues/951:
+ munin-async failed to handle plugins with names containing special
+ characters. Such valid plugins worked only locally, but not via
+ munin-async.
+ * https://github.com/munin-monitoring/munin/issues/460:
+ In an fcgid-based setup (recommended when using nginx) every but the
+ first request for a "comparison" page returned invalid graphs due to
+ a mistaken permanent internal state change. This long-standing issue
+ plagued munin since wheezy.
+ * Re-export upstream signing key without extra signatures.
+ * Ensure that /var/cache/munin/www exists.
+ Thanks to Marvin Gülker (Closes: #927692)
+ * Keep permission of /run/munin in sync for systemd and sysvinit
+
+ -- Holger Levsen <hol...@debian.org> Thu, 16 May 2019 01:21:08 +0200
+
munin (2.0.47-1) unstable; urgency=medium
[ Holger Levsen ]
@@ -8,14 +42,14 @@
* Add 'Webservice' field to upstream metadata.
* munin-node.README.Debian: update plugin customization hints
* munin-node.README.Debian: mention behavioural changes due to systemd
- (Closes: #921985)
+ (Closes: #918851, #921985)
* Remove references to "munin-sched" (removed by upstream)
-- Holger Levsen <hol...@debian.org> Thu, 28 Feb 2019 16:06:07 +0100
munin (2.0.45-1) unstable; urgency=medium
- * New upstream release.
+ * New upstream release. (Closes: #918105)
-- Holger Levsen <hol...@debian.org> Thu, 07 Feb 2019 00:10:46 +0100
@@ -32,7 +66,7 @@
munin (2.0.44-1) unstable; urgency=medium
- * New upstream bugfix release.
+ * New upstream bugfix release. (Closes: #914138, #914156)
[ Lars Kruse ]
* Move plugin-related "Suggests" from "munin-node" to plugin packages.
@@ -63,7 +97,7 @@
munin (2.0.43-1) unstable; urgency=medium
[ Lars Kruse ]
- * New upstream version 2.0.43, Closes: #913661
+ * New upstream version 2.0.43, Closes: #913661, #914157
* Remove duplicate systemd-tmpfiles line for /run/munin from munin-node.
Thanks to Vincas Dargis (Closes: #913784)
* Add autopktest for default user context of plugins.
@@ -239,7 +273,7 @@
munin (2.0.37-1) unstable; urgency=medium
* New upstream version 2.0.37.
- * New upstream version 2.0.36, Closes: #894017.
+ * New upstream version 2.0.36, Closes: #806172, #862240, #894017
* New upstream version 2.0.35, fixing various issues, including bugs in:
- plugin http_loadtime: Closes: #798258, #862794, #886517
- plugin netstat: Closes: #861851
@@ -352,15 +386,16 @@
munin (2.0.28-1) unstable; urgency=medium
- * New upstream version. (Closes: #846391, #598554), see upstream ChangeLog
- for details.
+ * New upstream version. (Closes: #846391, #598554, #682782), see
+ upstream ChangeLog for details.
-- Holger Levsen <hol...@debian.org> Tue, 06 Dec 2016 13:15:50 +0100
munin (2.0.27-1) unstable; urgency=medium
- * New upstream version, (Closes: #767032, #768553, #825136, #834194), see
- upstream ChangeLog for details.
+ * New upstream version,
+ (Closes: #640168, #698302, #767032, #768553, #825136, #834194),
+ see upstream ChangeLog for details.
-- Holger Levsen <hol...@debian.org> Mon, 31 Oct 2016 21:59:54 +0100
@@ -607,7 +642,7 @@
your work, Tom and Steve!
[ Stig Sandbeck Mathisen ]
- * New upstream version (Closes: #710527, #710529)
+ * New upstream version (Closes: #710527, #710528, #710529)
* Add dep8 autopkg tests
* Remove /var/lib/munin-node/ when purging munin-node
@@ -657,7 +692,7 @@
munin (2.0.10-1) experimental; urgency=low
- * New upstream release (Closes: #615957, #671448)
+ * New upstream release (Closes: #615957, #671448, #703149)
-- Stig Sandbeck Mathisen <s...@debian.org> Thu, 10 Jan 2013 11:07:33 +0100
diff -Nru munin-2.0.47/debian/examples/systemd-fastcgi/munin-graph.service munin-2.0.49/debian/examples/systemd-fastcgi/munin-graph.service
--- munin-2.0.47/debian/examples/systemd-fastcgi/munin-graph.service 1970-01-01 01:00:00.000000000 +0100
+++ munin-2.0.49/debian/examples/systemd-fastcgi/munin-graph.service 2019-05-06 14:57:26.000000000 +0200
@@ -0,0 +1,11 @@
+[Unit]
+Description=Munin FastCGI Graph
+Requires=munin-graph.socket
+
+[Service]
+User=munin
+Group=munin
+ExecStart=/usr/lib/munin/cgi/munin-cgi-graph
+StandardInput=socket
+StandardOutput=inherit
+StandardError=journal
diff -Nru munin-2.0.47/debian/examples/systemd-fastcgi/munin-graph.socket munin-2.0.49/debian/examples/systemd-fastcgi/munin-graph.socket
--- munin-2.0.47/debian/examples/systemd-fastcgi/munin-graph.socket 1970-01-01 01:00:00.000000000 +0100
+++ munin-2.0.49/debian/examples/systemd-fastcgi/munin-graph.socket 2019-05-06 14:57:26.000000000 +0200
@@ -0,0 +1,8 @@
+[Unit]
+Description=Munin FastCGI Graph Socket
+
+[Socket]
+ListenStream=/run/munin/fcgi-graph.sock
+
+[Install]
+WantedBy=sockets.target
diff -Nru munin-2.0.47/debian/examples/systemd-fastcgi/munin-html.service munin-2.0.49/debian/examples/systemd-fastcgi/munin-html.service
--- munin-2.0.47/debian/examples/systemd-fastcgi/munin-html.service 1970-01-01 01:00:00.000000000 +0100
+++ munin-2.0.49/debian/examples/systemd-fastcgi/munin-html.service 2019-05-06 14:57:26.000000000 +0200
@@ -0,0 +1,11 @@
+[Unit]
+Description=Munin FastCGI HTML
+Requires=munin-html.socket
+
+[Service]
+User=munin
+Group=munin
+ExecStart=/usr/lib/munin/cgi/munin-cgi-html
+StandardInput=socket
+StandardOutput=inherit
+StandardError=journal
diff -Nru munin-2.0.47/debian/examples/systemd-fastcgi/munin-html.socket munin-2.0.49/debian/examples/systemd-fastcgi/munin-html.socket
--- munin-2.0.47/debian/examples/systemd-fastcgi/munin-html.socket 1970-01-01 01:00:00.000000000 +0100
+++ munin-2.0.49/debian/examples/systemd-fastcgi/munin-html.socket 2019-05-06 14:57:26.000000000 +0200
@@ -0,0 +1,8 @@
+[Unit]
+Description=Munin FastCGI HTML Socket
+
+[Socket]
+ListenStream=/run/munin/fcgi-html.sock
+
+[Install]
+WantedBy=sockets.target
diff -Nru munin-2.0.47/debian/munin-common.tmpfile munin-2.0.49/debian/munin-common.tmpfile
--- munin-2.0.47/debian/munin-common.tmpfile 2019-02-28 15:50:42.000000000 +0100
+++ munin-2.0.49/debian/munin-common.tmpfile 2019-05-09 15:20:41.000000000 +0200
@@ -5,4 +5,6 @@
# See tmpfiles.d(5) for details
#
+# keep in sync with debian/munin.init (non-systemd)
d /run/munin 0755 munin root
+d /var/cache/munin/www 0755 munin munin
diff -Nru munin-2.0.47/debian/munin.examples munin-2.0.49/debian/munin.examples
--- munin-2.0.47/debian/munin.examples 2019-02-28 15:50:43.000000000 +0100
+++ munin-2.0.49/debian/munin.examples 2019-05-06 14:57:26.000000000 +0200
@@ -1 +1,2 @@
debian/examples/nginx
+debian/examples/systemd-fastcgi
diff -Nru munin-2.0.47/debian/munin.init munin-2.0.49/debian/munin.init
--- munin-2.0.47/debian/munin.init 2019-02-28 15:50:43.000000000 +0100
+++ munin-2.0.49/debian/munin.init 2019-05-09 15:20:41.000000000 +0200
@@ -6,8 +6,8 @@
# Required-Stop: $network $named $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
-# Short-Description: Create /run/munin on boot
-# Description: Create /run/munin on boot. Munin itself runs as CGI and has no extra startscript...
+# Short-Description: Create munin master directories on boot
+# Description: Create munin master directories on boot. Munin itself runs as CGI or via cron and does not run a separate daemon.
### END INIT INFO
@@ -19,8 +19,10 @@
case "$1" in
start|restart|force-reload)
- # Create various dirs
- mkdir -p /run/munin && chown munin /run/munin
+ # Create various directories
+ # keep in sync with debian/munin-common.tmpfile (systemd-only)
+ mkdir -p /run/munin && chown munin /run/munin && chmod 755 /run/munin
+ mkdir -p /var/cache/munin/www && chown munin. /var/cache/munin/www && chmod 755 /var/cache/munin/www
exit $?
;;
stop)
diff -Nru munin-2.0.47/debian/munin-node.tmpfile munin-2.0.49/debian/munin-node.tmpfile
--- munin-2.0.47/debian/munin-node.tmpfile 2019-02-28 15:50:42.000000000 +0100
+++ munin-2.0.49/debian/munin-node.tmpfile 2019-05-09 15:20:41.000000000 +0200
@@ -1,3 +1,3 @@
-# keep in sync with debian/munin.munin-node.init (non-systemd)
+# keep in sync with debian/munin-node.init (non-systemd)
# /run/munin is handled by the dependent package "munin-common" (see debian/munin-common.tmpfile)
d /var/log/munin 0755 munin adm
diff -Nru munin-2.0.47/debian/tests/munin-node/02.plugins.t munin-2.0.49/debian/tests/munin-node/02.plugins.t
--- munin-2.0.47/debian/tests/munin-node/02.plugins.t 2019-02-28 15:50:43.000000000 +0100
+++ munin-2.0.49/debian/tests/munin-node/02.plugins.t 2019-05-09 15:19:30.000000000 +0200
@@ -27,7 +27,6 @@
irqstats
load
memory
-netstat
open_files
open_inodes
proc_pri
@@ -51,6 +50,9 @@
echo fw_conntrack
echo fw_forwarded_local
fi
+ if [ -x /bin/netstat ]; then
+ echo netstat
+ fi
} | sort >expected_plugins
test_cmp expected_plugins all_without_network_interfaces
'
diff -Nru munin-2.0.47/debian/upstream/signing-key.asc munin-2.0.49/debian/upstream/signing-key.asc
--- munin-2.0.47/debian/upstream/signing-key.asc 2019-02-28 15:50:43.000000000 +0100
+++ munin-2.0.49/debian/upstream/signing-key.asc 2019-05-09 15:20:41.000000000 +0200
@@ -1,5 +1,4 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1
mQINBE9Z0UYBEAChD/KVfJFENj65GLjiVEnrLwPqN6wF2EPsu3hnacKmXBJIUVOh
ER6XC9hFmR2ZIXd8vkaHIIJ/3QmeUQsJWtd4JjHKV7vpTwStFbxtsexU0HVGpO10
@@ -73,40 +72,6 @@
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
-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
-KKdSbY0AFQ==
-=qrF0
+L7FW3jHudm/cMmq68DXxQA==
+=WQyk
-----END PGP PUBLIC KEY BLOCK-----
diff -Nru munin-2.0.47/master/lib/Munin/Master/Config.pm munin-2.0.49/master/lib/Munin/Master/Config.pm
--- munin-2.0.47/master/lib/Munin/Master/Config.pm 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/master/lib/Munin/Master/Config.pm 2019-05-09 05:45:43.000000000 +0200
@@ -470,17 +470,26 @@
sub _parse_config_line {
# Parse and save contents of random user configuration.
- my ($self, $prefix, $key, $value) = @_;
-
- my $longkey = $self->_concat_config_line_ok($prefix,$key,$value);
+ my ($self, $prefix, $key, $value, $skip_on_error) = @_;
+ my $longkey;
+ if ($skip_on_error) {
+ eval { $longkey = $self->_concat_config_line_ok($prefix, $key, $value); };
+ # Skip single malformed lines (error messages were emitted before).
+ # This is suitable for fault tolerant parsing of "datafile".
+ return if $EVAL_ERROR;
+ } else {
+ # A problem with a malformed line is allowed to rise to the file level.
+ # This is suitable for configuration files.
+ $longkey = $self->_concat_config_line_ok($prefix, $key, $value);
+ }
$self->set_value($longkey,$value);
}
sub parse_config {
- my ($self, $io) = @_;
-
+ my ($self, $io, $skip_line_on_error) = @_;
+
my $section = undef;
my $continuation = '';
@@ -513,7 +522,7 @@
$prefix = $1;
} else {
my($key,$value) = split(/\s+/,$line,2);
- $self->_parse_config_line($prefix,$key,$value);
+ $self->_parse_config_line($prefix, $key, $value, $skip_line_on_error);
}
}
}
diff -Nru munin-2.0.47/master/lib/Munin/Master/HTMLOld.pm munin-2.0.49/master/lib/Munin/Master/HTMLOld.pm
--- munin-2.0.47/master/lib/Munin/Master/HTMLOld.pm 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/master/lib/Munin/Master/HTMLOld.pm 2019-05-09 05:45:43.000000000 +0200
@@ -285,6 +285,9 @@
# or even worse within a category inside it. We strip out the
# extra '../' that is used to generate a relative path which is no
# longer valid.
+ # Sadly this change is permanent and will influence successive
+ # responses in a permanent execution environment like fcgid or
+ # as a systemd socket service. Thus we need to revert it later.
foreach my $cat(@{$key->{'comparecategories'}}) {
foreach my $service(@{$cat->{'services'}}) {
foreach my $node(@{$service->{'nodes'}}) {
@@ -292,6 +295,8 @@
cimgday cimgweek cimgmonth cimgyear
zoomday zoomweek zoommonth zoomyear)) {
next unless defined($node->{$imgsrc});
+ # keep a copy of the original value (to be restored below)
+ $node->{"orig_$imgsrc"} = $node->{$imgsrc};
$node->{$imgsrc} =~ s|^\.\./\.\./(?:\.\./)?|../|;
}
}
@@ -322,13 +327,32 @@
NWARNING => scalar(@{$htmlconfig->{"problems"}->{"warnings"}}),
NUNKNOWN => scalar(@{$htmlconfig->{"problems"}->{"unknowns"}}),
);
+
+ # store template output before reverting links
+ my $template_output = $comparisontemplates{$t}->output;
+
+ # restore the paths to their original value
+ foreach my $cat(@{$key->{'comparecategories'}}) {
+ foreach my $service(@{$cat->{'services'}}) {
+ foreach my $node(@{$service->{'nodes'}}) {
+ foreach my $imgsrc(qw(imgday imgweek imgmonth imgyear
+ cimgday cimgweek cimgmonth cimgyear
+ zoomday zoomweek zoommonth zoomyear)) {
+ next unless defined($node->{$imgsrc});
+ $node->{$imgsrc} = $node->{"orig_$imgsrc"};
+ delete($node->{"orig_$imgsrc"});
+ }
+ }
+ }
+ }
+
if($emit_to_stdout){
- print $comparisontemplates{$t}->output;
+ print $template_output;
} else {
ensure_dir_exists($file);
open(my $FILE, '>', $file)
or die "Cannot open $file for writing: $!";
- print $FILE $comparisontemplates{$t}->output;
+ print $FILE $template_output;
close $FILE;
}
}
@@ -402,12 +426,18 @@
DEBUG "[DEBUG] Creating global category page ".$filename;
+ # Manipulate the relative paths for the requested root-level context.
+ # Sadly this change is permanent and will influence successive
+ # responses in a permanent execution environment like fcgid or
+ # as a systemd socket service. Thus we need to revert it later.
foreach my $graphs(@{$key->{'graphs'}}) {
foreach my $graph(@{$graphs->{'graphs'}}) {
foreach my $imgsrc(qw(imgday imgweek imgmonth imgyear
cimgday cimgweek cimgmonth cimgyear
zoomday zoomweek zoommonth zoomyear)) {
- $graph->{$imgsrc} =~ s|^(?:\.\./)+||
+ # keep a copy of the original value (to be restored below)
+ $graph->{"orig_$imgsrc"} = $graph->{$imgsrc};
+ $graph->{$imgsrc} =~ s|^(?:\.\./)+||;
}
}
}
@@ -432,13 +462,28 @@
NUNKNOWN => scalar(@{$htmlconfig->{"problems"}->{"unknowns"}}),
);
+ # store template output before reverting links
+ my $template_output = $graphtemplate->output;
+
+ # restore the paths to their original value
+ foreach my $graphs(@{$key->{'graphs'}}) {
+ foreach my $graph(@{$graphs->{'graphs'}}) {
+ foreach my $imgsrc(qw(imgday imgweek imgmonth imgyear
+ cimgday cimgweek cimgmonth cimgyear
+ zoomday zoomweek zoommonth zoomyear)) {
+ $graph->{$imgsrc} = $graph->{"orig_$imgsrc"};
+ delete($graph->{"orig_$imgsrc"});
+ }
+ }
+ }
+
if($emit_to_stdout){
- print $graphtemplate->output;
+ print $template_output;
} else {
ensure_dir_exists($filename);
open(my $FILE, '>', $filename)
or die "Cannot open $filename for writing: $!";
- print $FILE $graphtemplate->output;
+ print $FILE $template_output;
close $FILE;
}
}
@@ -465,6 +510,23 @@
INFO "[INFO] Creating problem page ".$filename;
+ # Manipulate the relative paths for the requested root-level context.
+ # Sadly this change is permanent and will influence successive
+ # responses in a permanent execution environment like fcgid or
+ # as a systemd socket service. Thus we need to revert it later.
+ foreach my $problem_graphs (values %{$htmlconfig->{"problems"}}) {
+ foreach my $graph(@$problem_graphs) {
+ foreach my $imgsrc(qw(imgday imgweek imgmonth imgyear
+ cimgday cimgweek cimgmonth cimgyear
+ zoomday zoomweek zoommonth zoomyear)) {
+ next unless defined($graph->{$imgsrc});
+ # keep a copy of the original value (to be restored below)
+ $graph->{"orig_$imgsrc"} = $graph->{$imgsrc};
+ $graph->{$imgsrc} =~ s|^(?:\.\./)+||;
+ }
+ }
+ }
+
$graphtemplate->param(
CSS_NAME => get_css_name(),
R_PATH => ".",
@@ -483,13 +545,29 @@
NUNKNOWN => scalar(@{$htmlconfig->{"problems"}->{"unknowns"}}),
);
+ # store template output before reverting links
+ my $template_output = $graphtemplate->output;
+
+ # restore the paths to their original value
+ foreach my $problem_graphs (values %{$htmlconfig->{"problems"}}) {
+ foreach my $graph(@$problem_graphs) {
+ foreach my $imgsrc(qw(imgday imgweek imgmonth imgyear
+ cimgday cimgweek cimgmonth cimgyear
+ zoomday zoomweek zoommonth zoomyear)) {
+ next unless defined($graph->{$imgsrc});
+ $graph->{$imgsrc} = $graph->{"orig_$imgsrc"};
+ delete($graph->{"orig_$imgsrc"});
+ }
+ }
+ }
+
if($emit_to_stdout){
- print $graphtemplate->output;
+ print $template_output;
} else {
ensure_dir_exists($filename);
open(my $FILE, '>', $filename)
or die "Cannot open $filename for writing: $!";
- print $FILE $graphtemplate->output;
+ print $FILE $template_output;
close $FILE;
}
}
diff -Nru munin-2.0.47/master/lib/Munin/Master/Node.pm munin-2.0.49/master/lib/Munin/Master/Node.pm
--- munin-2.0.47/master/lib/Munin/Master/Node.pm 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/master/lib/Munin/Master/Node.pm 2019-05-09 05:45:43.000000000 +0200
@@ -17,6 +17,9 @@
use Time::HiRes qw( gettimeofday tv_interval );
use IO::Socket::INET6;
+# Used as a timestamp value, this declares none was found
+use constant NO_TIMESTAMP => -1;
+
my $config = Munin::Master::Config->instance()->{config};
# Quick version, to enable "DEBUG ... if $debug" constructs
@@ -151,13 +154,19 @@
return 1;
}
+
+sub _get_node_or_global_setting {
+ my ($self, $key) = @_;
+ return exists $self->{configref}->{$key} ? $self->{configref}->{$key} : $config->{$key};
+}
+
+
sub _run_starttls_if_required {
my ($self) = @_;
# TLS should only be attempted if explicitly enabled. The default
# value is therefore "disabled" (and not "auto" as before).
- my $tls_requirement = exists $self->{configref}->{tls} ?
- $self->{configref}->{tls} : $config->{tls};
+ my $tls_requirement = $self->_get_node_or_global_setting("tls");
DEBUG "TLS set to \"$tls_requirement\".";
return if $tls_requirement eq 'disabled';
my $logger = Log::Log4perl->get_logger("Munin::Master");
@@ -166,13 +175,13 @@
logger => sub { $logger->warn(@_) },
read_fd => fileno($self->{reader}),
read_func => sub { _node_read_single($self) },
- tls_ca_cert => $config->{tls_ca_certificate},
- tls_cert => $config->{tls_certificate},
- tls_paranoia => $tls_requirement,
- tls_priv => $config->{tls_private_key},
- tls_vdepth => $config->{tls_verify_depth},
- tls_verify => $config->{tls_verify_certificate},
- tls_match => $config->{tls_match},
+ tls_ca_cert => $self->_get_node_or_global_setting("tls_ca_certificate"),
+ tls_cert => $self->_get_node_or_global_setting("tls_certificate"),
+ tls_paranoia => $tls_requirement,
+ tls_priv => $self->_get_node_or_global_setting("tls_private_key"),
+ tls_vdepth => $self->_get_node_or_global_setting("tls_verify_depth"),
+ tls_verify => $self->_get_node_or_global_setting("tls_verify_certificate"),
+ tls_match => $self->_get_node_or_global_setting("tls_match"),
write_fd => fileno($self->{writer}),
write_func => sub { _node_write_single($self, @_) },
});
@@ -312,9 +321,6 @@
new_service($service);
- # every 'N' has the same value. Should not take parsing time into the equation
- my $now = time;
-
for my $line (@$lines) {
DEBUG "[CONFIG from $plugin] $line" if $debug;
@@ -362,7 +368,7 @@
} elsif ($line =~ m{\A ([^\.]+)\.value \s+ (.+?) \s* $}xms) {
$correct++;
# Special case for dirtyconfig
- my ($ds_name, $value, $when) = ($1, $2, $now);
+ my ($ds_name, $value, $when) = ($1, $2, NO_TIMESTAMP);
$ds_name = $self->_sanitise_fieldname($ds_name);
if ($value =~ /^(\d+):(.+)$/) {
diff -Nru munin-2.0.47/master/lib/Munin/Master/Update.pm munin-2.0.49/master/lib/Munin/Master/Update.pm
--- munin-2.0.47/master/lib/Munin/Master/Update.pm 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/master/lib/Munin/Master/Update.pm 2019-05-09 05:45:43.000000000 +0200
@@ -81,7 +81,8 @@
return {};
}
eval {
- $oldconfig->parse_config($file);
+ # parse file but skip malformed lines
+ $oldconfig->parse_config($file, 1);
};
if ($EVAL_ERROR) {
WARN "[Warning] Could not parse datafile $datafile: $EVAL_ERROR";
diff -Nru munin-2.0.47/master/lib/Munin/Master/UpdateWorker.pm munin-2.0.49/master/lib/Munin/Master/UpdateWorker.pm
--- munin-2.0.47/master/lib/Munin/Master/UpdateWorker.pm 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/master/lib/Munin/Master/UpdateWorker.pm 2019-05-09 05:45:43.000000000 +0200
@@ -224,7 +224,9 @@
%{$service_config{global}});
my $last_updated_timestamp = $self->_update_rrd_files(\%service_config, \%service_data);
- $self->set_spoolfetch_timestamp($last_updated_timestamp);
+ if ($last_updated_timestamp) {
+ $self->set_spoolfetch_timestamp($last_updated_timestamp);
+ }
} # for @plugins
# Send "quit" to node
@@ -574,7 +576,17 @@
my $nodedesignation = $self->{host}{host_name}."/".
$self->{host}{address}.":".$self->{host}{port};
- my $last_timestamp = 0;
+ my $last_timestamp =
+ max(0,
+ map {
+ my $svc = $_;
+ map {
+ my $ds = $_;
+ @{$nested_service_data->{$svc}->{$ds}->{when} || []};
+ } keys %{$nested_service_config->{data_source}{$svc}};
+ } keys %{$nested_service_config->{data_source}}
+ );
+ my $last_timestamp_or_now = ($last_timestamp > 0) ? $last_timestamp : time;
for my $service (keys %{$nested_service_config->{data_source}}) {
@@ -608,7 +620,7 @@
my $rrd_file = $self->_create_rrd_file_if_needed($service, $ds_name, $ds_config, $first_epoch);
if (defined($service_data) and defined($service_data->{$ds_name})) {
- $last_timestamp = max($last_timestamp, $self->_update_rrd_file($rrd_file, $ds_name, $service_data->{$ds_name}));
+ $self->_update_rrd_file($rrd_file, $ds_name, $service_data->{$ds_name}, $last_timestamp_or_now);
}
else {
WARN "[WARNING] Service $service on $nodedesignation returned no data for label $ds_name";
@@ -848,7 +860,7 @@
}
sub _update_rrd_file {
- my ($self, $rrd_file, $ds_name, $ds_values) = @_;
+ my ($self, $rrd_file, $ds_name, $ds_values, $max_timestamp) = @_;
my $values = $ds_values->{value};
@@ -874,6 +886,10 @@
my $value = $values->[$i];
my $when = $ds_values->{when}[$i];
+ if ($when == $self->{node}->NO_TIMESTAMP) {
+ $when = $max_timestamp;
+ }
+
# Ignore values that is not in monotonic increasing timestamp for the RRD.
# Otherwise it will reject the whole update
next if ($current_updated_timestamp && $when <= $current_updated_timestamp);
@@ -926,7 +942,7 @@
$self->{state}{value}{"$rrd_file:42"}{current} = [ $current_updated_timestamp, $current_updated_value ];
$self->{state}{value}{"$rrd_file:42"}{previous} = [ $previous_updated_timestamp, $previous_updated_value ];
- return $current_updated_timestamp;
+ return scalar @update_rrd_data;
}
sub dump_to_file
diff -Nru munin-2.0.47/node/_bin/munin-asyncd.in munin-2.0.49/node/_bin/munin-asyncd.in
--- munin-2.0.47/node/_bin/munin-asyncd.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/node/_bin/munin-asyncd.in 2019-05-09 05:45:43.000000000 +0200
@@ -125,7 +125,10 @@
"w",
);
- print $fh_list $plugins_line;
+ my $sanitised_plugins_line = $plugins_line;
+ $sanitised_plugins_line =~ s/[^_A-Za-z0-9 ]/_/g;
+
+ print $fh_list $sanitised_plugins_line;
print $fh_list "\n";
}
diff -Nru munin-2.0.47/node/lib/Munin/Node/Config.pm munin-2.0.49/node/lib/Munin/Node/Config.pm
--- munin-2.0.47/node/lib/Munin/Node/Config.pm 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/node/lib/Munin/Node/Config.pm 2019-05-09 05:45:43.000000000 +0200
@@ -138,6 +138,7 @@
deny
cidr_allow
cidr_deny
+ reverse_lookups
);
sub _handled_by_net_server {
diff -Nru munin-2.0.47/node/lib/Munin/Node/SpoolWriter.pm munin-2.0.49/node/lib/Munin/Node/SpoolWriter.pm
--- munin-2.0.47/node/lib/Munin/Node/SpoolWriter.pm 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/node/lib/Munin/Node/SpoolWriter.pm 2019-05-09 05:45:43.000000000 +0200
@@ -102,6 +102,10 @@
{
my ($self, $timestamp, $service, $data) = @_;
+ # squash the $service name with the same rules as the munin-update when using plain TCP
+ # Closes D:710529
+ $service =~ s/[^_A-Za-z0-9]/_/g;
+
my $fmtTimestamp = $self->_snap_to_epoch_boundary($timestamp);
open my $fh , '>>', "$self->{spooldir}/munin-daemon.$service.$fmtTimestamp." . $self->{interval_size}
@@ -110,10 +114,7 @@
print {$fh} "timestamp $timestamp\n";
- # squash the $service name with the same rules as the munin-update when using plain TCP
- # Closes D:710529
- my $service_squashed = $service; $service_squashed =~ tr/.:/__/;
- print {$fh} "multigraph $service_squashed\n" unless $data->[0] =~ m{^multigraph};
+ print {$fh} "multigraph $service\n" unless $data->[0] =~ m{^multigraph};
foreach my $line (@$data) {
# Ignore blank lines and "."-ones.
diff -Nru munin-2.0.47/node/t/munin_node_spoolreader.t munin-2.0.49/node/t/munin_node_spoolreader.t
--- munin-2.0.47/node/t/munin_node_spoolreader.t 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/node/t/munin_node_spoolreader.t 2019-05-09 05:45:43.000000000 +0200
@@ -38,52 +38,52 @@
my $reader = Munin::Node::SpoolReader->new(spooldir => $dir);
# write some data
- $writer->write(1234567890, 'fnord', [
+ $writer->write(1234567890, 'fnord-foo', [
'graph_title CPU usage',
'system.label system',
'system.value 1',
]);
- $writer->write(1234567900, 'fnord', [
+ $writer->write(1234567900, 'fnord-foo', [
'graph_title CPU usage',
'system.label system',
'system.value 2',
]);
- $writer->write(1234567910, 'fnord', [
+ $writer->write(1234567910, 'fnord-foo', [
'graph_title CPU usage',
'system.label system',
'system.value 3',
]);
is_string($reader->fetch(1234567899), <<EOS, 'Fetched data since the write');
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567900:2
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567910:3
EOS
is_string($reader->fetch(1234567900), <<EOS, 'Start timestamp is not inclusive');
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567910:3
EOS
is_string($reader->fetch(1), <<EOS, 'Timestamp predates all result: all results are returned');
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567890:1
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567900:2
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567910:3
@@ -97,7 +97,7 @@
my $reader = Munin::Node::SpoolReader->new(spooldir => $dir);
# write some data
- $writer->write(1234567890, 'fnord', [
+ $writer->write(1234567890, 'fnord-foo', [
'graph_title CPU usage',
'system.label system',
'',
@@ -106,7 +106,7 @@
]);
is_string($reader->fetch(1), <<EOS, 'Blank lines are ignored');
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567890:1
@@ -119,7 +119,7 @@
my $reader = Munin::Node::SpoolReader->new(spooldir => $dir);
# write results for two different plugins
- $writer->write(1234567890, 'fnord', [
+ $writer->write(1234567890, 'fnord-foo', [
'graph_title CPU usage',
'system.label system',
'system.value 3',
@@ -134,7 +134,7 @@
ok(my $fetched = $reader->fetch(1234567800), 'Several services to fetch');
my $f1 = <<EOT;
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567890:3
@@ -162,13 +162,13 @@
my $reader = Munin::Node::SpoolReader->new(spooldir => $dir);
# write two sets of results, with a slightly different config
- $writer->write(1234567890, 'fnord', [
+ $writer->write(1234567890, 'fnord-foo', [
'graph_title CPU usage',
'system.label system',
'system.value 3',
]);
- $writer->write(1234567990, 'fnord', [
+ $writer->write(1234567990, 'fnord-foo', [
'graph_title CPU usage!', # this line has changed
'system.label system',
'system.value 4',
@@ -177,13 +177,13 @@
ok(my $fetched = $reader->fetch(1234567800), 'Several sets of results to fetch');
my $f1 = <<EOT;
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage
system.label system
system.value 1234567890:3
EOT
my $f2 = <<EOT;
-multigraph fnord
+multigraph fnord_foo
graph_title CPU usage!
system.label system
system.value 1234567990:4
@@ -203,7 +203,7 @@
is($reader->list, "\n", 'No spooled plugins to list');
# write "results" for several plugins
- $writer->write(1234567890, 'fnord', [
+ $writer->write(1234567890, 'fnord-foo', [
'graph_title CPU usage',
'system.label system',
'system.value 1',
@@ -228,7 +228,7 @@
print $cruft "rubbish\n";
close $cruft;
- is_deeply([ sort $reader->_get_spooled_plugins ], [ sort qw( fnord floop blort ) ], 'Retrieved list of spooled plugins');
- is($reader->list, "blort floop fnord\n", 'Retrieved stringified list of spooled plugins');
+ is_deeply([ sort $reader->_get_spooled_plugins ], [ sort qw( fnord_foo floop blort ) ], 'Retrieved list of spooled plugins');
+ is($reader->list, "blort floop fnord_foo\n", 'Retrieved stringified list of spooled plugins');
}
diff -Nru munin-2.0.47/node/t/munin_node_spoolwriter.t munin-2.0.49/node/t/munin_node_spoolwriter.t
--- munin-2.0.47/node/t/munin_node_spoolwriter.t 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/node/t/munin_node_spoolwriter.t 2019-05-09 05:45:43.000000000 +0200
@@ -144,7 +144,7 @@
my $dir = tempdir( CLEANUP => 1 );
my $writer = Munin::Node::SpoolWriter->new(spooldir => $dir);
- $writer->write(1234567890, 'fnord', [
+ $writer->write(1234567890, 'fnord-foo', [
'multigraph fnord',
'graph_title CPU usage',
'system.label system',
@@ -155,7 +155,7 @@
'subsystem.value 123',
]);
- my $data_file = "$dir/munin-daemon.fnord.1234483200" . "." . Munin::Node::SpoolWriter::DEFAULT_TIME;
+ my $data_file = "$dir/munin-daemon.fnord_foo.1234483200" . "." . Munin::Node::SpoolWriter::DEFAULT_TIME;
ok( -r $data_file, 'spool file is readable') or last;
my $data = read_file($data_file);
diff -Nru munin-2.0.47/plugins/node.d/nutups_.in munin-2.0.49/plugins/node.d/nutups_.in
--- munin-2.0.47/plugins/node.d/nutups_.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/plugins/node.d/nutups_.in 2019-05-09 05:45:43.000000000 +0200
@@ -80,15 +80,19 @@
frequency() {
if [ "$1" = "config" ]; then
- echo "graph_title $UPS input AC frequency"
+ echo "graph_title $UPS AC frequency"
echo "graph_args --base 1000 -l 0"
echo "graph_vlabel frequency 1/s"
- echo "acfreq.label AC frequency"
- echo "acfreq.type GAUGE"
- echo "acfreq.max 100"
- echo "acfreq.min 5"
+ echo "inputfreq.label Input AC frequency"
+ echo "inputfreq.type GAUGE"
+ echo "inputfreq.max 100"
+ echo "inputfreq.min 5"
+ echo "outputfreq.label Output AC frequency"
+ echo "outputfreq.type GAUGE"
+ echo "outputfreq.max 100"
+ echo "outputfreq.min 5"
else
- "$UPSC" "$UPS" | sed -n '/^[^:]*freq/{s/.*:/acfreq.value/;p}'
+ "$UPSC" "$UPS" | sed -n '/^[^:]*\(input\|output\)\.frequency:/{s/.*\(input\|output\).*:/\1freq.value/;p}'
fi
}
diff -Nru munin-2.0.47/plugins/node.d/postgres_connections_.in munin-2.0.49/plugins/node.d/postgres_connections_.in
--- munin-2.0.47/plugins/node.d/postgres_connections_.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/plugins/node.d/postgres_connections_.in 2019-05-09 05:45:43.000000000 +0200
@@ -78,7 +78,7 @@
count(*) AS count
FROM (SELECT act.state, act.wait_event_type, EXISTS (SELECT FROM pg_locks AS l WHERE l.pid = act.pid) AS locked, act.query
FROM pg_stat_activity AS act
- WHERE act.pid != pg_backend_pid() AND act.backend_type = 'client backend' /*%%FILTER%%*/)
+ WHERE act.pid != pg_backend_pid() AND act.backend_type = 'client backend' %%FILTER%%)
AS a GROUP BY 1
) AS tmp2
ON tmp.mstate=tmp2.mstate
diff -Nru munin-2.0.47/plugins/node.d/snmp__if_.in munin-2.0.49/plugins/node.d/snmp__if_.in
--- munin-2.0.47/plugins/node.d/snmp__if_.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/plugins/node.d/snmp__if_.in 2019-05-09 05:45:43.000000000 +0200
@@ -238,14 +238,14 @@
print "recv.cdef recv,8,*\n";
print "recv.max $speed\n";
print "recv.min 0\n";
- print "recv.warning ", ($warn), "\n" if defined $warn;
+ print "recv.warning ", ($warn), "\n" if defined $warn && ($warn != 0);
print "send.label bps\n";
print "send.type DERIVE\n";
print "send.negative recv\n";
print "send.cdef send,8,*\n";
print "send.max $speed\n";
print "send.min 0\n";
- print "send.warning $warn\n" if defined $warn;
+ print "send.warning $warn\n" if defined $warn && ($warn != 0);
exit 0;
}
diff -Nru munin-2.0.47/plugins/node.d.linux/acpi.in munin-2.0.49/plugins/node.d.linux/acpi.in
--- munin-2.0.47/plugins/node.d.linux/acpi.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/plugins/node.d.linux/acpi.in 2019-05-09 05:45:43.000000000 +0200
@@ -50,7 +50,7 @@
# directories containing thermal zone information
if [ -d /sys/class/thermal/ ]; then
- ATZ=$(find /sys/class/thermal/ -maxdepth 1 -name "thermal_zone*")
+ ATZ=$(find /sys/class/thermal/ -maxdepth 1 -name "thermal_zone*" | sort -V)
else
ATZ=
fi
diff -Nru munin-2.0.47/plugins/node.d.linux/cpuspeed.in munin-2.0.49/plugins/node.d.linux/cpuspeed.in
--- munin-2.0.47/plugins/node.d.linux/cpuspeed.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/plugins/node.d.linux/cpuspeed.in 2019-05-09 05:45:43.000000000 +0200
@@ -141,7 +141,7 @@
print_warning "cpu$N"
print_critical "cpu$N"
- done
+ done | sort -V
if [ "${MUNIN_CAP_DIRTYCONFIG:-0}" != 1 ]; then exit 0; fi
fi
diff -Nru munin-2.0.47/plugins/node.d.linux/diskstat_.in munin-2.0.49/plugins/node.d.linux/diskstat_.in
--- munin-2.0.47/plugins/node.d.linux/diskstat_.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/plugins/node.d.linux/diskstat_.in 2019-05-09 05:45:43.000000000 +0200
@@ -502,8 +502,8 @@
my @elems = split /\s+/, $line;
- croak "'$stats_file' doesn't contain exactly 11 values. Aborting"
- if ( @elems != 11 );
+ croak "'$stats_file' contains less than 11 values. Aborting"
+ if ( @elems < 11 );
# Translate the devicename back before storing the information
$cur_device =~ tr#!#/#;
diff -Nru munin-2.0.47/plugins/node.d.linux/open_files.in munin-2.0.49/plugins/node.d.linux/open_files.in
--- munin-2.0.47/plugins/node.d.linux/open_files.in 2019-02-28 15:43:36.000000000 +0100
+++ munin-2.0.49/plugins/node.d.linux/open_files.in 2019-05-09 05:45:43.000000000 +0200
@@ -53,11 +53,7 @@
p_critical=$(print_critical used)
[ -z "$p_warning" ] && echo "used.warning $computed_warning" || echo "$p_warning"
[ -z "$p_critical" ] && echo "used.critical $computed_critical" || echo "$p_critical"
- echo 'max.label max open files'
- echo 'max.info The maximum supported number of open files. Tune by modifying /proc/sys/fs/file-max.'
- print_warning max
- print_critical max
exit 0
fi
-awk '{print "used.value " $1-$2 "\nmax.value " $3}' < /proc/sys/fs/file-nr
+awk '{print "used.value " $1-$2}' < /proc/sys/fs/file-nr
diff -Nru munin-2.0.47/RELEASE munin-2.0.49/RELEASE
--- munin-2.0.47/RELEASE 2019-02-28 15:45:50.000000000 +0100
+++ munin-2.0.49/RELEASE 2019-05-09 09:26:27.000000000 +0200
@@ -1 +1 @@
-2.0.47
+2.0.49
signature.asc
Description: PGP signature
--- End Message ---