Your message dated Thu, 21 Jun 2018 23:23:47 +0200
with message-id <20180621232347.3ef7b...@erker.lan>
and subject line Re: Bug in bonding_err_ plugin
has caused the Debian Bug report #648686,
regarding Bug in bonding_err_ plugin
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
648686: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648686
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: munin-node
Version: 1.4.6-1
Severity: normal

Dear Maintainer,

I rebooted a system that was using kernel 2.6.32 into one running kernel 3.0.0
After that the /usr/share/munin/plugins/bonding_err_ plugin stopped working.
Here is an example of the results returned.

        $ telnet localhost munin
        Trying ::1...
        Connected to localhost.
        Escape character is '^]'.
        # munin node at wwvrt01.nsw.ddihealth.com
        fetch bonding_err_bond0
        if_eth0.value if_eth1.value if_eth2.value if_eth3.value
        .

The code for this plugin contains the following line:

        grep -A 2 "^Slave Interface: ${if}" ${PROCDIR}/${BONDINGIF} | grep 
"Link Failure Count:" | cut -d " " -f 4

The 'grep -A 2' only returns two lines after the matched line.
So for eth0 (which is part of bond0) I get the following results when just 
running the grep:

        $ grep -A 2 "^Slave Interface: eth0" /proc/net/bonding/bond0
        Slave Interface: eth0
        MII Status: up
        Speed: 100 Mbps

Those lines don't contian the 'Link Failure Count:' line that grep looks for in 
the pipeline.
The full set of entries for interfaces that form the bond0 device look as 
follows:

        Slave Interface: eth0
        MII Status: up
        Speed: 100 Mbps
        Duplex: full
        Link Failure Count: 0
        Permanent HW addr: 00:1b:21:71:9a:f0
        Aggregator ID: 4
        Slave queue ID: 0

        Slave Interface: eth1
        MII Status: up
        Speed: 100 Mbps
        Duplex: full
        Link Failure Count: 0
        Permanent HW addr: 00:1b:21:71:9a:f1
        Aggregator ID: 4
        Slave queue ID: 0

        Slave Interface: eth2
        MII Status: up
        Speed: 100 Mbps
        Duplex: full
        Link Failure Count: 0
        Permanent HW addr: 00:1b:21:71:9a:f4
        Aggregator ID: 4
        Slave queue ID: 0

        Slave Interface: eth3
        MII Status: up
        Speed: 100 Mbps
        Duplex: full
        Link Failure Count: 0
        Permanent HW addr: 00:1b:21:71:9a:f5
        Aggregator ID: 4
        Slave queue ID: 0

Instead of 'grep -A 2' it should instead match all the lines from the 'Slave 
Interface:' line up to the next blank line or EOF.
This way it'll work no matter the order of the lines nor how many get added in 
the future.
I have achieved this by using sed instead of grep.
I've replaced:
        grep -A 2 "^Slave Interface: ${if}" ${PROCDIR}/${BONDINGIF} | grep 
"Link Failure Count:" | cut -d " " -f 4
With:
        sed "0,/^Slave Interface: ${if}/d; /^\$/,\$d" ${PROCDIR}/${BONDINGIF} | 
grep "Link Failure Count:" | cut -d " " -f 4

Or in patch form it is as follows:

--- bonding_err_.orig   2011-11-14 12:42:18.332577791 +1100
+++ bonding_err_        2011-11-14 12:44:24.594788291 +1100
@@ -97,7 +97,7 @@
 grep "^Slave Interface:" ${PROCDIR}/${BONDINGIF} | while read a b if; do
   fieldname=$(clean_fieldname "$if")
   echo -n "if_${fieldname}.value "
-  grep -A 2 "^Slave Interface: ${if}" ${PROCDIR}/${BONDINGIF} | grep "Link 
Failure Count:" | cut -d " " -f 4
+  sed "0,/^Slave Interface: ${if}/d; /^\$/,\$d" ${PROCDIR}/${BONDINGIF} | grep 
"Link Failure Count:" | cut -d " " -f 4
 done

After making this change, the results are now returned.

        # telnet localhost munin
        Trying ::1...
        Connected to localhost.
        Escape character is '^]'.
        # munin node at wwvrt01.nsw.ddihealth.com
        fetch bonding_err_bond0
        if_eth0.value 0
        if_eth1.value 0
        if_eth2.value 0
        if_eth3.value 0
        .

Regards,

Jim Barber
----------
DDI Health


-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (990, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.38-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_AU, LC_CTYPE=en_AU (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/dash

Versions of packages munin-node depends on:
ii  adduser             3.113
ii  gawk                1:3.1.8+dfsg-0.1
ii  libnet-server-perl  0.99-3
ii  lsb-base            3.2-28
ii  munin-common        1.4.6-1
ii  perl                5.12.4-6
ii  procps              1:3.2.8-11

Versions of packages munin-node recommends:
ii  libnet-snmp-perl  6.0.1-2



--- End Message ---
--- Begin Message ---
Package: munin-plugins-core
Version: 2.0.12-1
Followup-For: Bug #648686

Hi,

the issue was fixed by upstream in 2.0.12.

@Jim: thank you for the improved parsing expression. I pushed your patch
upstream now.

Cheers,
Lars

--- End Message ---

Reply via email to