独自のmunin pluginをつくる

プラグイン本体はシェルスクリプトで作成し、DBアクセスなどが必要であれば、データ出力部分のみ、他のスクリプト言語を用いる構成が良さそうです。

プラグインを作る

例として、ユーザー数をカウントする”users”というプラグインを作成します。

#!/bin/bash

# autoconf対応
#%# family=auto
#%# capabilities=autoconf

if [ "$1" = "autoconf" ]; then
echo "yes"
exit 0
fi

if [ "$1" = "config" ]; then
echo "graph_category users"
echo "graph_title users"
echo "graph_vlabel count"

# グラフの設定
echo "graph_args --base 1000 -l 0"

# 「key.property property-value」で指定
echo "count.label count of users"
echo "count.info count(user_id)."

# グラフの描画方法
# LINE1 1ピクセルの線
# LINE2 2ピクセルの線(デフォルト)
# LINE3 3ピクセルの線
# AREA 塗りつぶし
# STACK 積み重ね
echo "count.draw LINE2"

# GAUGE|COUNTER|DERIVE|ABSOLUTE
# see http://guide.munin-monitoring.org/en/latest/architecture/syntax.html

echo "count.type DERIVE"
exit 0
fi

# 引数なしの場合の処理
# 先ほどのconfigで出てきた「キー.value 値」で結果を出力する
# 単純な値なら、echo "count.value XXX"。
# 他のコマンドに処理を任せる場合は、こんなふうに書き、コマンド内で'count.value XXX'という書式で標準出力する。
python3 /usr/share/munin/scripts/count_table_rows.py

プラグインを配置する

/usr/share/munin/plugins/配下に、プラグインを配置します。実行権限を付け、所有権は適宜整えましょう。値の出力に別のスクリプトなどを用いている場合は、それも配置します。(この例ではcount_table_rows.py)

munin-nodeに登録する

/etc/munin/pluginsにシンボリックリンクを張り、登録します。

cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/users users
munin-node-configure --suggest
systemctl restart munin-node
munin-node-configure | grep users

プラグインを手動実行する

munin-run users

プラグインスクリプト上で環境変数を用いる

こんな感じで書いておくと、

$ cat /etc/munin/plugin-conf.d/munin-node
[users*]
env.password XXXXXXXXXXX

シェルスクリプト上で、

$ENV{'password'}

という形式で、値を使うことができます。