- Repository
- Munin (master)
- Last change
- 2018-08-17
- Graph Categories
- Family
- auto
- Capabilities
- Keywords
- Language
- Bash
- License
- GPL-2.0-only
- Authors
vserver_loadavg
Name
vserver_loadavg - Plugin to graph vserver load average
Configuration
The following configuration variables are used by this plugin
[vserver_loadavg]
env.vservers - A list of vservers to include in the graph
This plugin should run as the “root” user
Default Configuration
The default configuration will graph all vservers.
[vserver_loadavg]
env.vservers all
Authors
Copyright (C) 2008 Micah Anderson
Copyright (C) 2007 Andrei Morgan
License
GNU GPLv2
Bugs
None known.
Magic Markers
#%# family=auto
#%# capabilities=autoconf
#!/bin/bash
: <<'=cut'
=head1 NAME
vserver_loadavg - Plugin to graph vserver load average
=head1 CONFIGURATION
The following configuration variables are used by this plugin
[vserver_loadavg]
env.vservers - A list of vservers to include in the graph
This plugin should run as the "root" user
=head2 DEFAULT CONFIGURATION
The default configuration will graph all vservers.
[vserver_loadavg]
env.vservers all
=head1 AUTHORS
Copyright (C) 2008 Micah Anderson
Copyright (C) 2007 Andrei Morgan
=head1 LICENSE
GNU GPLv2
=begin comment
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2 dated June,
1991.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
=end comment
=head1 BUGS
None known.
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
# If run with the "autoconf"-parameter, give our opinion on whether we
# should be run on this system or not. This is optional, and only used by
# munin-node-config.
if [ "$1" = "autoconf" ]; then
if [ -r /proc/virtual/info ]; then
echo yes
else
echo "no (/proc/virtual/info not found)"
fi
exit 0
fi
# if vservers are specified, use them; the default is to use all.
VSERVERS="${vservers:-}"
# shellcheck disable=SC2207
INFO=($(sed 's/.*:\t//' /proc/virtual/info 2>/dev/null || echo '<none>'))
KCIN=$(( 16#${INFO[2]} ))
# If this is 1, then VCI_SPACES is present in the kernel (new in 2.6.19)
if [ $(( (KCIN >> 10) & 1 )) -eq 1 ]
then
NAMELOC="nsproxy"
else
NAMELOC="cvirt"
fi
if [ -z "$VSERVERS" ] ; then
XIDS=$(find /proc/virtual/* -type d -exec basename {} \;)
else
# it's really more performant to specify vservers by ids or not at all
XIDS=""
for i in $VSERVERS ; do
if [ -d "/proc/virtual/$i" ] ; then
XIDS="${XIDS}${i} "
else
# shellcheck disable=SC2044
for j in $(find /proc/virtual/* -type d -exec basename {} \;); do
if [ "$i" = "$(grep "NodeName" "/proc/virtual/$j/$NAMELOC" | cut -f 2)" ] ; then
XIDS="${XIDS}${j} "
fi
done
fi
done
fi
# If run with the "config"-parameter, give out information on how the
# graphs should look.
if [ "$1" = "config" ]; then
# The title of the graph
echo 'graph_title loadavg of vserver'
# Arguments to "rrdtool graph". In this case, tell it that the
# lower limit of the graph is '0', and that 1k=1000 (not 1024)
echo 'graph_args --base 1000 -l 0'
# We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of
# 420 milliload)
echo 'graph_scale no'
# The Y-axis label
echo 'graph_vlabel loadavg'
# graph information for the main table
echo 'graph_info Shows 5-minute load average per vserver.'
# Graph category. Defaults to 'other'
echo 'graph_category virtualization'
for xid in $XIDS ; do
# Specify the vservers
LABEL=$(grep "NodeName" "/proc/virtual/$xid/$NAMELOC" | cut -f 2)
NAME=$(echo "$LABEL" | cut -d. -f1 | tr '-' '_')
echo "$NAME.label $LABEL: load average"
echo "$NAME.info $NAME average load for the past 5 minutes"
done
# Last, if run with the "config"-parameter, quit here (don't
# display any data)
exit 0
fi
for xid in $XIDS ; do
LABEL=$(grep "NodeName" "/proc/virtual/$xid/$NAMELOC" | cut -f 2)
NAME=$(echo "$LABEL" | cut -d. -f1 | tr '-' '_')
echo -n "$NAME.value "
grep "loadavg:" "/proc/virtual/$xid/cvirt" | cut -d ' ' -f 2
done