contrib-munin/plugins/unicorn/unicorn_

70 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2013 Gareth Davies (shaolintiger@gmail.com www.shaolintiger.com)
# License GPLv2
# This plugin monitors number of workers, total memory used and average memory per process for Unicorn.
# Here are the symlinks to enable it
#
# ln -s /usr/share/munin/plugins/unicorn_ /etc/munin/plugins/unicorn_average
# ln -s /usr/share/munin/plugins/unicorn_ /etc/munin/plugins/unicorn_memory
# ln -s /usr/share/munin/plugins/unicorn_ /etc/munin/plugins/unicorn_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 Unicorn Memory"
echo "graph_vlabel Total RAM"
echo "graph_category webserver"
echo "graph_args --base 1024"
echo "ram.label Total RAM"
exit 0
else
memory_array=(`ps auwx | egrep "unicorn.* worker" | grep -v grep | awk '{print $6 }'`)
for i in "${memory_array[@]}"
do
sum=$(( $sum + ( $i * 1024) ))
done
echo -n "ram.value "
echo $sum
fi
elif [ "$mode" = "processes" ]; then
if [ "$1" = "config" ]; then
echo "graph_title Unicorn Processes"
echo "graph_vlabel Processes"
echo "graph_category webserver"
echo "processes.label active processes"
else
echo -n "processes.value "
ps awwwux | egrep "unicorn.* worker" | grep -v grep | wc -l
exit 0
fi
elif [ "$mode" = "average" ]; then
if [ "$1" = "config" ]; then
echo 'graph_title Unicorn Average Process Size'
echo 'graph_args --base 1024 -l 0 '
echo 'graph_vlabel Average Process Size'
echo 'graph_category webserver'
echo 'unicorn_average.label Average Process Size'
echo 'unicorn_average.draw LINE2'
echo 'unicorn_average.info The average process size for Unicorn'
else
echo -n "unicorn_average.value "
ps awwwux | egrep "unicorn.* 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