mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-21 18:41:03 +00:00
Initial Commit of FreeBSD NFS Plugins
This is an initial commit of FreeBSD NFS plugins for the Munin monitoring platform. The NFS plugins for Munin depend on the /proc filesystem in Linux for statistics which does not exist in FreeBSD by default. While one can add the linproc package to their installation to emulate this functionality, I felt it would be better to write plugins that made use of native tools. I'm leveraging the nfsstat command to create these plugins. I'm sure there is a better primary data source in FreeBSD to gather this output from but for my purposes, using nfsstat is adequate and acceptable. Unfortunately this means if the output of the nfsstat command changes due to updates, these plugins will likely report inaccurate data. These are the days of our lives, as they say. Someone with appropriate levels of FreeBSD knowledge can probably improve these plugins trivially. I'm specifically targeting FreeNAS/NAS4Free, but the code should work on any FreeBSD system with minimal package additions. Installing munin on FreeNAS is not supported in general, but it's easy enough to do and I wanted it monitored, ergo we are here.
This commit is contained in:
parent
137cbf74b6
commit
960122b96c
2 changed files with 66 additions and 0 deletions
62
plugins/nfs-freebsd/nfsd
Executable file
62
plugins/nfs-freebsd/nfsd
Executable file
|
@ -0,0 +1,62 @@
|
|||
#!/bin/bash
|
||||
# -*- sh -*-
|
||||
|
||||
: << =cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
nfsd - Plugin to monitor NFS server activity on FreeBSD
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
No configuration
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
Plugin created by Adam Michel, based on work by Alexandre Dupouy, with the assistance of Mike Fedyk
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
GPLv2
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=cut
|
||||
|
||||
# This is where nfsstat lives
|
||||
NFSSTAT=/usr/bin/nfsstat
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -x "$NFSSTAT" ]; then
|
||||
echo yes
|
||||
exit 0
|
||||
else
|
||||
echo "no (no $NFSSTAT)"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
labels=`$NFSSTAT -s | grep -iv "[0-9]" | grep -v ":" | sed 's/Server\ //' | tr '\n' ' ' | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30}' | tr '[A-Z]' '[a-z]'`
|
||||
values=`$NFSSTAT -s | grep -i "[0-9]" | tr '\n' ' ' | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30}'`
|
||||
|
||||
larray=( $labels )
|
||||
varray=( $values )
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
|
||||
echo 'graph_title NFS Server'
|
||||
echo 'graph_args --base 1000 -l 0'
|
||||
echo 'graph_vlabel requests / ${graph_period}'
|
||||
echo 'graph_total total'
|
||||
echo 'graph_category NFS'
|
||||
for a in $labels; do echo "$a.label $a" ; echo "$a.type DERIVE"; echo "$a.min 0"; done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for i in {0..29}; do
|
||||
label=${larray[$i]}
|
||||
value=${varray[$i]}
|
||||
echo "$label.value $value"
|
||||
done
|
Loading…
Add table
Add a link
Reference in a new issue