[Munin] MuninでOpen VZゲストOSのメモリ状態を監視する

この記事は、シリーズ「Muninでサーバー監視」の一部です。( 2 / 4 )

この記事の内容

サーバー監視ツール「Munin」で、Open VZのゲストOSのメモリ状態を監視する手順を紹介します。

Muninには、デフォルトでメモリ監視のプラグインが含まれています。
しかし、そのままではOpen VZのゲストOSのメモリの状態を正しく監視することができません。

Open VZの管理ツールを導入し、それを使ってメモリ状態のグラフを表示できるようにしましょう。

手順

vzctlのインストール

$ sudo apt-get install vzctl

プラグインのダウンロード

OpenVZのメモリ監視用プラグインは、muninの公式プロジェクトのリポジトリ(munin-monitoring/contrib)にあります。
これを任意のディレクトリに保存し、chmod a+x vpsmemコマンドで実行権限を付けておきます。

内容を以下に引用します。(引用元:munin-monitoring/contrib)

#!/bin/bash
#
# Monitors memory usage in openVZ or Virtuozzo
# based on http://www.huschi.net/archiv/speicher-anzeigen-mit-vzfree.html
# Author: Michael Richter, http://osor.de/
# Cleaned up and translated to english by: Marian Sigler <m@qjym.de>, 2010-08-13
#
#%# capabilities=autoconf

BEANCOUNTERS=/proc/user_beancounters

if [ "$1" == "autoconf" ]; then
    if [ -e $BEANCOUNTERS ]; then
        echo yes
    else
        echo no
    fi
    exit 0
fi

if [ ! -r $BEANCOUNTERS ]; then
    echo "$BEANCOUNTERS not readable" >&2
    exit 1
fi

if [ "$1" == "config" ]; then
    limit=$(awk '/privvmpages/ {print $5*4096}' $BEANCOUNTERS)
    cut -c9- <<EOF
        graph_args --base 1024 -l 0 --vertical-label bytes --upper-limit $limit
        graph_title VPS memory usage
        graph_category memory
        graph_info Shows memory usage and VPS memory limits.
        graph_order maxheld held oomguar barrier limit
        held.label held
        held.draw AREA
        held.info currently held memory
        maxheld.label maxheld
        maxheld.draw AREA
        maxheld.info maximum held memory
        oomguar.label guaranteed
        oomguar.draw LINE2
        oomguar.info memory guaranteed for OOM
        barrier.label barrier
        barrier.draw LINE2
        barrier.info memory usage barrier
        limit.label limit
        limit.draw LINE2
        limit.info memory usage limit
EOF
    exit 0
fi

if [ -n "$1" ]; then
    echo "Invalid argument: $1" >&2
    exit 1
fi

awk '/privvmpages/ {print "held.value", $2*4096 "\nmaxheld.value", $3*4096 "\nbarrier.value", $4*4096 "\nlimit.value", $5*4096}' $BEANCOUNTERS
awk '/oomguarpages/ { print "oomguar.value", $4*4096 }' $BEANCOUNTERS

プラグインの設定

このプラグインの内容を正しく実行するにはroot権限が必要です。
デフォルトでの実行ユーザーはmuninになるので、設定ファイルにrootで実行するよう記述しておきます。

管理者権限でmunin-nodeの設定ファイルを開きます。

$ sudo vim /etc/munin/plugin-conf.d/munin-node

設定ファイルに下記を追記します。

...
[vpsmem]
user root

muninとmunin-nodeをリロードして設定を有効にします。

$ sudo service munin-node restart
$ sudo service munin restart

プラグインの有効化

保存したプラグインファイルに向けて、muninのプラグインディレクトリからのシンボリックリンクを作成します。
/path/to/の部分は実際のプラグインのパスに置き換えてください。

$ sudo ln -s /path/to/vpsmem /etc/munin/plugins/vpsmem

結果

メモリの使用割合が正しく把握できるようになりました。

この記事は、シリーズ「Muninでサーバー監視」の一部です。( 2 / 4 )