Muninプラグインを作る その2

暑さでなかなか寝付けず、睡眠不足気味なyukiinu2ndです。
間が空いてしまいましたが、前回のMuninのプラグインを作るの続きになります。
実際に作ったプラグインと、プラグインの登録&削除について紹介します。
※投稿が遅くなって申し訳ありませんでした……。

プラグインサンプル


今回作成したものは「Apacheのプロセス数を調べる」プラグインです。
実は、「apache_processes」というMuninプラグインが既に存在するのですが、mod_statusというモジュールを使う必要があるようです。
そのため、Apacheのmod_statusとapache_processesプラグインを使わずに、シェルスクリプトでpgrepというプロセスを検索するコマンドを使い、カウントする方法にしました。
以下、ソースです。

#!/bin/sh

APACHEUSER="apache"

if [ "$1" = "autoconf" ]; then
        if [ -x /usr/bin/pgrep ]; then
                echo yes
                exit 0
        else
                echo no
                exit 1
        fi
fi

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

        PROCESSESWARNING=20

        echo 'graph_title Apache Processes'
        echo "graph_args -l 0"
        echo 'graph_vlabel process'
        echo 'graph_info This graph shows Apache Process Count'
        echo 'graph_category Processes'

        echo 'approc.label Apache Process'
        echo 'approc.draw LINE2'
        echo "approc.warning $PROCESSESWARNING"
        echo "approc.info Apache Processes Count"


        exit 0
fi

        echo -n "approc.value "
        pgrep -u $APACHEUSER | wc -l

プロセスのカウント方法ですが、「pgrep -u $APACHEUSER」でApacheユーザのプロセスを出力し、出力を「wc -l」に渡すことで行数を数えています。


設定系の変数ですが、下記の通りです。

APACHEUSER
Apacheプロセスのユーザを指定します。これはApacheの導入方法によって異なるので、環境に合わせて変更します。
PROCESSESWARNING
プロセス数がこの値以上になるとMunin上でWarning表示を出します。


グラフの種類は「approc.draw LINE2」を設定することで線グラフにしています。
また、「graph_args -l 0」を設定することで下限値を0にしています。

プラグインの登録と削除

まず、プラグインの実体は「/usr/share/munin/plugins/」以下に存在します。
Muninで使用する・しないに関わらずここには全プラグインを入れておきます。


登録は「/etc/munin/plugins/」以下にシンボリックリンクを置き、削除は作成したシンボリックリンクを消すことで可能となっています。
先程作ったApacheプロセスを数えるプラグイン(ここではapache_proc_countとする)を登録する場合、

# cp /home/yukiinu2nd/apache_proc_count /usr/share/munin/plugins/
# ln -s /usr/share/munin/plugins/apache_proc_count /etc/munin/plugins/apache_proc_count
# service munin-node restart

となります。
登録後にmunin-nodeというMuninがデータを収集しているデーモンがあるのですが、再起動する必要があるようです。(もしかしたら不要かもしれません……。)


逆に削除は

# rm /etc/munin/plugins/apache_proc_count

としてシンボリックリンクを消すことではずすことができます。