mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
60 lines
2.1 KiB
Bash
60 lines
2.1 KiB
Bash
#!/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 |