- Repository
- Munin (master)
- Last change
- 2018-10-10
- Graph Categories
- Family
- auto
- Capabilities
- Keywords
- Language
- Bash
- License
- GPL-2.0-only
sar_cpu
Name
cpu - Plugin to monitor CPU usage
HP-UX port from original cpu plugin, here using sar instead of Solaris' kstat. Also note that kstat as well as Linux /proc/stat use counters (of cpu cycles?), whereas sar merely displays percentages (hopefully this comes close enough)
Configuration
Your may adapt the following parameters to your needs. The values shown here are the defaults
[sar_cpu]
env.SYSWPCT 30 # System percentage to warn at
env.SYSCPCT 50 # System percentage where we're critical
env.USRWPCT 80 # User percentage to warn at
env.scaleto100 1 # Graph in percent rather than absolute ncpu
Author
Contributed by <ralph dot grothe at itdz minus berlin dot de>
License
GPLv2
Magic Markers
#%# family=auto
#%# capabilities=autoconf
#!/usr/local/bin/bash
: << =cut
=head1 NAME
cpu - Plugin to monitor CPU usage
HP-UX port from original cpu plugin, here using sar instead of
Solaris' kstat. Also note that kstat as well as Linux /proc/stat
use counters (of cpu cycles?), whereas sar merely displays
percentages (hopefully this comes close enough)
=head1 CONFIGURATION
Your may adapt the following parameters to your needs.
The values shown here are the defaults
[sar_cpu]
env.SYSWPCT 30 # System percentage to warn at
env.SYSCPCT 50 # System percentage where we're critical
env.USRWPCT 80 # User percentage to warn at
env.scaleto100 1 # Graph in percent rather than absolute ncpu
=head1 AUTHOR
Contributed by <ralph dot grothe at itdz minus berlin dot de>
=head1 LICENSE
GPLv2
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
PATH=/usr/bin:/usr/sbin
if [[ $1 = autoconf ]]; then
if uname -s|grep -qEi 'hp-?ux'; then
echo yes
exit 0
else
echo "no (This plugin is meant to be run under HP-UX)"
exit 0
fi
fi
: "${SYSWPCT:=30}"
: "${SYSCPCT:=50}"
: "${USRWPCT:=80}"
: "${scaleto100:=1}"
graphlimit=$percent
case $scaleto100 in (1|y*|Y*) graphlimit=100;; esac
if [[ $1 = config ]]; then
typeset -i percent=100 ncpu=$(/usr/sbin/ioscan -kd processor|grep -c processor)
(( ncpu )) && ((percent*=ncpu))
cpumax=$graphlimit
# Indifferently carried over these crude threshold assumptions
# from the original cpu plugin; should better be passed as envs
# via plugins.conf
syswarn=$((cpumax * SYSWPCT / 100))
syscrit=$((cpumax * SYSCPCT / 100))
usrwarn=$((cpumax * USRWPCT / 100))
echo 'graph_title CPU usage'
echo 'graph_order system user waitio idle'
echo 'graph_category system'
echo "graph_args --base 1000 --lower-limit 0 --rigid --upper-limit $graphlimit"
echo 'graph_vlabel %'
echo 'graph_scale no'
# shellcheck disable=SC2016
echo 'graph_period ${graph_period}'
echo 'system.label system'
echo 'system.draw AREA'
echo 'system.type GAUGE'
echo 'system.min 0'
echo "system.max $cpumax"
echo "system.warning $syswarn"
echo "system.critical $syscrit"
echo 'user.label user'
echo 'user.draw STACK'
echo 'user.type GAUGE'
echo 'user.min 0'
echo "user.max $cpumax"
echo "user.warning $usrwarn"
echo "waitio.max $cpumax"
echo 'waitio.label waitio'
echo 'waitio.draw STACK'
echo 'waitio.type GAUGE'
echo 'waitio.min 0'
echo 'idle.label idle'
echo 'idle.draw STACK'
echo 'idle.type GAUGE'
echo 'idle.min 0'
echo "idle.max $cpumax"
# this is kind of daft extrapolation to multi-cpu scaling from
# sar's average
if [[ $cpumax != 100 ]]; then
echo "system.cdef system,$ncpu,*"
echo "user.cdef user,$ncpu,*"
echo "waitio.cdef waitio,$ncpu,*"
echo "idle.cdef idle,$ncpu,*"
fi
exit 0
fi
sar -u 2 2 |\
awk '/verage/{printf"user.value %d\nsystem.value %d\nwaitio.value %d\nidle.value %d\n",$2,$3,$4,$5}'