mirror of
https://github.com/munin-monitoring/muninlite.git
synced 2024-11-13 07:11:12 +01:00
dc242d3631
Previously only CPU entries with a single digit (0..9) were parsed. The improved regular expression simplifies the calculation of the CPU count, since the combined entry ("cpu" without digits) is skipped.
84 lines
3 KiB
Text
84 lines
3 KiB
Text
config_cpu() {
|
|
extinfo=""
|
|
if grep '^cpu \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\}' /proc/stat >/dev/null 2>&1; then
|
|
extinfo="iowait irq softirq"
|
|
fi
|
|
# shellcheck disable=SC2126
|
|
NCPU=$(grep '^cpu[0-9]\+ ' /proc/stat | wc -l)
|
|
PERCENT=$(($NCPU * 100))
|
|
graphlimit=$PERCENT
|
|
SYSWARNING=$(($PERCENT * 30 / 100))
|
|
SYSCRITICAL=$(($PERCENT * 50 / 100))
|
|
USRWARNING=$(($PERCENT * 80 / 100))
|
|
echo "graph_title CPU usage"
|
|
echo "graph_order system user nice idle $extinfo" | sed 's/ $//'
|
|
echo "graph_args --base 1000 -r --lower-limit 0 --upper-limit $graphlimit"
|
|
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.min 0"
|
|
echo "system.type DERIVE"
|
|
echo "system.warning $SYSWARNING"
|
|
echo "system.critical $SYSCRITICAL"
|
|
echo "system.info CPU time spent by the kernel in system activities"
|
|
echo "user.label user"
|
|
echo "user.draw STACK"
|
|
echo "user.min 0"
|
|
echo "user.max 5000"
|
|
echo "user.warning $USRWARNING"
|
|
echo "user.type DERIVE"
|
|
echo "user.info CPU time spent by normal programs and daemons"
|
|
echo "nice.label nice"
|
|
echo "nice.draw STACK"
|
|
echo "nice.min 0"
|
|
echo "nice.max 5000"
|
|
echo "nice.type DERIVE"
|
|
echo "nice.info CPU time spent by nice(1)d programs"
|
|
echo "idle.label idle"
|
|
echo "idle.draw STACK"
|
|
echo "idle.min 0"
|
|
echo "idle.max 5000"
|
|
echo "idle.type DERIVE"
|
|
echo "idle.info Idle CPU time"
|
|
if [ ! -z "$extinfo" ]; then
|
|
echo "iowait.label iowait"
|
|
echo "iowait.draw STACK"
|
|
echo "iowait.min 0"
|
|
echo "iowait.max 5000"
|
|
echo "iowait.type DERIVE"
|
|
echo "iowait.info CPU time spent waiting for I/O operations to finish"
|
|
echo "irq.label irq"
|
|
echo "irq.draw STACK"
|
|
echo "irq.min 0"
|
|
echo "irq.max 5000"
|
|
echo "irq.type DERIVE"
|
|
echo "irq.info CPU time spent handling interrupts"
|
|
echo "softirq.label softirq"
|
|
echo "softirq.draw STACK"
|
|
echo "softirq.min 0"
|
|
echo "softirq.max 5000"
|
|
echo "softirq.type DERIVE"
|
|
echo "softirq.info CPU time spent handling 'batched' interrupts"
|
|
fi
|
|
}
|
|
fetch_cpu() {
|
|
extinfo=""
|
|
if grep '^cpu \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\} \{1,\}[0-9]\{1,\}' /proc/stat >/dev/null 2>&1; then
|
|
extinfo="iowait irq softirq"
|
|
fi
|
|
CINFO=$(grep '^cpu ' /proc/stat | cut -c6-)
|
|
echo "user.value" "$(echo "$CINFO" | cut -d " " -f 1)"
|
|
echo "nice.value" "$(echo "$CINFO" | cut -d " " -f 2)"
|
|
echo "system.value" "$(echo "$CINFO" | cut -d " " -f 3)"
|
|
echo "idle.value" "$(echo "$CINFO" | cut -d " " -f 4)"
|
|
if [ -n "$extinfo" ]; then
|
|
echo "iowait.value" "$(echo "$CINFO" | cut -d " " -f 5)"
|
|
echo "irq.value" "$(echo "$CINFO" | cut -d " " -f 6)"
|
|
echo "softirq.value" "$(echo "$CINFO" | cut -d " " -f 7)"
|
|
fi
|
|
}
|