2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/puma/puma_

60 lines
2.1 KiB
Plaintext
Raw Normal View History

2016-12-03 20:02:55 +01:00
#!/bin/sh
# Copyright (c) 2016 Alexey Anikanov (alexey.anikanov@gmail.com)
# License GPLv2
# This plugin monitors number of workers, total memory used and average memory per process for puma,
# a ruby web server built for concurrency http://puma.io
# Here are the symlinks to enable it
#
# ln -s /usr/share/munin/plugins/puma_ /etc/munin/plugins/puma_average
# ln -s /usr/share/munin/plugins/puma_ /etc/munin/plugins/puma_memory
# ln -s /usr/share/munin/plugins/puma_ /etc/munin/plugins/puma_processes
mode=$(echo $0 | cut -d _ -f 2)
if [ "$1" = "suggest" ]; then
echo "memory"
echo "processes"
echo "average"
exit 0
fi
if [ "$mode" = "memory" ]; then
if [ "$1" = "config" ]; then
echo "graph_title Total Puma Memory"
echo "graph_vlabel Total RAM"
echo "graph_category puma"
echo "graph_args --base 1024"
echo "ram.label Total RAM"
exit 0
else
processes_memory="$(ps auwx | egrep "puma.* worker" | grep -v grep | awk '{print $6 }')"
for process_memory in $processes_memory; do
total_memory=$(( $total_memory + ( $process_memory * 1024) ))
done
printf "ram.value %s\n" "$total_memory"
fi
elif [ "$mode" = "processes" ]; then
if [ "$1" = "config" ]; then
echo "graph_title puma Processes"
echo "graph_vlabel Processes"
echo "graph_category puma"
echo "processes.label active processes"
else
printf "processes.value %s\n" "$(ps awwwux | egrep "puma.* worker" | grep -v grep | wc -l)"
exit 0
fi
elif [ "$mode" = "average" ]; then
if [ "$1" = "config" ]; then
echo 'graph_title Puma Average Process Size'
echo 'graph_args --base 1024 -l 0 '
echo 'graph_vlabel Average Process Size'
echo 'graph_category puma'
echo 'puma_average.label Average Process Size'
echo 'puma_average.draw LINE2'
echo 'puma_average.info The average process size for puma'
else
printf "puma_average.value %s\n" "$(ps awwwux | egrep "puma.* worker" | grep -v grep | grep -v master | awk '{total_mem = $6 * 1024 + total_mem; total_proc++} END{printf("%d\n", total_mem / total_proc)}')"
exit 0
fi
fi
exit 0