#!/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 uWSGI. # Here are the symlinks to enable it # # ln -s /usr/share/munin/plugins/uwsgi_ /etc/munin/plugins/uwsgi_average # ln -s /usr/share/munin/plugins/uwsgi_ /etc/munin/plugins/uwsgi_memory # ln -s /usr/share/munin/plugins/uwsgi_ /etc/munin/plugins/uwsgi_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 uWSGI Total Memory" echo "graph_vlabel Total RAM" echo "graph_category appserver" echo "graph_args --base 1024" echo "ram.label Total RAM" exit 0 else memory_array=(`ps auwx | grep -i "uwsgi" | 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 uWSGI Processes" echo "graph_vlabel Processes" echo "graph_category appserver" echo "processes.label active processes" else echo -n "processes.value " ps awwwux | grep -i 'uwsgi' | grep -v grep | wc -l exit 0 fi elif [ "$mode" = "average" ]; then if [ "$1" = "config" ]; then echo 'graph_title uWSGI Average Process Size' echo 'graph_args --base 1024 -l 0 ' echo 'graph_vlabel Average Process Size' echo 'graph_category appserver' echo 'uwsgi_average.label Average Process Size' echo 'uwsgi_average.draw LINE2' echo 'uwsgi_average.info The average process size for uWSGI' else echo -n "uwsgi_average.value " ps awwwux | grep -i 'uwsgi' | grep -v grep | awk '{total_mem = $6 * 1024 + total_mem; total_proc++} END{printf("%d\n", total_mem / total_proc)}' exit 0 fi fi exit 0