2007.12.02 Sunday
Muninでリソース監視 〜SNMP編〜
以前, 某アプライアンスサーバの応答が悪くなる問題がありました。
サーバの中の状況は Web の管理画面からしかわからず, 取れる値も限られていて原因の特定が難しいので, 何とか内部の情報が取れないものかとサポートに問い合わせたところ, SNMPの(裏)オプションがあるということだったので, SNMPを有効にして Munin で値を取る事に。
通常, Munin は監視対象のサーバにノードの設定を行い, 監視サーバにノードを追加するのですが, SNMP経由で監視する場合は, 監視サーバ自身をノード(SNMPゲートウェイ)として, 監視対象に SNMPリクエストを送ることにします。(ゲートウェイを別サーバにしても OK です)
Munin の基本的な設定は済んでいるものとして, 以下に簡単に流れを説明します。
サーバの中の状況は Web の管理画面からしかわからず, 取れる値も限られていて原因の特定が難しいので, 何とか内部の情報が取れないものかとサポートに問い合わせたところ, SNMPの(裏)オプションがあるということだったので, SNMPを有効にして Munin で値を取る事に。
通常, Munin は監視対象のサーバにノードの設定を行い, 監視サーバにノードを追加するのですが, SNMP経由で監視する場合は, 監視サーバ自身をノード(SNMPゲートウェイ)として, 監視対象に SNMPリクエストを送ることにします。(ゲートウェイを別サーバにしても OK です)
Munin の基本的な設定は済んでいるものとして, 以下に簡単に流れを説明します。
1. Net::SNMP のインストール
このモジュールが無いと始まりません。
インストールされてなければ CPAN からインストールしましょう。
2. SNMP情報の設定
/etc/opt/munin/plugins-conf.d/munin-node に SNMPのバージョンとコミュニティ名の設定をします。
SNMPでの監視対象が複数あれば, その分だけ記述して下さい。
コミュニティ名に public はやめておきましょう。
3. munin.conf の編集
SNMPゲートウェイノード(ここでは自分自身)の設定を追加します。
address には監視対象サーバの IPアドレスではなく, SNMPゲートウェイノード(監視サーバ自身)の IPアドレスを指定することに注意して下さい。
先に説明したとおり, 自分自身がノードとなって SNMPリクエストを出すからです。
use_node_name は no にしておきます。
関係ないですが, 私は
というドメインでの定義より,
のようにグループ化するほうが分かりやすくて好きです。
<snmphost>で IPアドレスが引ければ問題ないので。
4. プラグインの設定
最後にシンボリックリンクを張ってプラグインの設定を行います。
エラーが出る場合は, snmpwalk等で SNMP接続が正しく行われるか確認して下さい。
運がよければ, munin-node-configure が自動的にプラグインを検出してくれます。
欲しい値のプラグインが検出されていれば, シンボリックリンクを張って設定は完了。
グラフが正しく描画されればめでたく SNMP経由での監視は成功です。
5. プラグインの作成
悲しいことに, 私の場合はプラグインが殆ど検出されませんでした。
プラグイン内部で定義されている MIB から値が取得できなかったせいなのでしょう。
この場合は自力でプラグインを作成するしかありません。
とは言っても, 既存のプラグインファイルをコピーして MIB 定義部分とグラフ生成部分をカスタマイズすれば OK です。
グラフ生成部は自分が描画したいタイプのプラグインを参考にすればそれほど難しくないと思います。
rrdtools の描画方法は取っ付きにくいかも知れませんがそこは気合で...
プラグイン作成後は忘れずにシンボリックリンクを張りましょう。
SNMP の場合, 同じグループに属していて参照するプラグインが同じ(シンボリックリンク名は違いますが)でも, グラフがグループ化されないのが難点。
今後, 改善されるといいのですが。
Munin の SNMP経由での監視は若干手間ですが, やっぱり Munin はシンプルで使いやすいです。
リソース監視は負荷分析には必須なので, これからの方は Munin ですな( ´∀`)

このモジュールが無いと始まりません。
インストールされてなければ CPAN からインストールしましょう。
2. SNMP情報の設定
/etc/opt/munin/plugins-conf.d/munin-node に SNMPのバージョンとコミュニティ名の設定をします。
[snmp_<snmphost>*]
env.version <snmp version>
env.community <community>
SNMPでの監視対象が複数あれば, その分だけ記述して下さい。
コミュニティ名に public はやめておきましょう。
3. munin.conf の編集
SNMPゲートウェイノード(ここでは自分自身)の設定を追加します。
[<snmphost>.<snmpdomain>]
address 127.0.0.1
use_node_name no
address には監視対象サーバの IPアドレスではなく, SNMPゲートウェイノード(監視サーバ自身)の IPアドレスを指定することに注意して下さい。
先に説明したとおり, 自分自身がノードとなって SNMPリクエストを出すからです。
use_node_name は no にしておきます。
関係ないですが, 私は
[<snmphost>.<snmpdomain>]
というドメインでの定義より,
[<group>;]
[<group>;<snmphost>]
のようにグループ化するほうが分かりやすくて好きです。
<snmphost>で IPアドレスが引ければ問題ないので。
4. プラグインの設定
最後にシンボリックリンクを張ってプラグインの設定を行います。
$ /opt/munin/sbin/munin-node-configure
--snmp <snmphost> --snmpversion <version>
--snmpcommunity <community>
ln -s /opt/munin/lib/plugins/snmp__users
/etc/opt/munin/plugins/snmp_<snmphost>_users
...
エラーが出る場合は, snmpwalk等で SNMP接続が正しく行われるか確認して下さい。
運がよければ, munin-node-configure が自動的にプラグインを検出してくれます。
欲しい値のプラグインが検出されていれば, シンボリックリンクを張って設定は完了。
グラフが正しく描画されればめでたく SNMP経由での監視は成功です。
5. プラグインの作成
悲しいことに, 私の場合はプラグインが殆ど検出されませんでした。
プラグイン内部で定義されている MIB から値が取得できなかったせいなのでしょう。
この場合は自力でプラグインを作成するしかありません。
とは言っても, 既存のプラグインファイルをコピーして MIB 定義部分とグラフ生成部分をカスタマイズすれば OK です。
グラフ生成部は自分が描画したいタイプのプラグインを参考にすればそれほど難しくないと思います。
rrdtools の描画方法は取っ付きにくいかも知れませんがそこは気合で...
プラグイン作成後は忘れずにシンボリックリンクを張りましょう。
$ ln -s /opt/munin/lib/plugins/snmp__yourplugin
/etc/opt/munin/plugins/snmp_<snmphost>_yourplugin
SNMP の場合, 同じグループに属していて参照するプラグインが同じ(シンボリックリンク名は違いますが)でも, グラフがグループ化されないのが難点。
今後, 改善されるといいのですが。
Munin の SNMP経由での監視は若干手間ですが, やっぱり Munin はシンプルで使いやすいです。
リソース監視は負荷分析には必須なので, これからの方は Munin ですな( ´∀`)










Comments