iostat
Sadly there is no documentation for this plugin.
#!@@GOODSH@@
# -*- sh -*-
#
# Original script (NetBSD) by he
#
# Adapted to FreeBSD 6.2 / PC-BSD 1.4 by Pierre Bauduin (pierre@baudu.in)
# Version 0.0.2
# October 24 2007
#
# Plugin for watching io-bound traffic (in bytes) on disks.
#
# Parameters:
#
# config (required)
# autoconf (optional - used by munin-config)
#
# Magick markers (optional - used by munin-config and som installation
# scripts):
#%# family=auto
#%# capabilities=autoconf
# autoconf
if [ "$1" = "autoconf" ]; then
# Is the iostat executable there at least ?
if [ -x /usr/sbin/iostat ]; then
if iostat -x > /dev/null 2>&1; then
echo yes
exit 0
else
echo "no (iostat too old, does not yet support -x option)"
exit 0
fi
else
echo "no (no /usr/sbin/iostat executable)"
exit 0
fi
fi
# config
if [ "$1" = "config" ]; then
echo 'graph_title IOstat by bytes'
echo 'graph_args --base 1024 -l 0'
echo 'graph_vlabel MB per ${graph_period} read+written'
echo 'graph_category disk'
echo 'graph_info This graph shows the I/O to and from block devices'
# We don't give a XXXX about device or extended
drives=`/usr/sbin/iostat -I -x |
awk '/^device/ { next; } // { print $1; }' |
awk '/extended/ { next; } // { print $1; }'`
echo -n 'graph_order'
for d in $drives; do
echo -n ' '${d}'_read '${d}'_write'
done
echo
for d in $drives; do
echo "${d}_read.label ${d}"
echo "${d}_read.type DERIVE"
echo "${d}_read.max 2000"
echo "${d}_read.min 0"
echo "${d}_read.graph no"
echo "${d}_write.label ${d}"
echo "${d}_write.info I/O on device ${d}"
echo "${d}_write.type DERIVE"
echo "${d}_write.max 2000"
echo "${d}_write.min 0"
echo "${d}_write.negative ${d}_read"
done
exit 0
fi
# This is the main part of the script, basically it calls
# /usr/sbin/iostat and processes its output
# We don't give a XXXX about device or extended
# On NetBSD the kilobyte read and kilobyte write are columns 5 and 9
# On FreeBSD the kilobyte read and kilobyte write are columns 4 and 5
/usr/sbin/iostat -I -x |
awk '/^device/ { next; } //' |
awk '/extended/ { next; } //' |
awk ' {
print $1 "_read.value " int($4);
print $1 "_write.value " int($5);}'