Muninはお手軽なので、 ルータなどもsnmp経由で監視してみたいところ。いろいろ試してみてようやく監視できるようになったので、メモ。
snmpのバージョンの問題。手元にあった機器は、snmp v1しか受け付けない。munin-node-configure をみると、--snmpversion なんてオプションがあるが、snmp_〜プラグインには、snmpのバージョンを設定するオプションなどない。versionを指定せずに Net::SNMP を呼び出しているため、デフォルトのsnmpv2cが設定される。そこで
snmp_プラグインでsnmpのバージョンを指定するパッチ
env.versionにsnmpv1, snmpv2c, snmpv3を指定することで、使用するsnmpのバージョンを指定する。
取り敢えずsnmp_if_err_用だが、snmp_〜も同様に変更する。たいしたことはやっていないので、手パッチでも十分。
監視対象の指定方法。snmpの監視先となる機器と、muninのnodeとなるPCを指定しなければならない。
snmpの監視先は、snmp_監視先_〜 というファイル名でmuninのnodeとなるPCのpluginとしてリンクを張る。snmp_プラグインは、呼び出された時のファイル名からsnmpの接続先を割り出す。素直にmunin-node-configure --snmp の出力を使えばよい。
nodeの指定方法。munin.confに接続先のノード名とパラメータを記載するが、ここがポイント。
[snmpの監視先]
address muninのnodeとなるPCのIPアドレス
use_node_name no
監視先の機器はmuninのnodeにできないため、pluginを動かしてsnmpの情報を集めてくるPCを
muninのnodeのアドレスとして指定する。この結果munin-update -> munin-node -> snmpでの監視対象
という流れで情報を収集してくるようになる (Using_SNMP_plugins - Munin - Tracには、virtual nodeと表現してある)。
これ以外にも、mbmonプラグインで$mbmonが設定されていないのでそのままではmbmonが起動しないなど、 作りの粗さが感じられるものの、サーバを監視するにはnodeを動かすだけというのはかなりお手軽。