diff --git a/plugins/other/process_cpushare b/plugins/other/process_cpushare new file mode 100755 index 00000000..46ca5a97 --- /dev/null +++ b/plugins/other/process_cpushare @@ -0,0 +1,78 @@ +#!/bin/sh +# +# Plugin to monitor CPU share, for a selected set of processes. Tested on Linux. +# +# Author: Stefan Osterlitz +# Based on work of Erik Cederstrand +# +# Usage: Place in /usr/local/etc/munin/plugins/ (or link it there using ln -s) +# Add this to your /ur/local/etc/munin/plugin-conf.d/plugins.conf: + +# [process_*] +# env.procs httpd java +# +# httpd and java being a list of the processes to monitor. You may use regex expressions for grep, but watch their conversion to field names. +# ps options may vary. + +# +# Parameters understood: +# +# config (required) +# autoconf (optional - used by munin-config) +# + +#%# family=auto +#%# capabilities=autoconf + + + +if [ "$1" = "autoconf" ] ; then + if [ -n "$procs" ] ; then + echo "yes" + else + echo "\$procs not defined." + fi + exit +fi + +for proc in $procs; do + cproc=${proc//[^A-Za-z0-9_]/_} + cprocs+=" $cproc" +done; + +if [ "$1" = "config" ] ; then + echo "graph_args --base 1000 -r --lower-limit 0"; + echo "graph_title CPU usage, by process"; + echo "graph_category processes"; + echo "graph_info This graph shows CPU usage, for monitored processes."; + echo 'graph_vlabel %' + echo 'graph_scale no' + echo 'graph_period second' + echo "graph_order $cprocs" + + for proc in $procs; do + cproc=${proc//[^A-Za-z0-9_]/_} + echo "${cproc}.label $proc" + echo "${cproc}.info CPU used by process $proc" + done ; + + exit +fi + + + +for proc in $procs ; do { + cproc=${proc//[^A-Za-z0-9_]/_} + ps axo 'pcpu,comm,command' | grep -v grep | grep "$proc" | LC_ALL=us_US awk ' + BEGIN { + SUM=0 + } + { + SUM+=$1 + } + END { + print "'${cproc}'.value "SUM + } + ' +} +done;