Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
Re: net/munin : add interface description and iostat_ plugins
To:
Olivier Cherrier <oc@symacx.com>
Cc:
OpenBSD ports <ports@openbsd.org>
Date:
Tue, 11 Nov 2025 13:46:39 +0000

Download raw body.

Thread
On 2025/11/11 13:55, Olivier Cherrier wrote:
> Sorry for this.  Here it is.

no worries at all, it just makes it easier (which generally makes it
more likely to get handled sooner ;)

will check/commit.

> Thanks !
> Best
> 
> Olivier Cherrier
> Phone: +352691570680
> mailto:oc@symacx.com
> 
> On 11/11/25 12:46 PM, Stuart Henderson wrote:
> > would you mind sending a diff done with cvs add so that it's easier to
> > handle please? (cvs add/rm works ok done against anoncvs for adding or
> > removing files)
> > 
> > cd files
> > cvs add iostat_
> > cd ..
> > cvs diff -uNp
> > 
> > 
> > On 2025/11/11 01:37, Olivier Cherrier wrote:
> > >      Hello,
> > > 
> > > Here is a small bump for net/munin.
> > > 
> > > It adds:
> > >    _ a description to the interface graphics (based on the 'descr' value
> > >      configured through ifconfig(8), if defined).
> > >      It is handy when you have many interfaces with similar names.
> > >    _ some 'iostat_' plugins to graph disk statistics (IO Bytes/s and
> > > transfers/s).
> > > 
> > > 
> > > Thanks,
> > > 
> > > -- 
> > > Olivier Cherrier
> > > Phone: +352691570680
> > > mailto:oc@symacx.com
> > > 
> > > #!/bin/sh
> > > # -*- sh -*-
> > > #
> > > # Wildcard-plugin to monitor disk IOs. To monitor a disk, link
> > > # iostat_<disk> to this file. E.g.
> > > #
> > > #    ln -s /usr/local/libexec/munin/plugins/iostat_ \
> > > #	/etc/munin/plugins/iostat_sd0
> > > #
> > > # ...will monitor sd0.
> > > #
> > > # To aggregate all disk traffic on the system, link iostat_aggregated
> > > # to this file.
> > > #
> > > # Magic markers (optional - used by munin-config and some installation
> > > # scripts):
> > > #
> > > #%# family=auto
> > > #%# capabilities=autoconf suggest
> > > 
> > > DISK=${0##*iostat_}
> > > 
> > > 
> > > if [ "$1" = "autoconf" ]; then
> > > 	if [ -x /usr/sbin/iostat -a -x /sbin/sysctl ]; then
> > > 		echo yes
> > > 		exit 0
> > > 	else
> > > 		echo "no (/usr/sbin/iostat or /sbin/sysctl not found)"
> > > 		exit 0
> > > 	fi
> > > fi
> > > 
> > > if [ "$1" = "suggest" ]; then
> > > 	if [ -x /sbin/sysctl ]; then
> > > 		/sbin/sysctl hw.disknames | perl -ne '
> > > 			my @disks = split(/=|,/);
> > > 			for my $disk (@disks) {
> > > 				next if $disk =~ m{hw.disknames};
> > > 				my @d = split(/:/, $disk);
> > > 				print "$d[0]\n" if ($d[0] =~ m{[a-z]+\d+}
> > > 					and $d[1] =~ m/.{16}/);
> > > 			}
> > > 		'
> > > 		exit 0
> > > 	else
> > > 		exit 1
> > > 	fi
> > > fi
> > > 
> > > if [ "$1" = "config" ]; then
> > > 	echo 'multigraph bytes'
> > > 	echo "graph_title $DISK IO Bytes/s"
> > > 	echo 'graph_args --base 1024'
> > > 	echo 'graph_vlabel Bytes/s'
> > > 	echo 'graph_category disk'
> > > 	echo "graph_info This graph shows IO statistics (total Bytes/s) for $DISK disk."
> > > 	# echo 'graph_scale yes'
> > > 	echo "kb.info Data transfered (Bytes/s) on the $DISK disk."
> > > 	echo 'kb.label Bytes transfered'
> > >          echo 'kb.type DERIVE'
> > >          # echo 'kb.graph no'
> > >          echo 'kb.cdef kb,1024,*'
> > > 	echo 'kb.min 0'
> > > 	echo ''
> > > 	echo 'multigraph xfr'
> > > 	echo "graph_title $DISK transfers/s"
> > > 	echo 'graph_args --base 1000'
> > > 	echo 'graph_vlabel xfr/s'
> > > 	echo 'graph_category disk'
> > > 	echo "graph_info This graph shows IO statistics (transfers/s) for $DISK disk."
> > > 	# echo 'graph_scale yes'
> > > 	echo "xfr.info Disk transfers (IOPs) on the $DISK disk."
> > >          echo 'xfr.label Disk transfers'
> > > 	echo 'xfr.type DERIVE'
> > > 	# echo 'xfr.cdef xfr,8,*'
> > > 	echo 'xfr.min 0'
> > > 
> > > 	exit 0
> > > fi
> > > 
> > > /usr/sbin/iostat -ID $DISK | awk '
> > > 	/[[:digit:]]+[[:space:]][[:digit:]]+[[:space:]][[[:digit:]]|\.]+/ {
> > > 	if (NF == 3) {
> > > 		print "multigraph bytes";
> > > 		print "kb.value", $1;
> > > 		print "";
> > > 		print "multigraph xfr";
> > > 		print "xfr.value", $2;
> > > 	}
> > > }'
> > > 
> > > Index: plugins/node.d.openbsd/if_pps_.in
> > > --- plugins/node.d.openbsd/if_pps_.in.orig
> > > +++ plugins/node.d.openbsd/if_pps_.in
> > > @@ -31,6 +31,8 @@ if [ "$1" = "autoconf" ]; then
> > >   	fi
> > >   fi
> > > +DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> > > +
> > >   if [ "$1" = "suggest" ]; then
> > >   	if [ -x /usr/bin/netstat ]; then
> > >   		netstat -i -n | sed -n -e '/^faith/d' -e '/^lo[0-9]/d' -e '/^pflog/d' -e '/<Link>/s/\** .*//p'
> > > @@ -42,7 +44,11 @@ fi
> > >   if [ "$1" = "config" ]; then
> > >   	echo "graph_order rpkt opkt"
> > > -	echo "graph_title $INTERFACE packets"
> > > +	if [ "X${DESCR}" != 'X' ]; then
> > > +		echo "graph_title $INTERFACE (${DESCR}) packets"
> > > +	else
> > > +		echo "graph_title $INTERFACE packets"
> > > +	fi
> > >   	echo 'graph_args --base 1000'
> > >   	echo 'graph_vlabel packets/${graph_period} in (-) out (+)'
> > >   	echo 'graph_category network'
> > > Index: net/munin/Makefile
> > > ===================================================================
> > > RCS file: /data/repos/openbsd-cvs/ports/net/munin/Makefile,v
> > > diff -u -r1.121 Makefile
> > > --- net/munin/Makefile	23 May 2024 05:47:01 -0000	1.121
> > > +++ net/munin/Makefile	11 Nov 2025 00:34:44 -0000
> > > @@ -9,6 +9,7 @@
> > >   PKGNAME-main =	munin-node-${GH_TAGNAME}
> > >   PKGNAME-server =munin-server-${GH_TAGNAME}
> > >   CATEGORIES =	net
> > > +REVISION =	0
> > >   HOMEPAGE =	https://munin-monitoring.org/
> > > @@ -72,8 +73,8 @@
> > >   			DOCDIR=${WRKINST}/${PREFIX}/share/doc/munin \
> > >   			CONFDIR=${WRKINST}/${PREFIX}/share/examples/munin
> > > -MUNIN_PLUGINS =		bgpd if_pps_ intr pf_changes pf_searches pf_states \
> > > -			sensors_ vmstat
> > > +MUNIN_PLUGINS =		bgpd if_pps_ intr iostat_ pf_changes pf_searches \
> > > +			pf_states sensors_ vmstat
> > >   .for i in ${MUNIN_PLUGINS}
> > >   SUBST_LIST += ${FILESDIR}/$i ${WRKSRC}/plugins/node.d.openbsd/$i.in
> > > Index: net/munin/patches/patch-plugins_node_d_openbsd_if__in
> > > ===================================================================
> > > RCS file: /data/repos/openbsd-cvs/ports/net/munin/patches/patch-plugins_node_d_openbsd_if__in,v
> > > diff -u -r1.7 patch-plugins_node_d_openbsd_if__in
> > > --- net/munin/patches/patch-plugins_node_d_openbsd_if__in	11 Mar 2022 19:46:25 -0000	1.7
> > > +++ net/munin/patches/patch-plugins_node_d_openbsd_if__in	11 Nov 2025 00:34:44 -0000
> > > @@ -13,7 +13,15 @@
> > >    #
> > >    # To aggregate all network interfaces on the system (except lo0),
> > >    # link if_aggregated to this file.
> > > -@@ -37,7 +37,7 @@ if [ "$1" = "suggest" ]; then
> > > +@@ -31,13 +31,15 @@ if [ "$1" = "autoconf" ]; then
> > > + 	fi
> > > + fi
> > > +
> > > ++DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> > > ++
> > > + if [ "$1" = "suggest" ]; then
> > > + 	if [ -x /sbin/ifconfig ]
> > > + 	then
> > >    		ifconfig -l | sed -Ee 's/[[:<:]](pfsync|faith|pf(log|sync)|lo|plip|carp|enc|fwe)[^ ]*//g' | xargs -n 1 echo
> > >    		exit 0
> > >    	elif [ -x /usr/bin/netstat ]; then
> > > @@ -22,7 +30,16 @@
> > >    		exit 0
> > >    	else
> > >    		exit 1
> > > -@@ -51,7 +51,7 @@ if [ "$1" = "config" ]; then
> > > +@@ -47,11 +49,15 @@ fi
> > > + if [ "$1" = "config" ]; then
> > > +
> > > + 	echo "graph_order rbytes obytes"
> > > +-	echo "graph_title $INTERFACE traffic"
> > > ++	if [ "X${DESCR}" != 'X' ]; then
> > > ++		echo "graph_title $INTERFACE (${DESCR}) traffic"
> > > ++	else
> > > ++		echo "graph_title $INTERFACE traffic"
> > > ++	fi
> > >    	echo 'graph_args --base 1000'
> > >    	echo 'graph_vlabel bits per ${graph_period} in (-) / out (+)'
> > >    	echo 'graph_category network'
> > > @@ -31,7 +48,7 @@
> > >    	echo 'rbytes.label received'
> > >            echo 'rbytes.type DERIVE'
> > >            echo 'rbytes.graph no'
> > > -@@ -69,9 +69,11 @@ fi
> > > +@@ -69,9 +75,11 @@ fi
> > >    if [ "$INTERFACE" = "aggregated" ]; then
> > >    	/usr/bin/netstat -i -b -n | grep -v '^lo' | awk '
> > >    BEGIN { rsum = 0; osum = 0; }
> > > @@ -46,7 +63,7 @@
> > >    	} else if (NF == 11) {
> > >    		if ($4 ~ /:/) {
> > >    			rsum += $7; osum += $10;
> > > -@@ -79,7 +81,7 @@ BEGIN { rsum = 0; osum = 0; }
> > > +@@ -79,7 +87,7 @@ BEGIN { rsum = 0; osum = 0; }
> > >    			rsum += $7; osum += $10;
> > >    		}
> > >    	} else { # NF == 12
> > > @@ -55,7 +72,7 @@
> > >    	}
> > >    }
> > >    END {
> > > -@@ -89,17 +91,20 @@ END {
> > > +@@ -89,17 +97,20 @@ END {
> > >    else
> > >    	/usr/bin/netstat -i -b -n -I $INTERFACE | awk '
> > > Index: net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in
> > > ===================================================================
> > > RCS file: /data/repos/openbsd-cvs/ports/net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in,v
> > > diff -u -r1.5 patch-plugins_node_d_openbsd_if_errcoll__in
> > > --- net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in	11 Mar 2022 19:46:25 -0000	1.5
> > > +++ net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in	11 Nov 2025 00:34:44 -0000
> > > @@ -13,7 +13,15 @@
> > >    #
> > >    # Any device found in /usr/bin/netstat can be monitored.
> > >    #
> > > -@@ -34,7 +34,7 @@ if [ "$1" = "suggest" ]; then
> > > +@@ -28,13 +28,15 @@ if [ "$1" = "autoconf" ]; then
> > > + 	fi
> > > + fi
> > > +
> > > ++DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> > > ++
> > > + if [ "$1" = "suggest" ]; then
> > > + 	if [ -x /sbin/ifconfig ]
> > > + 	then
> > >    		ifconfig -l | sed -Ee 's/[[:<:]](pfsync|faith|pf(log|sync)|lo|plip|carp|enc|fwe)[^ ]*//g' | xargs -n 1 echo
> > >    		exit 0
> > >    	elif [ -x /usr/bin/netstat ]; then
> > > @@ -22,7 +30,20 @@
> > >    		exit 0
> > >    	else
> > >    		exit 1
> > > -@@ -57,25 +57,15 @@ if [ "$1" = "config" ]; then
> > > +@@ -43,7 +45,11 @@ fi
> > > +
> > > + if [ "$1" = "config" ]; then
> > > + 	echo "graph_order ierrors oerrors collisions"
> > > +-	echo "graph_title $INTERFACE Errors & Collisions"
> > > ++	if [ "X${DESCR}" != 'X' ]; then
> > > ++		echo "graph_title $INTERFACE (${DESCR}) Errors & Collisions"
> > > ++	else
> > > ++		echo "graph_title $INTERFACE Errors & Collisions"
> > > ++	fi
> > > + 	echo 'graph_args --base 1000'
> > > + 	echo 'graph_vlabel events / ${graph_period}'
> > > + 	echo 'graph_category network'
> > > +@@ -57,25 +63,15 @@ if [ "$1" = "config" ]; then
> > >    	exit 0
> > >    fi;
> > > Index: net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in
> > > ===================================================================
> > > RCS file: /data/repos/openbsd-cvs/ports/net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in,v
> > > diff -u -r1.3 patch-plugins_node_d_openbsd_if_packets__in
> > > --- net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in	11 Mar 2022 19:46:25 -0000	1.3
> > > +++ net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in	11 Nov 2025 00:34:44 -0000
> > > @@ -1,7 +1,15 @@
> > >   Index: plugins/node.d.openbsd/if_packets_.in
> > >   --- plugins/node.d.openbsd/if_packets_.in.orig
> > >   +++ plugins/node.d.openbsd/if_packets_.in
> > > -@@ -37,7 +37,7 @@ if [ "$1" = "suggest" ]; then
> > > +@@ -31,13 +31,15 @@ if [ "$1" = "autoconf" ]; then
> > > + 	fi
> > > + fi
> > > +
> > > ++DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> > > ++
> > > + if [ "$1" = "suggest" ]; then
> > > + 	if [ -x /sbin/ifconfig ]
> > > + 	then
> > >    		ifconfig -l | sed -Ee 's/[[:<:]](pfsync|faith|pf(log|sync)|lo|plip|carp|enc|fwe)[^ ]*//g' | xargs -n 1 echo
> > >    		exit 0
> > >    	elif [ -x /usr/bin/netstat ]; then
> > > @@ -10,7 +18,20 @@
> > >    		exit 0
> > >    	else
> > >    		exit 1
> > > -@@ -69,9 +69,9 @@ fi
> > > +@@ -47,7 +49,11 @@ fi
> > > + if [ "$1" = "config" ]; then
> > > +
> > > + 	echo "graph_order rpackets opackets"
> > > +-	echo "graph_title $INTERFACE pps"
> > > ++	if [ "X${DESCR}" != 'X' ]; then
> > > ++		echo "graph_title $INTERFACE (${DESCR}) pps"
> > > ++	else
> > > ++		echo "graph_title $INTERFACE pps"
> > > ++	fi
> > > + 	echo 'graph_args --base 1000'
> > > + 	echo 'graph_vlabel packets per ${graph_period} in (-) / out (+)'
> > > + 	echo 'graph_category network'
> > > +@@ -69,9 +75,9 @@ fi
> > >    if [ "$INTERFACE" = "aggregated" ]; then
> > >    	/usr/bin/netstat -i -b -n | grep -v '^lo' | awk '
> > >    BEGIN { rsum = 0; osum = 0; }
> > > @@ -23,7 +44,7 @@
> > >    	} else if (NF == 11) {
> > >    		if ($4 ~ /:/) {
> > >    			rsum += $5; osum += $8;
> > > -@@ -79,7 +79,7 @@ BEGIN { rsum = 0; osum = 0; }
> > > +@@ -79,7 +85,7 @@ BEGIN { rsum = 0; osum = 0; }
> > >    			rsum += $4; osum += $8;
> > >    		}
> > >    	} else { # NF == 12
> > > @@ -32,7 +53,7 @@
> > >    	}
> > >    }
> > >    END {
> > > -@@ -89,10 +89,10 @@ END {
> > > +@@ -89,10 +95,10 @@ END {
> > >    else
> > >    	/usr/bin/netstat -i -b -n -I $INTERFACE | awk '
> > > @@ -46,7 +67,7 @@
> > >    	} else if (NF == 11) {
> > >    		if ($4 ~ /:/) {
> > >    			print "rpackets.value", $5;
> > > -@@ -103,7 +103,7 @@ else
> > > +@@ -103,7 +109,7 @@ else
> > >    		}
> > >    	} else { # NF == 12
> > >    		print "rpackets.value", $5;
> > > Index: net/munin/pkg/PLIST-main
> > > ===================================================================
> > > RCS file: /data/repos/openbsd-cvs/ports/net/munin/pkg/PLIST-main,v
> > > diff -u -r1.27 PLIST-main
> > > --- net/munin/pkg/PLIST-main	8 Nov 2022 11:16:58 -0000	1.27
> > > +++ net/munin/pkg/PLIST-main	11 Nov 2025 00:34:44 -0000
> > > @@ -111,6 +111,7 @@
> > >   libexec/munin/plugins/if_pps_
> > >   libexec/munin/plugins/ifx_concurrent_sessions_
> > >   libexec/munin/plugins/intr
> > > +libexec/munin/plugins/iostat_
> > >   @comment libexec/munin/plugins/ipac-ng
> > >   libexec/munin/plugins/ipmi_
> > >   libexec/munin/plugins/ipmi_sensor_
> 

> Index: net/munin/Makefile
> ===================================================================
> RCS file: /data/repos/openbsd-cvs/ports/net/munin/Makefile,v
> diff -u -p -r1.121 Makefile
> --- net/munin/Makefile	23 May 2024 05:47:01 -0000	1.121
> +++ net/munin/Makefile	11 Nov 2025 12:52:05 -0000
> @@ -9,6 +9,7 @@ GH_TAGNAME =	2.0.76
>  PKGNAME-main =	munin-node-${GH_TAGNAME}
>  PKGNAME-server =munin-server-${GH_TAGNAME}
>  CATEGORIES =	net
> +REVISION =	0
>  
>  HOMEPAGE =	https://munin-monitoring.org/
>  
> @@ -72,8 +73,8 @@ FAKE_FLAGS +=		HTMLDIR=${WRKINST}/${PREF
>  			DOCDIR=${WRKINST}/${PREFIX}/share/doc/munin \
>  			CONFDIR=${WRKINST}/${PREFIX}/share/examples/munin
>  
> -MUNIN_PLUGINS =		bgpd if_pps_ intr pf_changes pf_searches pf_states \
> -			sensors_ vmstat
> +MUNIN_PLUGINS =		bgpd if_pps_ intr iostat_ pf_changes pf_searches \
> +			pf_states sensors_ vmstat
>  
>  .for i in ${MUNIN_PLUGINS}
>  SUBST_LIST += ${FILESDIR}/$i ${WRKSRC}/plugins/node.d.openbsd/$i.in
> Index: net/munin/files/iostat_
> ===================================================================
> RCS file: net/munin/files/iostat_
> diff -N net/munin/files/iostat_
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ net/munin/files/iostat_	11 Nov 2025 12:52:05 -0000
> @@ -0,0 +1,92 @@
> +#!/bin/sh
> +# -*- sh -*-
> +#
> +# Wildcard-plugin to monitor disk IOs. To monitor a disk, link
> +# iostat_<disk> to this file. E.g.
> +#
> +#    ln -s /usr/local/libexec/munin/plugins/iostat_ \
> +#	/etc/munin/plugins/iostat_sd0
> +#
> +# ...will monitor sd0.
> +#
> +# To aggregate all disk traffic on the system, link iostat_aggregated
> +# to this file.
> +#
> +# Magic markers (optional - used by munin-config and some installation
> +# scripts):
> +#
> +#%# family=auto
> +#%# capabilities=autoconf suggest
> +
> +DISK=${0##*iostat_}
> +
> +
> +if [ "$1" = "autoconf" ]; then
> +	if [ -x /usr/sbin/iostat -a -x /sbin/sysctl ]; then
> +		echo yes
> +		exit 0
> +	else
> +		echo "no (/usr/sbin/iostat or /sbin/sysctl not found)"
> +		exit 0
> +	fi
> +fi
> +
> +if [ "$1" = "suggest" ]; then
> +	if [ -x /sbin/sysctl ]; then
> +		/sbin/sysctl hw.disknames | perl -ne '
> +			my @disks = split(/=|,/);
> +			for my $disk (@disks) {
> +				next if $disk =~ m{hw.disknames};
> +				my @d = split(/:/, $disk);
> +				print "$d[0]\n" if ($d[0] =~ m{[a-z]+\d+}
> +					and $d[1] =~ m/.{16}/);
> +			}
> +		'
> +		exit 0
> +	else
> +		exit 1
> +	fi
> +fi
> +
> +if [ "$1" = "config" ]; then
> +	echo 'multigraph bytes'
> +	echo "graph_title $DISK IO Bytes/s"
> +	echo 'graph_args --base 1024'
> +	echo 'graph_vlabel Bytes/s'
> +	echo 'graph_category disk'
> +	echo "graph_info This graph shows IO statistics (total Bytes/s) for $DISK disk."
> +	# echo 'graph_scale yes'
> +	echo "kb.info Data transfered (Bytes/s) on the $DISK disk."
> +	echo 'kb.label Bytes transfered'
> +        echo 'kb.type DERIVE'
> +        # echo 'kb.graph no'
> +        echo 'kb.cdef kb,1024,*'
> +	echo 'kb.min 0'
> +	echo ''
> +	echo 'multigraph xfr'
> +	echo "graph_title $DISK transfers/s"
> +	echo 'graph_args --base 1000'
> +	echo 'graph_vlabel xfr/s'
> +	echo 'graph_category disk'
> +	echo "graph_info This graph shows IO statistics (transfers/s) for $DISK disk."
> +	# echo 'graph_scale yes'
> +	echo "xfr.info Disk transfers (IOPs) on the $DISK disk."
> +        echo 'xfr.label Disk transfers'
> +	echo 'xfr.type DERIVE'
> +	# echo 'xfr.cdef xfr,8,*'
> +	echo 'xfr.min 0'
> +
> +	exit 0
> +fi
> +
> +/usr/sbin/iostat -ID $DISK | awk '
> +	/[[:digit:]]+[[:space:]][[:digit:]]+[[:space:]][[[:digit:]]|\.]+/ {
> +	if (NF == 3) {
> +		print "multigraph bytes";
> +		print "kb.value", $1;
> +		print "";
> +		print "multigraph xfr";
> +		print "xfr.value", $2;
> +	}
> +}'
> +
> Index: net/munin/patches/patch-plugins_node_d_openbsd_if__in
> ===================================================================
> RCS file: /data/repos/openbsd-cvs/ports/net/munin/patches/patch-plugins_node_d_openbsd_if__in,v
> diff -u -p -r1.7 patch-plugins_node_d_openbsd_if__in
> --- net/munin/patches/patch-plugins_node_d_openbsd_if__in	11 Mar 2022 19:46:25 -0000	1.7
> +++ net/munin/patches/patch-plugins_node_d_openbsd_if__in	11 Nov 2025 12:52:05 -0000
> @@ -13,7 +13,15 @@ Index: plugins/node.d.openbsd/if_.in
>   #
>   # To aggregate all network interfaces on the system (except lo0),
>   # link if_aggregated to this file.
> -@@ -37,7 +37,7 @@ if [ "$1" = "suggest" ]; then
> +@@ -31,13 +31,15 @@ if [ "$1" = "autoconf" ]; then
> + 	fi
> + fi
> + 
> ++DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> ++
> + if [ "$1" = "suggest" ]; then
> + 	if [ -x /sbin/ifconfig ]
> + 	then
>   		ifconfig -l | sed -Ee 's/[[:<:]](pfsync|faith|pf(log|sync)|lo|plip|carp|enc|fwe)[^ ]*//g' | xargs -n 1 echo
>   		exit 0
>   	elif [ -x /usr/bin/netstat ]; then
> @@ -22,7 +30,16 @@ Index: plugins/node.d.openbsd/if_.in
>   		exit 0
>   	else
>   		exit 1
> -@@ -51,7 +51,7 @@ if [ "$1" = "config" ]; then
> +@@ -47,11 +49,15 @@ fi
> + if [ "$1" = "config" ]; then
> + 
> + 	echo "graph_order rbytes obytes"
> +-	echo "graph_title $INTERFACE traffic"
> ++	if [ "X${DESCR}" != 'X' ]; then
> ++		echo "graph_title $INTERFACE (${DESCR}) traffic"
> ++	else
> ++		echo "graph_title $INTERFACE traffic"
> ++	fi
>   	echo 'graph_args --base 1000'
>   	echo 'graph_vlabel bits per ${graph_period} in (-) / out (+)'
>   	echo 'graph_category network'
> @@ -31,7 +48,7 @@ Index: plugins/node.d.openbsd/if_.in
>   	echo 'rbytes.label received'
>           echo 'rbytes.type DERIVE'
>           echo 'rbytes.graph no'
> -@@ -69,9 +69,11 @@ fi
> +@@ -69,9 +75,11 @@ fi
>   if [ "$INTERFACE" = "aggregated" ]; then
>   	/usr/bin/netstat -i -b -n | grep -v '^lo' | awk '
>   BEGIN { rsum = 0; osum = 0; }
> @@ -46,7 +63,7 @@ Index: plugins/node.d.openbsd/if_.in
>   	} else if (NF == 11) {
>   		if ($4 ~ /:/) {
>   			rsum += $7; osum += $10;
> -@@ -79,7 +81,7 @@ BEGIN { rsum = 0; osum = 0; }
> +@@ -79,7 +87,7 @@ BEGIN { rsum = 0; osum = 0; }
>   			rsum += $7; osum += $10;
>   		}
>   	} else { # NF == 12
> @@ -55,7 +72,7 @@ Index: plugins/node.d.openbsd/if_.in
>   	}
>   }
>   END {
> -@@ -89,17 +91,20 @@ END {
> +@@ -89,17 +97,20 @@ END {
>   
>   else
>   	/usr/bin/netstat -i -b -n -I $INTERFACE | awk '
> Index: net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in
> ===================================================================
> RCS file: /data/repos/openbsd-cvs/ports/net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in,v
> diff -u -p -r1.5 patch-plugins_node_d_openbsd_if_errcoll__in
> --- net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in	11 Mar 2022 19:46:25 -0000	1.5
> +++ net/munin/patches/patch-plugins_node_d_openbsd_if_errcoll__in	11 Nov 2025 12:52:05 -0000
> @@ -13,7 +13,15 @@ Index: plugins/node.d.openbsd/if_errcoll
>   #
>   # Any device found in /usr/bin/netstat can be monitored.
>   #
> -@@ -34,7 +34,7 @@ if [ "$1" = "suggest" ]; then
> +@@ -28,13 +28,15 @@ if [ "$1" = "autoconf" ]; then
> + 	fi
> + fi
> + 
> ++DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> ++
> + if [ "$1" = "suggest" ]; then
> + 	if [ -x /sbin/ifconfig ]
> + 	then
>   		ifconfig -l | sed -Ee 's/[[:<:]](pfsync|faith|pf(log|sync)|lo|plip|carp|enc|fwe)[^ ]*//g' | xargs -n 1 echo
>   		exit 0
>   	elif [ -x /usr/bin/netstat ]; then
> @@ -22,7 +30,20 @@ Index: plugins/node.d.openbsd/if_errcoll
>   		exit 0
>   	else
>   		exit 1
> -@@ -57,25 +57,15 @@ if [ "$1" = "config" ]; then
> +@@ -43,7 +45,11 @@ fi
> + 
> + if [ "$1" = "config" ]; then
> + 	echo "graph_order ierrors oerrors collisions"
> +-	echo "graph_title $INTERFACE Errors & Collisions"
> ++	if [ "X${DESCR}" != 'X' ]; then
> ++		echo "graph_title $INTERFACE (${DESCR}) Errors & Collisions"
> ++	else
> ++		echo "graph_title $INTERFACE Errors & Collisions"
> ++	fi
> + 	echo 'graph_args --base 1000'
> + 	echo 'graph_vlabel events / ${graph_period}'
> + 	echo 'graph_category network'
> +@@ -57,25 +63,15 @@ if [ "$1" = "config" ]; then
>   	exit 0
>   fi;
>   
> Index: net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in
> ===================================================================
> RCS file: /data/repos/openbsd-cvs/ports/net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in,v
> diff -u -p -r1.3 patch-plugins_node_d_openbsd_if_packets__in
> --- net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in	11 Mar 2022 19:46:25 -0000	1.3
> +++ net/munin/patches/patch-plugins_node_d_openbsd_if_packets__in	11 Nov 2025 12:52:05 -0000
> @@ -1,7 +1,15 @@
>  Index: plugins/node.d.openbsd/if_packets_.in
>  --- plugins/node.d.openbsd/if_packets_.in.orig
>  +++ plugins/node.d.openbsd/if_packets_.in
> -@@ -37,7 +37,7 @@ if [ "$1" = "suggest" ]; then
> +@@ -31,13 +31,15 @@ if [ "$1" = "autoconf" ]; then
> + 	fi
> + fi
> + 
> ++DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> ++
> + if [ "$1" = "suggest" ]; then
> + 	if [ -x /sbin/ifconfig ]
> + 	then
>   		ifconfig -l | sed -Ee 's/[[:<:]](pfsync|faith|pf(log|sync)|lo|plip|carp|enc|fwe)[^ ]*//g' | xargs -n 1 echo
>   		exit 0
>   	elif [ -x /usr/bin/netstat ]; then
> @@ -10,7 +18,20 @@ Index: plugins/node.d.openbsd/if_packets
>   		exit 0
>   	else
>   		exit 1
> -@@ -69,9 +69,9 @@ fi
> +@@ -47,7 +49,11 @@ fi
> + if [ "$1" = "config" ]; then
> + 
> + 	echo "graph_order rpackets opackets"
> +-	echo "graph_title $INTERFACE pps"
> ++	if [ "X${DESCR}" != 'X' ]; then
> ++		echo "graph_title $INTERFACE (${DESCR}) pps"
> ++	else
> ++		echo "graph_title $INTERFACE pps"
> ++	fi
> + 	echo 'graph_args --base 1000'
> + 	echo 'graph_vlabel packets per ${graph_period} in (-) / out (+)'
> + 	echo 'graph_category network'
> +@@ -69,9 +75,9 @@ fi
>   if [ "$INTERFACE" = "aggregated" ]; then
>   	/usr/bin/netstat -i -b -n | grep -v '^lo' | awk '
>   BEGIN { rsum = 0; osum = 0; }
> @@ -23,7 +44,7 @@ Index: plugins/node.d.openbsd/if_packets
>   	} else if (NF == 11) {
>   		if ($4 ~ /:/) {
>   			rsum += $5; osum += $8;
> -@@ -79,7 +79,7 @@ BEGIN { rsum = 0; osum = 0; }
> +@@ -79,7 +85,7 @@ BEGIN { rsum = 0; osum = 0; }
>   			rsum += $4; osum += $8;
>   		}
>   	} else { # NF == 12
> @@ -32,7 +53,7 @@ Index: plugins/node.d.openbsd/if_packets
>   	}
>   }
>   END {
> -@@ -89,10 +89,10 @@ END {
> +@@ -89,10 +95,10 @@ END {
>   
>   else
>   	/usr/bin/netstat -i -b -n -I $INTERFACE | awk '
> @@ -46,7 +67,7 @@ Index: plugins/node.d.openbsd/if_packets
>   	} else if (NF == 11) {
>   		if ($4 ~ /:/) {
>   			print "rpackets.value", $5;
> -@@ -103,7 +103,7 @@ else
> +@@ -103,7 +109,7 @@ else
>   		}
>   	} else { # NF == 12
>   		print "rpackets.value", $5;
> Index: net/munin/patches/patch-plugins_node_d_openbsd_if_pps__in
> ===================================================================
> RCS file: net/munin/patches/patch-plugins_node_d_openbsd_if_pps__in
> diff -N net/munin/patches/patch-plugins_node_d_openbsd_if_pps__in
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ net/munin/patches/patch-plugins_node_d_openbsd_if_pps__in	11 Nov 2025 12:52:05 -0000
> @@ -0,0 +1,25 @@
> +Index: plugins/node.d.openbsd/if_pps_.in
> +--- plugins/node.d.openbsd/if_pps_.in.orig
> ++++ plugins/node.d.openbsd/if_pps_.in
> +@@ -31,6 +31,8 @@ if [ "$1" = "autoconf" ]; then
> + 	fi
> + fi
> + 
> ++DESCR=$(/sbin/ifconfig ${INTERFACE} | /usr/bin/awk -F ': ' '/description:(.*)$/ {print substr($2, 1, 12);}')
> ++
> + if [ "$1" = "suggest" ]; then
> + 	if [ -x /usr/bin/netstat ]; then
> + 		netstat -i -n | sed -n -e '/^faith/d' -e '/^lo[0-9]/d' -e '/^pflog/d' -e '/<Link>/s/\** .*//p'
> +@@ -42,7 +44,11 @@ fi
> + 
> + if [ "$1" = "config" ]; then
> + 	echo "graph_order rpkt opkt"
> +-	echo "graph_title $INTERFACE packets"
> ++	if [ "X${DESCR}" != 'X' ]; then
> ++		echo "graph_title $INTERFACE (${DESCR}) packets"
> ++	else
> ++		echo "graph_title $INTERFACE packets"
> ++	fi
> + 	echo 'graph_args --base 1000'
> + 	echo 'graph_vlabel packets/${graph_period} in (-) out (+)'
> + 	echo 'graph_category network'
> Index: net/munin/pkg/PLIST-main
> ===================================================================
> RCS file: /data/repos/openbsd-cvs/ports/net/munin/pkg/PLIST-main,v
> diff -u -p -r1.27 PLIST-main
> --- net/munin/pkg/PLIST-main	8 Nov 2022 11:16:58 -0000	1.27
> +++ net/munin/pkg/PLIST-main	11 Nov 2025 12:52:05 -0000
> @@ -111,6 +111,7 @@ libexec/munin/plugins/if_packets_
>  libexec/munin/plugins/if_pps_
>  libexec/munin/plugins/ifx_concurrent_sessions_
>  libexec/munin/plugins/intr
> +libexec/munin/plugins/iostat_
>  @comment libexec/munin/plugins/ipac-ng
>  libexec/munin/plugins/ipmi_
>  libexec/munin/plugins/ipmi_sensor_