#!@@GOODSH@@ # # 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) # # Customizations. 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 # # Contributed by # #%# family=auto #%# capabilities=autoconf 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 CPU' echo "graph_args --base 1000 --lower-limit 0 --rigid --upper-limit $graphlimit" echo 'graph_vlabel %' echo 'graph_scale no' 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}'