Download raw body.
net/munin : add iostat plugin
On 1/25/26 12:25 PM, Caspar Schutijser wrote:
> Hi,
>
> On Sat, Jan 24, 2026 at 07:05:26PM +0100, Olivier Cherrier wrote:
>> On 1/23/26 12:09 PM, Olivier Cherrier wrote:
>>> On 1/22/26 5:01 PM, Job Snijders wrote:
>>>> On Wed, 14 Jan 2026 at 16:31, Job Snijders <job@openbsd.org
>>>> <mailto:job@openbsd.org>> wrote:
>>>>
>>>> Anyway, I'm not sure we should keep both 'iostat_' and 'iostat'
>>>> around (since
>>>> they are intended do the same thing)
>>>>
>>>>
>>>>
>>>> How shall we proceed?
>>>>
>>>> Kind regards,
>>>>
>>>> Job
>> Hi,
>>
>> Please find attached a patch to bump net/munin with the new iostat plugin.
>> Since new file, iostat is not in the diff. It needs to be cvs added manually
>> into "files".
>> iostat_ one can be delete from the tree.
>>
>> Is it ok ?
>>
>> Thanks,
>> Best.
>>
>> Olivier Cherrier
>> Phone: +352691570680
>> mailto:oc@symacx.com
>>
>> Index: net/munin/Makefile
>> ===================================================================
>> RCS file: /data/repos/openbsd-cvs/ports/net/munin/Makefile,v
>> diff -u -r1.122 Makefile
>> --- net/munin/Makefile 17 Nov 2025 07:01:24 -0000 1.122
>> +++ net/munin/Makefile 24 Jan 2026 17:57:07 -0000
>> @@ -9,7 +9,7 @@
>> PKGNAME-main = munin-node-${GH_TAGNAME}
>> PKGNAME-server =munin-server-${GH_TAGNAME}
>> CATEGORIES = net
>> -REVISION = 0
>> +REVISION = 1
>>
>> HOMEPAGE = https://munin-monitoring.org/
>>
>> @@ -73,7 +73,7 @@
>> DOCDIR=${WRKINST}/${PREFIX}/share/doc/munin \
>> CONFDIR=${WRKINST}/${PREFIX}/share/examples/munin
>>
>> -MUNIN_PLUGINS = bgpd if_pps_ intr iostat_ pf_changes pf_searches \
>> +MUNIN_PLUGINS = bgpd if_pps_ intr iostat pf_changes pf_searches \
>> pf_states sensors_ vmstat
>>
>> .for i in ${MUNIN_PLUGINS}
>> @@ -86,7 +86,6 @@
>> cp -p ${WRKSRC}/plugins/node.d.netbsd/memory.in ${WRKSRC}/plugins/node.d.openbsd
>> ${SUBST_CMD} -m 444 -c ${SUBST_LIST}
>> chmod -R +x ${WRKSRC}/plugins/node.d.openbsd
>> - rm ${WRKSRC}/plugins/node.d.openbsd/iostat.in # not yet ported
>> rm ${WRKSRC}/plugins/node.d.openbsd/swap.in # we have no in/out fields
>>
>> # Fixup hardcoded paths in plugins to use TRUEPREFIX/LOCALBASE as appropriate,
>> Index: net/munin/pkg/PLIST-main
>> ===================================================================
>> RCS file: /data/repos/openbsd-cvs/ports/net/munin/pkg/PLIST-main,v
>> diff -u -r1.28 PLIST-main
>> --- net/munin/pkg/PLIST-main 17 Nov 2025 07:01:25 -0000 1.28
>> +++ net/munin/pkg/PLIST-main 24 Jan 2026 17:57:07 -0000
>> @@ -111,7 +111,7 @@
>> libexec/munin/plugins/if_pps_
>> libexec/munin/plugins/ifx_concurrent_sessions_
>> libexec/munin/plugins/intr
>> -libexec/munin/plugins/iostat_
>> +libexec/munin/plugins/iostat
>> @comment libexec/munin/plugins/ipac-ng
>> libexec/munin/plugins/ipmi_
>> libexec/munin/plugins/ipmi_sensor_
>> #!/bin/sh
>> # -*- sh -*-
>> # Copyright (c) 2026 Job Snijders <job@bsd.nl>
>> #
>> # Permission to use, copy, modify, and distribute this software for any
>> # purpose with or without fee is hereby granted, provided that the above
>> # copyright notice and this permission notice appear in all copies.
>> #
>> # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
>> # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
>> # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
>> # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
>> # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
>> # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
>> # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
>> #
>> # Munin multigraph plugin to monitor disk activity on OpenBSD systems.
>> #
>> # Magic markers:
>> #
>> #%# family=auto
>> #%# capabilities=autoconf
>>
>> if [ "$1" = "autoconf" ]; then
>> if [ -x /usr/sbin/iostat -a -x /sbin/sysctl ]; then
>> echo yes
>> exit 0
>> else
>> echo no
>> exit 0
>> fi
>> fi
>>
>> DISKS=$(/sbin/sysctl hw.disknames \
>> | /usr/bin/cut -d= -f2 | /usr/bin/tr ',' '\n' \
>> | /usr/bin/grep -v ':$' | /usr/bin/cut -d: -f1)
> Would it make sense to use "sysctl -n" and then remove the first use
> of "cut"? I can't think of a downside.
>
> Caspar
>
Why not. Not a big change.
New file attached.
Best,
Olivier Cherrier
Phone: +352691570680
mailto:oc@symacx.com
#!/bin/sh
# -*- sh -*-
# Copyright (c) 2026 Job Snijders <job@bsd.nl>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
# Munin multigraph plugin to monitor disk activity on OpenBSD systems.
#
# Magic markers:
#
#%# family=auto
#%# capabilities=autoconf
if [ "$1" = "autoconf" ]; then
if [ -x /usr/sbin/iostat -a -x /sbin/sysctl ]; then
echo yes
exit 0
else
echo no
exit 0
fi
fi
DISKS=$(/sbin/sysctl -n hw.disknames \
| /usr/bin/tr ',' '\n' | /usr/bin/grep -v ':$' | /usr/bin/cut -d: -f1)
if [ "$1" = "config" ]; then
echo 'multigraph iostat_throughput'
echo 'graph_title Disk throughput per device'
echo 'graph_args --base 1024'
echo 'graph_vlabel Bytes/${graph_period}'
echo 'graph_category disk'
echo 'graph_info This graph shows averaged throughput in bytes per device.'
echo ''
for DISK in ${DISKS}; do
echo "${DISK}_kb.label $DISK"
echo "${DISK}_kb.cdef ${DISK}_kb,1024,*"
echo "${DISK}_kb.type DERIVE"
echo "${DISK}_kb.min 0"
echo "${DISK}_kb.draw LINE1"
echo ''
done
for DISK in ${DISKS}; do
echo "multigraph iostat_throughput.${DISK}"
echo "graph_title Disk throughput for ${DISK}"
echo 'graph_args --base 1024'
echo 'graph_category disk'
echo 'graph_info This graph shows disk throughput in bytes.'
echo ''
echo 'kb.label Bytes'
echo 'kb.cdef kb,1024,*'
echo 'kb.type DERIVE'
echo 'kb.min 0'
echo 'kb.draw LINE1'
echo ''
done
echo 'multigraph iostat_iops'
echo 'graph_title Disk IOs per device'
echo 'graph_vlabel IOs/${graph_period}'
echo 'graph_args --base 1000'
echo 'graph_category disk'
echo 'graph_info This graph shows averaged IO operations per device.'
echo ''
for DISK in ${DISKS}; do
echo "${DISK}_xfr.label ${DISK}"
echo "${DISK}_xfr.type DERIVE"
echo "${DISK}_xfr.min 0"
echo "${DISK}_xfr.draw LINE1"
echo ''
done
for DISK in ${DISKS}; do
echo "multigraph iostat_iops.${DISK}"
echo "graph_title Disk IOs for ${DISK}"
echo 'graph_args --base 1000'
echo 'graph_category disk'
echo 'graph_info This graph shows the number of IOPS.'
echo ''
echo 'xfr.label IO/sec'
echo 'xfr.type DERIVE'
echo 'xfr.min 0'
echo 'xfr.draw LINE1'
echo ''
done
# TODO: implement tracking IO busy as a percentage.
# To convert 'Seconds spent in disk activity' into a busy percentage, state
# tracking via $MUNIN_PLUGSTATE or $MUNIN_STATEFILE should be implemented.
# CDEF $cur,$prev,-,300,/,100,*
exit 0
fi
echo 'multigraph iostat_throughput'
for DISK in $DISKS; do
echo -n "${DISK}_kb.value "
/usr/sbin/iostat -ID "${DISK}" | tail -1 | /usr/bin/awk '{ print $1 }'
done
echo ''
echo 'multigraph iostat_iops'
for DISK in $DISKS; do
echo -n "${DISK}_xfr.value "
/usr/sbin/iostat -ID "${DISK}" | tail -1 | /usr/bin/awk '{ print $2 }'
done
echo ''
for DISK in ${DISKS}; do
/usr/sbin/iostat -ID "${DISK}" | tail -1 | /usr/bin/awk '
{
print "multigraph iostat_throughput.@DISK@";
print "kb.value", $1;
print "";
print "multigraph iostat_iops.@DISK@";
print "xfr.value", $2;
print "";
}' | /usr/bin/sed "s/@DISK@/${DISK}/"
done
net/munin : add iostat plugin