#!@@GOODSH@@ # # Plugin to monitor CPU usage. # # Usage: Place in /etc/munin/node.d/ (or link it there using ln -s) # # Parameters understood: # # config (required) # autoconf (optional - used by munin-config) # # $Log: cpu.in,v $ # Revision 1.1.1.1 2006/06/04 20:53:57 he # Import the client version of the Munin system monitoring/graphing # tool -- project homepage is at http://munin.sourceforge.net/ # # This package has added support for NetBSD, via a number of new plugin # scripts where specific steps needs to be taken to collect information. # # I also modified the ntp_ plugin script to make it possible to not # plot the NTP poll delay, leaving just jitter and offset, which IMO # produces a more telling graph. # # # # Magic markers - optional - used by installation scripts and # munin-config: # #%# family=auto #%# capabilities=autoconf if [ "$1" = "autoconf" ]; then if [ -x /sbin/sysctl ]; then /sbin/sysctl kern.cp_time > /dev/null if [ $? = "0" ]; then echo yes exit 0 else echo no exit 0 fi else echo no exit 0 fi fi if [ "$1" = "config" ]; then STATUNITS=`/sbin/sysctl -n kern.clockrate | cut -f15 -d' '` PERCENT=`/sbin/sysctl -n hw.ncpu | awk '{print ($1)*100}'` NCPU=`/sbin/sysctl -n hw.ncpu` if [ "$scaleto100" = yes ]; then CDEF="${STATUNITS},/,100,*,$NCPU,/" PERCENT=100 else CDEF="${STATUNITS},/,100,*" PERCENT=$(($NCPU*100)) fi # SYSWARNING=$PERCENT*30/100 # SYSCRITICAL=$PERCENT*50/100 # INTWARNING=$PERCENT*80/100 # USRWARNING=$PERCENT*80/100 echo 'graph_title CPU usage (' $NCPU ' CPUs)' echo 'graph_order system interrupt user nice idle' echo "graph_args --base 1000 -r --lower-limit 0 --upper-limit $PERCENT " echo 'graph_vlabel %' echo 'graph_scale no' echo 'graph_info This graph shows how CPU time is spent.' echo 'graph_category system' echo 'graph_period second' echo 'system.label system' echo 'system.draw AREA' echo 'system.max 5000' echo 'system.type DERIVE' echo 'system.min 0' # echo "system.warning $SYSWARNING" # echo "system.critical $SYSCRITICAL" echo 'system.info CPU time spent by the kernel in system activities' echo "system.cdef system,$CDEF" echo 'interrupt.label interrupt' echo 'interrupt.draw STACK' echo 'interrupt.max 5000' # echo "interrupt.warning $INTWARNING" echo 'interrupt.type DERIVE' echo 'interrupt.min 0' echo 'interrupt.info CPU time spent by the kernel processing interrupts' echo "interrupt.cdef interrupt,$CDEF" echo 'user.label user' echo 'user.draw STACK' echo 'user.max 5000' # echo "user.warning $USRWARNING" echo 'user.type DERIVE' echo 'user.info CPU time spent by normal programs and daemons' echo 'user.min 0' echo "user.cdef user,$CDEF" echo 'nice.label nice' echo 'nice.draw STACK' echo 'nice.max 5000' echo 'nice.type DERIVE' echo 'nice.info CPU time spent by nice(1)d programs' echo 'nice.min 0' echo "nice.cdef nice,$CDEF" echo 'idle.label idle' echo 'idle.draw STACK' echo 'idle.max 5000' echo 'idle.type DERIVE' echo 'idle.info Idle CPU time' echo 'idle.min 0' echo "idle.cdef idle,$CDEF" exit 0 fi /sbin/sysctl kern.cp_time | awk '{ gsub(",", ""); split($0, a); print "system.value " a[10]; print "interrupt.value " a[13]; print "user.value " a[4]; print "nice.value " a[7]; print "idle.value " a[16]; }'