mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
p/cpu_: add a multigraph multi-core cpu plugin
This commit is contained in:
parent
034bd70ec9
commit
149688a727
111
plugins/system/cpu_
Normal file
111
plugins/system/cpu_
Normal file
@ -0,0 +1,111 @@
|
||||
#! /bin/sh
|
||||
# Multigraph CPU plugin
|
||||
# It shows a global cpu graph, and you can drill down per-core
|
||||
|
||||
PLUGINBASE=$(basename $0)
|
||||
|
||||
emit_config()
|
||||
{
|
||||
cat <<'EOF'
|
||||
graph_title CPU usage
|
||||
graph_order system user nice idle iowait irq softirq
|
||||
graph_vlabel %
|
||||
graph_scale no
|
||||
graph_info This graph shows how CPU time is spent.
|
||||
graph_category system
|
||||
graph_period second
|
||||
system.label system
|
||||
system.draw AREA
|
||||
system.min 0
|
||||
system.type DERIVE
|
||||
system.info CPU time spent by the kernel in system activities
|
||||
user.label user
|
||||
user.draw STACK
|
||||
user.min 0
|
||||
user.type DERIVE
|
||||
user.info CPU time spent by normal programs and daemons
|
||||
nice.label nice
|
||||
nice.draw STACK
|
||||
nice.min 0
|
||||
nice.type DERIVE
|
||||
nice.info CPU time spent by nice(1)d programs
|
||||
idle.label idle
|
||||
idle.draw STACK
|
||||
idle.min 0
|
||||
idle.type DERIVE
|
||||
idle.info Idle CPU time
|
||||
iowait.label iowait
|
||||
iowait.draw STACK
|
||||
iowait.min 0
|
||||
iowait.type DERIVE
|
||||
iowait.info CPU time spent waiting for I/O operations to finish when there is nothing else to do.
|
||||
irq.label irq
|
||||
irq.draw STACK
|
||||
irq.min 0
|
||||
irq.type DERIVE
|
||||
irq.info CPU time spent handling interrupts
|
||||
softirq.label softirq
|
||||
softirq.draw STACK
|
||||
softirq.min 0
|
||||
softirq.type DERIVE
|
||||
softirq.info CPU time spent handling "batched" interrupts
|
||||
steal.label steal
|
||||
steal.draw STACK
|
||||
steal.min 0
|
||||
steal.type DERIVE
|
||||
steal.info The time that a virtual CPU had runnable tasks, but the virtual CPU itself was not running
|
||||
guest.label guest
|
||||
guest.draw STACK
|
||||
guest.min 0
|
||||
guest.type DERIVE
|
||||
guest.info The time spent running a virtual CPU for guest operating systems under the control of the Linux kernel.
|
||||
EOF
|
||||
}
|
||||
|
||||
CPUS=$(grep '^cpu[0-9]' /proc/stat | cut -d ' ' -f 1)
|
||||
|
||||
if [ "$1" = "config" ]
|
||||
then
|
||||
echo multigraph $PLUGINBASE
|
||||
emit_config
|
||||
# Emit one subgraph per core
|
||||
for cpu in $CPUS
|
||||
do
|
||||
echo multigraph $PLUGINBASE.$cpu
|
||||
emit_config
|
||||
done
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
emit_values()
|
||||
{
|
||||
while read key system user nice idle iowait irq softirq steal guest unused
|
||||
do
|
||||
[ "$key" != "$1" ] && continue
|
||||
cat <<EOF
|
||||
system.value $system
|
||||
user.value $user
|
||||
nice.value $nice
|
||||
idle.value $idle
|
||||
iowait.value $iowait
|
||||
irq.value $irq
|
||||
softirq.value $softirq
|
||||
steal.value $steal
|
||||
guest.value $guest
|
||||
EOF
|
||||
done < /proc/stat
|
||||
}
|
||||
|
||||
# Values
|
||||
echo multigraph $PLUGINBASE
|
||||
emit_values cpu
|
||||
|
||||
# Emit one subgraph per core
|
||||
for cpu in $CPUS
|
||||
do
|
||||
echo multigraph $PLUGINBASE.$cpu
|
||||
emit_values $cpu
|
||||
done
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user