Muninプラグインを作る

今日はエイプリルフールでしたが、仕様変更の話は嘘ではなくて修正作業をしていたyukiinu2ndです。
今回はMuninのプラグインを作ってみたので簡単に紹介したいと思います。
まず、Muninとは何かですが、CPU使用率・メモリ使用量などなど、マシンの状態を簡単にグラフ化してくれるソフトです。
プラグインで拡張することができるため、やろうと思えば何でもグラフ化することができます。


なお、今回Muninのインストール、プラグインの追加と削除等については省略します。
また、まだ動く物が完成していないため、ソース等は完成した段階で公開します。ごめんなさい。

プラグイン

プラグインは思った以上にシンプルで、引数に応じて標準出力へテキストで値を返す、これだけです。
そのため、標準出力へ出力ができ、実行できさえすればBashでもPerlでもOKです。

引数は

  • autoconf
  • config
  • なし

の3種類となっています。

autoconf

プラグインがデータを作成するために必要なモジュールが揃っているかを確認し、「yes」か「no」のみを返し、終了します。

config

グラフ描画に必要な設定情報(ラベルやグラフの形)を出力します。
色々設定があるのですが、ここでは必要最低限だけ紹介します。
以下はグラフ全体の設定です。以下の項目名に続いてスペース一つ入れた後に値を記述します。

graph_title
グラフのタイトルを設定します
graph_args
グラフのパラメータを追加します。rrdtoolのgraphコマンドと同じ引数が使えるようです。
graph_vlabel
縦軸のラベルを設定します
graph_category
結果出力HTMLにてどのカテゴリに所属させるかを指定します
graph_info
グラフの説明を指定します


以下はグラフ項目(1つの折れ線や棒)毎の設定です。

項目名.設定名 値

のように標準出力を行ってください。下記リストは設定名のみ書いてあります。

label
項目名を設定します
draw
グラフ種別を選択します(種別は後述)
info
項目の説明を設定します
warning/critical
項目の値が設定した値を越えた場合ワーニング/クリティカルメッセージを出力します


グラフ種別については以下の通りです。

LINEn
指定したデータを線で描画します。nには1〜3の数字が入り、数値が大きいほど線が太くなります
AREA
指定したデータを面で描画(値と0の間を塗りつぶす)します。
STACK
直前のデータの上に積み重ねる形で描画します。グラフの種別は直前のグラフと同じ種別になります。
引数なしの場合

Muninへ渡すデータ(結果)を出力します。
形式は

項目名.value

で出力します。


流石にこれだけではわかりにくいので、次回は実例を出す予定です。……多分。