mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-13 06:23:45 -04:00
145 lines
3.8 KiB
Bash
Executable File
145 lines
3.8 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# 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.2 2006/06/08 18:59:26 he
|
|
# Remove installation of the documentation from this package, to be
|
|
# provided by the soon-to-be-committed munin-doc package.
|
|
#
|
|
# Other minor changes:
|
|
# o Remove comented-out bits from package Makefile
|
|
# o Re-ordered variables reported by NetBSD's cpu plugin script
|
|
# o Use shorter legend text in NetBSD's interrupts plugin script
|
|
#
|
|
# Bumped package revision.
|
|
#
|
|
# 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 1
|
|
fi
|
|
else
|
|
echo no
|
|
exit 1
|
|
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 idle nice'
|
|
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 '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"
|
|
|
|
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"
|
|
|
|
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 "idle.value " a[16];
|
|
print "nice.value " a[7];
|
|
}'
|
|
|
|
|