Munin のプラグインを作ると言っても、単純な文字列と数値を出力するスクリプトを作成するだけでとても簡単です。
スクリプトは bash だろうが perl だろうが、 C 言語でも別に構わないので、好きな言語で作れる。
とりあえず、マザーと CPU の温度を表示するプラグインを作ってみた。
インストールの仕方や基本設定はCentOS に Munin をインストールする、Munin を Debian にインストールする、Munin のグラフ(plugin)の種類を変えるを参考。
Munin のプラグインは /usr/share/munin/plugins/ に置かれていて
$ ls /usr/share/munin/plugins
を実行すれば全プラグインが確認できる。
仕様といっても大した事ないと思う。作成するプログラムは、 autoconf や config といったパラメータ応じて必要な文字列を出力するように作成すればいい。一番分かりやすいのは、実際に既存のプラグインを実行してみることだと思う。例えばプロセス数をグラフするプラグイン processes を実行すると、
# /usr/share/munin/plugins/processes autoconf yes # /usr/share/munin/plugins/processes config graph_title Number of Processes graph_args --base 1000 -l 0 graph_vlabel number of processes graph_category processes graph_info This graph shows the number of processes in the system. processes.label processes processes.draw LINE2 processes.info The current number of processes. # /usr/share/munin/plugins/processes processes.value 102という感じで結果が表示される。ここで一つ一つのパラメータを整理しておきます。
munin-node によって初めに読み込まれて、このグラフの説明やグラフ表示に必要なデータ項目の設定が出力される。上記の processes の例でメモっておく。
その他にもいくつも定義できる項目がありますが、作成したいグラフのイメージに近いプラグインを見れば簡単に理解できると思います。
$ sensors it87-isa-0290 Adapter: ISA adapter VCore 1: +1.54 V (min = +1.42 V, max = +1.57 V) VCore 2: +1.94 V (min = +2.40 V, max = +2.61 V) ALARM +3.3V: +6.62 V (min = +3.14 V, max = +3.46 V) ALARM +5V: +4.95 V (min = +4.76 V, max = +5.24 V) +12V: +11.39 V (min = +11.39 V, max = +12.61 V) ALARM -12V: -19.63 V (min = -12.63 V, max = -11.41 V) ALARM -5V: -8.51 V (min = -5.26 V, max = -4.77 V) ALARM Stdby: +5.03 V (min = +4.76 V, max = +5.24 V) VBat: +0.00 V fan1: 3125 RPM (min = 0 RPM, div = 8) fan2: 0 RPM (min = 3013 RPM, div = 8) ALARM fan3: 0 RPM (min = 3013 RPM, div = 8) M/B Temp: +48°C (low = +15°C, high = +40°C) sensor = thermistor CPU Temp: +25°C (low = +15°C, high = +45°C) sensor = thermistor Temp3: +35°C (low = +15°C, high = +45°C) sensor = diode eeprom-i2c-0-51 Adapter: SiS96x SMBus adapter at 0x1400 Memory type: DDR SDRAM DIMM Memory size (MB): 512 eeprom-i2c-0-50 Adapter: SiS96x SMBus adapter at 0x1400 Memory type: DDR SDRAM DIMM Memory size (MB): 256で bash で作ったプラグインは以下のような感じ。
#!/bin/sh
if [ "$1" = "autoconf" ]; then
if [ -x /usr/bin/sensors ]; then
echo yes
exit 0
else
echo no
exit 1
fi
fi
if [ "$1" = "config" ]; then
MBWARNING=40
CPUWARNING=45
TEMP3WARNING=45
echo 'graph_title Temperature'
echo "graph_order mb cpu temp3"
echo "graph_args --base 1000 -l 0"
echo 'graph_vlabel C'
echo 'graph_info This graph shows Temperature'
echo 'graph_category system'
echo 'mb.label M/B'
echo 'mb.draw LINE2'
echo "mb.warning $MBWARNING"
echo "mb.info Mother Board temperature"
echo 'cpu.label CPU'
echo 'cpu.draw LINE2'
echo "cpu.warning $CPUWARNING"
echo "cpu.info CPU temperature"
echo 'temp3.label Temp3'
echo 'temp3.draw LINE2'
echo "temp3.warning $TEMP3WARNING"
echo "temp3.info Temp3, which I dont know, temperature"
exit 0
fi
echo -n "mb.value "
sensors | awk '/^M\/B/ {print $3}' | sed 's/\+\([0-9]\+\).*/\1/g'
echo -n "cpu.value "
sensors | awk '/^CPU Temp/ {print $3}' | sed 's/\+\([0-9]\+\).*/\1/g'
echo -n "temp3.value "
sensors | awk '/^Temp3/ {print $2}' | sed 's/\+\([0-9]\+\).*/\1/g'
上記で新しく出てきた設定項目は、 graph_order と各項目の warning 項目です。
で、できた画像が以下のような感じです。最初失敗したんでちょっと変ですが、まあ納得いく感じです。