Munin pluginの作り方
SoftEtherの転送量をMuninでグラフ化するため、Munin plugin https://github.com/dozen/softether-plugin を作りました. 今回は Plugin::Munin, Plugin::Munin::Framework を使いましたが, これらのモジュールを使った自作プラグインの作り方について解説しているサイトが全然見つからなかったので, 紹介します. ただし、情報少ないしこのモジュールはMunin v2.1以上じゃないと動かないし, 後述する negative を指定したグラフがたまにうまく描画できなかったりと, 現状だと微妙な感じです. (グラフがうまく描画できてないのは私のコードがおかしいだけかもしれないです) Plugin::Munin::Frameworkについて softether-plugin は Plugin::Munin::Framework というモジュールを使っていますが, これについての詳細はよくわかりません. というのも, このプラグインを書いたのは1年前で, 当時参考にしていたWebサイトが見つからなかったからです. Munin公式のプラグインで使われているようですがとにかくWeb上に情報が載ってないです. munin 2.1.9-1では少なくともMunin公式のプラグインで Munin::Plugin , Munin::Plugin::Framework が使われています. しかし munin 2.0.25 ではそのようなプラグインは使用されておらず, またそれらを使ったプラグインは動きません. CPANにはこの2つのモジュールは無かったので, これらのモジュールを使いたい場合は対応したバージョンのmuninをインストールするしかなさそうです. そんなよくわからないものを使って大丈夫なのかよという感じですが, 動くし, 簡単にプラグインが書けるっぽいのでよしとします. 自作プラグインで実現したいこと プラグインを自作する上で実現したいのは以下の3つです. softether_myhub のようなシンボリックリンクを張るとmyhubのグラフを作ってくれる SoftEtherのホスト名とかHubのパスワードはmunin-node.conf.d/munin-nodeにかける Virtual HUB単位で転送量, パケット数をグラフ化 グラフ化できることはもちろんですが, Muninのプラグインらしく, シンボリックリンクで監視対象のデバイスを指定したり, munin-node.conf.d/munin-node に書いたconfigが読めるようにしたいです. プラグインの作成 softether-muninのソースコードを使って解説していきます. シンボリックリンク名でVirtual Hubを指定 Muninのプラグインでありがちな, 実体が if_ というファイルで if_eth0 というシンボリックリンクを張るとeth0についてのグラフを作成する, というのを真似したい. プラグイン softether_ のシンボリックリンク名を読み取る部分はこうなります....