VPS (Virtuozzo) のメモリー使用量をmuninで記録する!

VPS (Virtuozzo) のメモリー使用量は /proc/user_beancounters の privvmpages を見なくちゃいけないという噂を聞いたので作ってみた。

ソース vps_memory

#!/bin/sh
#
# vps_memory
# Private Memory Usage in a Virtual Environment of OpenVZ/Virtuozzo
#
# http://www.makizou.com/archives/1330
# http://kawa.at.webry.info/200812/article_1.html
#
# sample conf
# [vps_memory]
# user root
#
#%# family=auto
#%# capabilities=autoconf

target="/proc/user_beancounters"
awk=${awk:-`which awk`}

if [ "$1" = "autoconf" ]; then
        if [ -r $target ]; then
                echo "yes"
                exit 0
        else
                echo "no ($target cannot be read or does not exist.)"
                exit 1
        fi
fi

if [ "$1" = "config" ]; then

        echo 'graph_title VPS Memory'
        echo 'graph_args -l 0'
        echo 'graph_vlabel size (MB)'
        echo 'graph_category system'
        echo 'graph_info This graph shows size of virtual memory usage and limit.'

        echo "use.label use"
        echo "use.draw LINE2"
        echo "max.label max"
        echo "max.draw LINE1"
        echo "barrier.label barrier"
        echo "barrier.draw LINE1"
#        echo "limit.label limit"
#        echo "limit.draw LINE1"

        exit 0
fi

beans=`cat $target | grep priv`

if [ "$beans" = "" ]; then
        exit 1
fi

use=`echo $beans | $awk '{ print $2;}'`
max=`echo $beans | $awk '{ print $3;}'`
barrier=`echo $beans | $awk '{ print $4;}'`
limit=`echo $beans | $awk '{ print $5;}'`
echo "use.value "`expr $use / 256`
echo "max.value "`expr $max / 256`
echo "barrier.value "`expr $barrier / 256`
#echo "limit.value "`expr $limit / 256`

exit 0